Niestety, ale jeśli chcesz tablicę wskaźników, przy czym wskaźniki wskazują na konkretne bloki pamięci, musisz je inicjalizować. Jeśli obie tablice są globalne, to bez problemu powinno dać się to zrealizować jakoś tak: [syntax=C]static char buff0[5][20]; char *menu_main[5] = { buff0[0], buff0[1], buff0[2], buff0[3], buff0[4] };[/syntax] lub równoważnie:...
Ostrzeżenia głoszą o niejawnej deklaracji funkcji sprintf, a jej deklaracja znajduje się w stdio.h
Witam. Dziękuje za zainteresowanie. sprintf() zwraca do łańcucha tak? czyli coś takiego? : char tablica[10]; sprintf(tablica, %d, zmienna); WriteText("tablica"); Eh chyba coś knoce;) Przy takiej opcji wyświetli mi poprostu napis...tablica.
Widzę, że wcześniej odpowiedziałem na Twoje późniejsze pytanie ;) Chcę przez sprintf wyświetlić tablicę przez podanie jej początku.
Proponuje skorzystać z funkcji sprintf np: sprintf(tablica, "%10.5f", liczba_float); W ten sposób w tablicy mamy już kolejne wartości od których należy odjąć kod ASCII cyfry 0 by otrzymać wartość liczbową i wpisywać za te wartość 0 jeśli jest tam spacja.
Witam ! temp = ((~scratchpad[1])*16... + (((~scratchpad[0]... temp_calosci = temp; poprzecinku = (temp - temp_calosci)*10; // dzięki temu można pozbyć się minusa gdy jest-0.0625 st.C bo i tak wyświetla // do częsci dziesiętnych więc byłoby -0.0 st C <-- troche bez sensu if((temp_calosci+poprzecinku)...
mamcpy() m e mcpy() albo sprintf() Albert
witam, mam problem z konwersją float'a na tablice charów. char tablica[4]; sprintf(tablica, "%G", temp_in); USART_Transmit(tablica[0]... USART_Transmit(tablica[1]... USART_Transmit(tablica[2]... USART_Transmit(tablica[3]... w terminalu pokazuje się tylko znak zapytania...
1. %02 http://mikrokontrolery.blogspot.com/2011... 2. [syntax=c]if(txt[x]==0) break;[/syntax] przerywa pętlę wysyłającą dane, gdy osiągnie koniec ciągu znaków, który to jest bajtem o wartości zero umieszczonym w tablicy txt[] przez funkcję sprintf.
Nie, to nie będzie działać, a jeśli nawet to przez przypadek. Problemem tutaj jest to, że tut jest 20-elementową tablicą wskaźników na typ char. volatile char tut[21]; void ekraned(void){ uint8_t w=0; LCD_Clear(); for(w=0;w<4;w++){ sprintf(tut, "%s%02d%s%02d",menu[(w...
Tak, ręcznie miałem na myśli po kolei wrzucać znaki do tablicy :) tylko dla testu oczywiście. Używaj sprintf czy analogiczny swój wyrób. W tej lini Text_1234[0] = "1234Test\0"; kompilator mógł wrzucać np część adresu do tego stringu.
Chociażby tak: [syntax=c] DIR dir; FILEINFO fno; pf_opendir(&dir, 0); [/syntax] 0 oznacza katalog root(główny), możesz wpisać zamiast 0 w "ścieżka do pliku" lub wstawić tablicę z zapisana nazwą [syntax=c] pf_readdir(&dir, &fno); [/syntax] odczytuje ci pierwszy plik w otwartym katalogu Możesz też np tak: [syntax=c] for(uint8_t numer_pliku=0;...
Masz błąd w programie testowym. Tablice są zbyt małe - tablica test_a ma 7 elementów, a tyle ma sam napis "test_a: ", w efekcie efekt konwersji sprintf, nadpisuje pamięć dla test_b i stąd masz taki efekt.
Witam i proszę o wyjaśnienie, dlaczego jeśli zmienna x w funkcji main jest typu long int to po zakończeniu pętli while ma ona wartość mniejszą (66) niż jeśli jest typu int (86). Dzięki. [syntax=c] volatile uint8_t timer1; ISR (TIMER0_COMPA_vect){ uint8_t x = timer1; if (x) timer1 = --x; } int main (void) { TCCR0A |= (1<<WGM01);//tryb CTC TCCR0B...
wiec uzyj STRNCPY() on kopiuje konkretna podana ilosc znakow z jednej tablicy w druga i niesprawdza czy znak ktory kopiuje to zero.... I nie kombinuj z kopiowaniem, lepiej uzywaj do takich operacji funkcji sprintf()....
Zapewne wrzucasz zbyt długi string do tablicy i ostatnie zero włazi na zmienną. Zauważ że nawet jeżeli twój wyświetlacz ma tylko 16 znaków i chcesz wpisać dokładnie 16 za pomocą sprintf to zawsze będzie dodatkowo na końcu zero (siedemnasty znak) bo tak działają funkcje stringowe w C. Powiększ tablicę i będzie dobrze.
to skoro padła odpowiedz jak poradzić sobie z problemem to powiem co poszło nie tak. w językach kompilowanych, na przykład C oprócz zwykłej tablicy istnieje także statyczna czysta tablica. [syntax=c]const char tablica[liczba][/syntax] gdzie liczba to naprzykład [syntax=c]#define liczba 100[/syntax] podczas przejścia preprocesora jak kompilator widzi...
void lcd_str(char* str); <- jak sam widzisz funkcja ta przyjmuję jako parametr tablicę znaków Aby na lcd wyświetlić liczbę przetrzymywaną w zmiennej liczbowej (pomiar1) potrzebujesz skorzystać z funkcji która przepisze kolejne cyfry do tablicy znaków. Możesz wykorzystać tutaj np funkcję sprintf coś w tym stylu: [syntax=c]unsigned int pomiar1; char...
Czyli nie dość, że na stosie masz 1 kB tablicę, to jeszcze używasz funkcji która jest znana z tego, że używa naprawdę DUŻO stosu. Zacznij od zmniejszenia tej tablicy albo przeniesienia jej do zmiennych globalnych, a następnie - jeśli nie pomoże - znajdź jak w Keilu zwiększyć rozmiar stosu.
Wygląda w miarę ok, tzn. ma szansę działać. Co się wyświetla, a co się powinno wyświetlać? I gdzie się to wyświetla? sprintf tylko wpisuje do tablicy. Powinieneś zadeklarować tab tak, żeby nie trzeba było jej rzutować na char *. Zaleca się też używać snprintf(buf, sizeof(buf), ...) żeby nie wyjechać poza bufor.
Podejrzewam, że skoro mówisz o konwersji, to znak to zwykły char, nie tablica, a sprintf o ile mnie pamięć nie myli, dorzuca \0 i w tym momencie robi Ci się fail. Proponuję zapoznać się z atoi itoa itp. tworami. Żeby nie było wątpliwości, itoa() również wymaga tablicy i również dorzuca '\0' 4\/3!!
Wygrzebany fragment odczytu pozycji dotyku panela : Umieściłem kod w znacznikach syntax, w przyszłości proszę to samemu robić :)
Problem w tym, że właśnie na gets() może Ci się wywalić przy nauczycielu. Podajesz do gets() bufor o długości 5 znaków, a on weźmie i wpisze 180 znaków - i co? I pewnie się wywali. :P Twoje szczęście, że akurat kolejność operacji wygląda tak, że nawet jak gets() "trochę" nadpisze zmienne (tablica b, l, wskaźniki FILE*), to sprintf() czy fopen() to zaraz...
Bo może wektor przerwań dla tego akurat kanału DMA się nazywa inaczej? Porównaj nazwę Twojej funkcji z zawartością tablicy wektorów. Jeśli masz w projekcie pliki C++, to trzeba przerwania deklarować jako extern "C". 4\/3!!
Ja bym to zrobił tak: jest jakaś tam odmiana printf, chyba sprintf, która zwraca wynik do tablicy. W printf możesz sobie ustalić precyzje.
Weź wszystkie podstawowe pliki (startup, skrypt linkera, tablicę wektorów, Makefile) z jednego źródła, bo jak je mieszasz to nigdy nie wiadomo co nie zadziała. 4\/3!!
Po co używać sprintf do konwersji liczby całkowitej na stringa? To jest nieefektywne. W m8 sprintfa to możesz użyć, jak chcesz bezstresowo "mieszać" tekst z wartościami zmiennych i umieszczać to w tablicy, np x toa. Dlaczego z funkcją utoa też nie działało? Bo utoa jako argument przyjmuje unsigned int czyli na avr 16 bitów a więc max 65535. Ty potrzebujesz...
To powinno dać napis katy [syntax=c]LCD_WriteText("katy"); [/syntax] a to wyświetlić to co umieściła w tablicy funkcja sprintf (po zastosowaniu się do rad z linka, którego dał TMF) [syntax=c]LCD_WriteText(katy); [/syntax]
Nie wiem czy dobrze Cię rozumiem, ale czy nie chodzi Ci przypadkiem o funkcje typu lltoa(), sscanf(), czy też strol()? W ten sposób ze stringa zrobisz wartość, a później żeby przerobić to na stringa z wartością dziesiętną sprintf().
Witam Mam zbudowany układ na atmega 32 i do niego podpięte 4 czujniki DS18B20. Po włączeniu przez kilka godzin wszystkie pokazują właściwą temperaturę. Po tym czasie trzeci czujnik co jakiś czas pokazuje trzecie miejsce po przecinku, a czwarty czujnik również co jakiś czas pokazuje niewłaściwą temperaturę - w okolicach 130 stopni ( rzeczywista temperatura...
Sluzy do tego funkcja printf - konwertuje i wysyla - lub funkcja sprintf. Poczytaj w helpie. BF
No to jeśli user wprowadzi wartość to aplikacja powinna wrócić do wyświetlenia tych trzech opcji co są na początku. A co do mojego kodu to oczywiste jest że trzeba podać rozmiar tablicy, ja nie wiem jakiej wielkości potrzebujesz więc zostawiłem puste. A co do funkcji jak ona działa to: http://www.cplusplus.com/reference/cstdi...
Ale ty nie wysyłasz tam stringa, tylko gołe dane binarne, skanowanie nie działa, bo spodziewa się tablicy znaków w formie np. "3.1415". Wypisz sobie w LabView otrzymane dane, to będziesz miał obraz sytuacji. Albo przekonwertuj w mikrokontrolerze na string za pomocą sprintf(), albo po stronie LabView złóż te wysłane cztery bajty do zmiennej float. Prawdopodobnie...
Mam jakiegos starego Ride51 (Raisonance), wyglada na to ze ma wszsytkie bibliteki. Musisz skorzystac z funkcji znajdujacej sie w stdio.h np. sprintf(text,"%f",3.14), gdzie text to jakas tablica np. unsigned char text[4] i wszsytko masz liczbe jako ciag znakow.
Po pierwsze, [syntax=cpp]pop(buf);[/syntax] Przekazujesz wartość wskaźnika buf do funkcji. W funkcji modyfikujesz wartość wskaźnika zamiast przepisać tekst do tablicy (co zrobisz funkcją sprintf() ). Po wyjściu z funkcji, wartość wskaźnika się nie zmieni bo zmieniona została tylko w zakresie funkcji. Po drugie, w pop() nie zwalniasz zaalokowanej na...
Wartości w już zadeklarowanej tablicy możesz zmienić w każdej chwili przez tablica[indeks]=cośtam. Przy czym taka inicjalizacja jest niewygodna, stąd stosuje się np. strcpy(tablica, "tekst"). Ale... i tak na tym nic nie zyskasz, bo gdzieś te napisy muszą być. Jeśli to są stałe (w sensie samego słowa w trakcie działania programu nie zmieniasz to umieść...
no tak w uproszczeniu... char jest to typ danych (tzw. znak), jest to 1 bajt - czyli moze przymowac 256 roznych wartosci i wlasnie tak sa zakodowane znaki w ascii... int jest to typ, ktorego rozmiar to 2 bajty (zapisuje sie nim liczby naturalne)... to co produkujesz przy pomocy char welcome char welcome[64]; sprintf(welcome,"Witamy...
1. Zmienna j powinna być raczej typu int , jeżeli ma czytać liczby z pliku wxf.txt . 2. W wywołaniu fscanf() powinien być inny specyfikator typu oraz znak końca wiersza, jeżeli każda liczba w pliku jest w nowym wierszu. 3. Przed wywołaniem outtextxy() trzeba wartość zmiennej j przekonwertować na ciąg znaków (używając pomocniczej tablicy). Zmodyfikowany...
A funkcje sprintf mają jakieś znaczenie jeśli nic nie wypisuje na ekran, a dane chce tylko mieć w tablicy która podaję w vTaskGetRunTimeStats() ? Mógłbym wykomentować sprintf'y ? Zrobiłem tak, ale nie wiem czy teraz mi nie działa funkcja, czy mam źle skonfigurowany counter potrzebny przy tym feature. Wpisuje mi coś do tej tablicy, ale nie wydaje się...
Witam! Użyj funkcji sprintf która ma tę właściwość, że dane przekształca do postaci tekstowej i umieszcza je, zamiast w pliku czy na ekranie, w pamięci. Format: sprintf(adr, "wzorzec", dana1, dana2, ... dana n); W Twoim przypadku: sprintf(adr, %s %d %s", t, port, t1) Oczywiście musisz zapewnić odpowiedni rozmiar pamięci pod adresem adr. Dalej, jeśli...
Witam Próbuję teraz zaimplementować funkcję sprintf(..). Dołączyłem pliki nagłówkowe bibliotek stdio.h , errno.h oraz implementację funkcji : caddr_t _sbrk (int size) podaną przez Pana na forum. Program kompiluje się lecz niestety przy wywołaniu sprintf(..) jest wywoływane przerwanie z tablicy vectors.c: static void __Default_Handler(void) {...
Program jest we flash-u a tablica, którą tworzysz jak i wszelkie inne zmienne są w ram-ie gdzie i stos też ma się zmieścić.
Problem w tym, że używasz zmiennej char, która może przechowywać tylko jeden bajt, a nie typu łańcuchowego char[]. Zadeklaruj tablicę char dzien[13] i będzie lepiej. Tyle, że uzupełniać ją musisz za pomocą strcpy, a nie przez przypisanie. Czyli strcpy(dzien,"Poniedzialek"); Możesz stworzyć też odpowiednią tablicę z dniami tygodnia i so sprintf przekazywać...
Ten kod który podałeś ma być użyty w programie głównym int main(void)? czy też w innym.(np ds1307.c) Czy tablica char o nazwie time ma zdeklarowane 6 elementów i co to jest za funkcja updtime.
a chciał bym żeby to sie przesunęło w tablicy jak liczba mniejsza Musiałbyś "ręcznie" określać początkowy element znaku w tej tablicy (np. b + 1) w zależności od ilości cyfr liczby. Przed całą operacją tablica musiałaby być wypełniona spacjami. Funkcja utoa() nie jest standardową funkcją C, ale zakładam, że działa, jak itoa() ;) Można też użyć funkcji...
Rozwiązałem problem, okazało się że wina tkwiła w pojemności tablicy znakowej, do której konwertowałem funkcją sprintf() liczbę przed wyświetleniem na wyświetlaczu. disp na disp i ruszyło... Czy ktoś potrafi mi wytłumaczyć, czemu przy deklaracji tej funkcji w pliku main, ten problem nie występował dla wielkości tablicy disp ?
Przedewszystkim zrób to inaczej... po prostu... main() { char bufor[20]; ... funkcja(bufor, ...); } funkcja(char* bufor, ...) { } I w ogóle nie ma problemu. Zmienna tmp w ogóle jest nieporozumieniem. Przecież wewnątrz funkcji możesz sobie zadeklarowac tablicę o dowolnym wymiarze... funkcja(...) { char tablica[1000]; } A pamięć możesz zwalniać gdzie...
Poprawiłem wszystkie powyżej wymienione błędy i wychodzi na to że działa w miarę ok [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <avr/pgmspace.h> #include <stdio.h> #include "lcd.h" #include "lcd.c" #define LED_PIN (1<<PB0) #define LED_ON PORTB |= LED_PIN unsigned int pomiar_x;...
Mam mały problem z C, piszę program do skalowania wartości liczbowej. Otrzymuję wynik jako liczbę 512 +/- 60. Chciałbym aby dla liczby 512 wyświetlane było 0, dla 522 -> 10, dla 502 -> -10 itd. Zrobiłem sobie pętelkę na "if" lecz coś nie działa bo cały czas mam "0". [syntax=c]unsigned int pomiar_x; signed int wynik_x; signed char tablica_x[4]; void...
Witam Próbuję odebrać na komputerze (w programie bray terminal) dane, tzn. konkretnie temperaturę z termometru LM35. Niestety mam problem z odbiorem danych w przerwaniu od UART-u. Poniżej przedstawiam kod programu: [syntax=c] /* Wysyłanie do komputera wartości temperatury interfejsem USART mikrokontrolera */ /* LM35 -> PA0 */ /* ATMega16, f=16MHz...
Uzyj funkcji sprintf (buffer, "%2.2f", wynik); nastepnie wyswietl 'wynik' wysylajac tablice 'buffer' do swojej funkcji obslugujacej LCD. 'buffer' jest tablica znakow o wielkosci - w tym wypadku:5 (2 liczby przed przecinkiem + 1 przecinek + 2 liczby za nim). Zadeklaruj wiec: char buffer[5]. Nie zapomnij dolaczyc naglowka stdio.h BF
Napisałem sobie programik do obsługi akcelerometru w C. Wszystko działa fajnie, ale chciałem jeszcze wynik przeskalować mnożąc go przez 1.5 i wtedy się pojawiają problemy. Chodzi o to że normalnie zakres napięć to -60:+60, ale ja chciałem to przemnożyć żeby zakres był -90:+90 (chodzi o stopnie), ale gdy zmienię linijkę: wynik_x = pomiar_x - 512; na:...
scanf() nie działa - dlatego ponieważ funkcja ta nie wczytuje białych znaków, w tym znaku nowej linii (dla %d) i zostaje on w buforze. Żeby to ominąć trzeba napisać małą funkcję, która czyści bufor przed następnym scanf-em. Np. coś takiego: void flush( void ) { int c = 0; while( c != '\n' && c != EOF ) c = getchar();...
Dane pokazywane oczom użytkownika mogą być zupełnie inne niż te przechowywane w programie. Wpisywanie wartości liczby po cyferce jest uciążliwe. W piekarniku mam ustawianą godzinę jednym przyciskiem (czy dwoma), wystarczy w programie zauważyć że przycisk został wciśnięty, przytrzymany przez 1s, przytrzymany przez 5s,itd. Jak nie używasz delay nie jest...
Witam bawię się przetwornikiem ADC i mam problem. Ale żeby nie przechowywać w tablicy zbyt dużo danych to zastosowałem wzór: (wzór otrzymany po przekształceniu standardowego wzoru na średnią, sprawdzony) średnia(k) = (N-1)/N * średnia(k-1) + 1/N * pomiar i tu jest problem, bo jak uruchomię program: [syntax=c]#include <avr/io.h> #include <util/delay.h>...
Nie ma nic w outpucie nt. bibliotek. Są tylko warningi "deprecated convesion from string constant to 'char*' [-Wwrite-strings]" w miejsach gdzie wyświetlam: [syntax=cpp]LCD_WriteText("napis do wyświetlenia");[/syntax] A to są wszystkie inkludy: [syntax=cpp] #include <inttypes.h> #include <avr/io.h> #include <avr/interrupt.h> #include...
A przypisałeś wcześniej coś do tych zmiennych? (pytanie retoryczne... ;)) Jeśli nie, przed swoją funkcją wstaw: [syntax=php]$username = isset($_POST['username']) ? $_POST['username'] : '';[/syntax] lub, jeśli wolisz na if'ach: [syntax=php]if (isset($_POST['username'])) $username =$_POST['username']; else $username ='';[/syntax] Dla tej drugiej zmiennej...
Witam! Chciałbym się dowiedzieć jak poprawnie używać liczby zmienno przecinkowe. Korzystam z win-avr i niestety nie mogę sobie poradzić. Dodałem biblioteki printf_flt oraz m (math) i odpowiednie opcje dla linkera (zywcem wziete ze strony avr-gcc) ale niestety jakiekolwiek uzywanie floatów daje mi 0 (sprintf'uje do tablicy znakow i usartem przesylam...
Abstrahuję tu juz od sprintf i funkcji piszących na ekranie, których w tym miejscu **absolutnie** nie powinno być. Ogólnie masz racje, tutaj sprintf jest już po pomiarze (drugie przerwanie i tutaj jest zmierzony okres przebiegu). gu32_T1 < początek pomiaru gu32_T2 < koniec pomiaru Jednak wytyczne się zmieniły i można do moich celów zrobić inaczej....
What?! Śmiesz twierdzić, że char tablica niezgodne z standardem....
Zamiana napisu na liczbę: sprintf : [url=http://pl.wikibooks.org/wiki/C/prin...
Uuuaaa. Nieźle zakręcone. Przede wszystkim nie musimy pisać wszystkiego od nowa. Do takich celów stworzono funkcję sprintf http://man.he.net/man3/sprintf Ale jak już się uprzeć to ja proponuję coś zupełnie prostszego: char* uzupelnij_zera(char* str,uint8_t count) { char bufor[10]; int len = strlen(str); if(len < count)...
W funkcji obsługującej przerwanie, korzystasz z funkcji sprintf do konwersji zmiennej sstatus na tablicę typu char o etykiecie buffer . Zmienna ta jest modyfikowana w przerwaniu, a nie zadeklarowałeś jej z kwalifikatorem volatile . Sprawdzałeś ten trop?
(at)tmf: Moim zdaniem potrzebuje dwóch wskaźników. Jeden na wyświetlaną linię, a drugi na linię do modyfikacji. W sumie, to potrzeba jeszcze dwóch z informacją o pierwszym i ostatnim adresie, aby zawijać te wskaźniki. Mnie wyszło coś takiego: [syntax=c]#include <stdio.h> #include <stdlib.h> #include <string.h> #define LINE_SIZE 20...
Można też tak, ale jest z buforem jest kilka problemów. Na końcu masz tablicę {5, 6 , 7} i jeżeli potrzebujesz zamienić to na wartość 567 to jest to trochę kłopotliwe (potęgowanie 10, liczenie elementów, ew atoi albo sprintf). Prościej zrobić to tak: (at)ex-or Jak widzisz wersja bez zgadywania liczby cyfr przed wprowadzeniem nie jest wygodna dla użytkownika....
Ostatnio przeczytałem, że funkcja itoa jest szybsza niż sprintf , jednak ma o wiele mniejsze możliwości, dlatego postanowiłem zrobić test szybkości na mojej atmedze8. Oto fragment kodu #include <stdio.h> #include <stdlib.h> uchar _STwynik[8]; void czas_start(char p) { TCNT1 = 0; TCCR1B = p; } uint czas_stop()...
Witam. Mam problem z zapisaniem odebranych danych. Odbieram dane int i char. Dodano po 1 453 to zmienna int, zapisany w tablicy int na pozycji Dodano po 3 Dobrze kombinuje ? Chce np. dodać char do tablicy na pozycji 10. [syntax=arduino] [code]char daneRx[8]; char tablica[105]; ... tablica[10]=Character.toString(daneRx);[... Czy powinienem dodać...
Próbowałem uzyskać więcej szczegółów na temat funkcji OpenBecken "SendGet", ale nie mogę znaleźć żadnych odniesień do niej. Wiem na przykład, że możliwe jest przekazanie deklaracji włączenia przełącznika na innym urządzeniu tasmota / Open Becken za pomocą polecenia takiego jak: http://192.168.5.23/cm?cmnd=Power%20... 0" . A skoro już tu jesteśmy,...
Witam Niestety mam 2 problemy: 1. Rezonator 4Mhz, AtMega32. Chodzi o obsługe przerwania Timera1. Chcialbym aby przerwanie bylo generowane co 1s. Niestety dla ustawień: TCCR1A=0x00; TCCR1B=0x04; // Prescaler 256 TCNT1H=0xC2; // Wartosc poczatkowa TCNT1L=0xF6; nie działa poprawnie, odlicza zbyt szybko. 2. CodeVision . Chciałbym wyświetlić tekst + liczbę...
Pisząc dalszą część programu mam następujacy problem z funkcją sprintf() : tak działa : http://obrazki.elektroda.net/90_11866678... a tak już nie : http://obrazki.elektroda.net/21_11866678... dodatkowo użycie funkcji sprintf powoduje kilkakrotny wzrost objętości programu (jakieś 10X). Potrzebuje uzyć funkcji sprintf aby nie wyswietlać wszystkich...
oto co napisał autor kursu skąd zaczerpnięte są te kody źródłowe: "Celem tego przykładu jest pokazanie sposobu użycia funkcji sprintf. W skrócie program działa w następujący sposób: Najpierw następuje odczyt wartości temperatury z czujnika DS18B20. Aktualna wartość temperatury przechowywana jest w zmiennej rzeczywistej (typ double) o nazwie 'temp'....
Dzięki za odpowiedź, Jeżeli nie o wycieki pamięci chodzi to o nadpisanie niedozwolonych obszarów (np poza zadeklarowaną wielkość tablicy, sprawdziłem celowo do char tab 2. funkcja strtok2() może zwrócić null, więc instrukcja if(ptr Wygeneruje wtedy wyjątek - na pewno? Cel był taki, że jeżeli jest coś pod adresem ptr to ma kopiować a inaczej nic nie...
Witam Mam problem z wyświetleniem kąta pomiędzy wartościami zmierzonymi przez 2 osie akcelerometru. Poniżej fragment kodu kat=atan2(osy,osz); sprintf(bufor,"%f",kat); LcdStr( FONT_1X, bufor ); Kąt to zmienna double, bufor to tablica 10 znakowa char, osy i osz to zmienne uint8_t. Zamiast wartości, wyświetla mi się znak zapytania. Czy wie ktoś co tutaj...
To jest błąd: [syntax=c] for(int q=0;q<3;++q){ odebrane[q]=UDR; } [/syntax] To trzykrotnie odczyta UDR, nawet jeśli w nim nic nie ma. W kolejnych przerwaniach masz odczytywać UDR i wpisywać pod q, jak q wskaże, że odczytałeś 3 bajty to ustawiasz flagę sygnalizującą, że w buforze są 3 bajty. Poza tym sprintf z %s zakłada, że masz string w formacie...
Nie wiem dlaczego ale przy itoa i buforze na 33 znaki: str should be an array long enough to contain any possible value: (sizeof(int)*8+1) for radix=2, i.e. 17 bytes in 16-bits platforms and 33 in 32-bits platforms. [syntax=c] itoa(temp_pompka_wl, bufor, 10);[/syntax] po przekroczeniu "9" wyświetla mi tylko krzaki. Użyłem zamiast...
Tak próbowałem wyświetlić zmienna licznik jest ciagle 0. Nie mam rezystora zewnętrznego. Tak poprawiłem kod ale nadal jest to samo czyli 0. [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <hd44780.h> volatile unsigned char licznik = 0; //liczba przepełnień Timera1 volatile uint16_t reszta...
Rozumiem, że piszesz w C. Jeżeli tak, to wszystko zależy jak mocny obliczeniowo mikrokontroler masz do dyspozycji. Najłatwiej jest skorzystać z funkcji sprintf z odpowiednimi parametrami. Innym rozwiązaniem jest budowa funkcji zamieniającej zmienną typu int na tablicę char w oparciu o funkcję itoa lub też stworzenie swojej funkcji opartej o rozbicie...
Dzisiaj wszystko jeszcze raz uruchomiłem i o dziwo zaczęły przychodzić dane z kamery, a program się nie zawiesza. Dodałem w programie takie polecenia: [syntax=c]for (i = 0; i< 19200; i++) { bufor_RAM_danych_obrazka[i] = 0; } Delay(100); uruchom_kamere(); Delay(100); wykonaj_foto(); Delay(1000); for (i = 0; i< 19200; i++) { sprintf(textToWrite,"%d,...
Teraz problem ze sprintf :D Na tej stronie pisze że pierwszy argument ma być wskaźnikiem: http://www.cplusplus.com/reference/clibr... Ale zaraz po tym, w „EXAMPLE”, jest przykład gdzie nie jest przekazywany wskaźnik lecz tablica (kompilator i tak przekazuje wskaźnik ale w kodzie podawana jest tablica). No więc nie wiem jak...
Stringi w Arduino można dodawać i konwertować, np. String0=String1+String2+String(liczba)+S... i potem Serial.println(String0);. Bezpieczniej jednak korzystać ze statycznej tablicy char jako bufor do wszystkiego i w niej lokować po kolei poszczególne znaki np. funkcją sprintf [url=http://mikrokontrolery.blogspot.com...
Michalko12 podał Ci gotowe rozwiązanie, sprintifem zamieniasz wartość konwersji na tekst a potem tablice do której zapisywał sprintif przekazujesz do f_write i tyle. To co podałeś nie dziala bo tablica c ma dwa elementy a Ty operujesz na trzech. 1. dziękuję za zainteresowanie :) 2. niestety nie w tym leży problem, tu jest oczywiście błąd powinno być...
ale przecież w definicji tej punkcji nie ma informacji, że ma być to wskaźnik. Za to w tej pierwszej (f_read) już jest. Kompilator się nie czepia, bo akurat tam jest to poprawnie (składniowo), choć wcale nie tak jakbyś tego oczekiwał. znasz rozwiązanie mojej zagadki Owszem. Podać od razu? <: Rozumiem, że chodzi o to, że char to jeden znak a char...
Nie do końca rozumiem! Pobrane z Ds'a dane są zapisane w tablicy: unsigned char ds18b20_pad[9] Trochę niżej składam to i dzielę na 16 czego wynikiem jest zmienna temp zadeklarowana oryginalnie jako double: [syntax=c]temp = ((ds18b20_pad[1] << 8) + ds18b20_pad[0]) / 16.0 ;[/syntax] Zmienna temp była typu "double" i program działał, natomiast zmieniłem...
Hmm czyli nie moge wyswietlic tablicy f-cja puts. ?? Bo nie bardzo wiem o co chodzi. Oczywiście że możesz, ale do funkcji puts przekazuje się argument typu char* (czyli w uproszczeniu ciąg znaków), ty natomiast przekazujesz do puts argument tylu void (zwraca go funkcja tablica). Żeby wyświetlić ciąg znaków za pomocą puts musisz zmienić funkcję tablica...
Witam wszystkich! Mam pytanie do wszystkich którzy mieli do czynienia z kompilatorem Ceibo. Czy ktoś z Was wyświetlał liczbę zmiennoprzecinkową na LCD za pomocą: sprintf (buffer, %f, x); write_text (buffer); U mnie wyświetla "<NO FLOAT>":!::?: Nie wiem co się dzieje. Pierwszy raz widzę coś takiego. Wyświetla wszystkie typy zmiennych tylko nie...
Ale w jaki sposób dopisać do mojego pliku.h te drugie wyjście? Dodano po 48 W głównym programie main.c jest odczyt z czujnika ds18b20 podpiętego do pinu PA0 a na chwilę obecną temperatura zew i wew jest czytana z tego samego czujnika bo nie potrafię zdefiniować drugiego czujnika na pinie PA2.Czy mam stworzyć nowy olik z rozszerzeniem .h? np:ds18b20x.h?...
Z przetwonika ADC otrzymuję wartość 16 bitową (ADC1->DR), którą chce następnie wyświetlić na wyświetlaczu. Funkcja wypisująca stringi na LCD pobiera wskaźnik do tablicy, ciagu znaków void Text (uint8_t *str) Wywołanie: Text ("dowolny tekst"); Potrzebuje w jakiś sposób przekonwertować typ 16-sto bitowy do tablicy znaków które...
W ten sposób definiujesz wskaźnik na literał łańcuchowy, który w C ma typ char W którym miejscu napisałem, że taka modyfikacja literału poprawna? Łańcuch tekstowy (ciąg znaków) to nie musi być to samo co literał (niemodyfikowalny ciąg znaków - stała łańcuchowa). kompilator ma pełne prawo połączyć (aczkolwiek nie musi) takie same literały. Akurat o...
if(tryb==2){ TC_GetTC1(TC1); buffer=TC1 Czy ten sprintf jest tu celowo, czy to jakaś pozostałość po uruchamianiu? Konwersja typów danych od odczytu w RD_AD() poprzez Read_TC1(),TC_GetTC1(),buffer do tablicy TC1 buffer<<=18; //bit reservet ; to zwyczajne mnożenie przez 2^18. Jak to się ma do późniejszej konwersji uint32_t do float ? W innych funkcjach...
jak nauczyciel uczy "programowania w języku visual" to lepiej zmienić szkołę. Dla mnie normalne otwarcie pliku w języku C to "fopen()" i przysięgami Ci, działa w MSVC. MS narzuca swoje "zabezpiecznia" do biblioteki C, część z nich wżeniono w standard, tyle że te "zabezpieczenia" to w cudzysłowie. C nigdy nie będzie bezpiecznym językiem, z pozornymi...
Pytam więc czy jest alternatywa? Sprintf odpada. LCD działa dobrze, wyswietla teksty. Odczyt temperatury też jest poprawny. W innej wersji programu szczytuje kolejno bit po bicie do tablicy[12] i wyswietlam wynik w postaci binarnej...po przeliczeniu temperatura się zgadza. Błędy są dopiero wtedy kiedy zamieniam wynik jak w kodzie powyżej i próbuję go...
Witam, chce zrobić listę plików, używałem funkcji sprintf już wcześniej i nie miałem takich problemow. Do rzeczy , jest prosty kod: http://obrazki.elektroda.pl/9571161100_1... Czyściłem już bufor cały, linia po linii po działaniu sprintf, snprintf też używałem ponoć bezpieczniejsze ustaliłem rozmiar na 15 znaków i nic to nie zmieniło.
[syntax=cpp] lat = latFromString(param[2], param[3]); [/syntax] param to tablica zawietajace "string-i" po zrobieniu splitu z GPGGA wedlug przecinkow. Czyli s1 to cala pozycja, a s2 to literka (W,S itp. czyli kierunki swiata). jak dales przykladowy zapis: 5145.0715,N,01926.8297,E to s1 = "5145.0715" s2 = "N" itd. tu jest jeszcze w druga strone to jest...
Użyj sprintf z odpowiednim ciągiem formatującym. Hmm... Tylko jaki ten ciąg? Dodano po 48 Rozwiązane. zrzucam liczbę funkcją itoa() do tablicy a później tę tablicę znak po znaku wysyłam na LCD w stosownej kolejności, wstawiając kropkę.
Pokaż funkcję LCD_WriteText(), bo sądzić można, że jako parametr zawiera wskaźnik na tekst i nie służy do wyświetlania liczby 8-bit. Jeśli jest tak jak napisałem, to musisz najpierw przekonwertować liczbę na ciąg znaków ASCII i zapisać w buforze (tablicy) i dopiero funkcji LCD_WriteText() wskazać jej początek. Przykłady: http://mikrokontrolery.blogspot.com/2011...
Witam, mam moduł bluetooth HC-06, moduł działa poprawnie sparował się z telefonem (dioda przestała mrugać). Podłączenie jest dobre bo układ działa. Problem jest gdzieś tutaj: [syntax=c] uint8_t USART0ReceiveByte() { // Wait for byte to be received while(!(UCSR0A&(1<<RXC0))){}; // Return received data return UDR0; } // =================== u8TempData1...
Dzięki bardzo za odpowiedź. Popatrzyłem sobie w dokumenty i póki co zadziałało. Teraz pojawił mi się też inny problem. Mam funkcję do zczytywania adresu ROM czujników. Robie to następująco. Podpinam tylko 1 czujnik i funkcją : OW_Write(0x33); for(h=0;h<8;h++) { data[i]=OW_Read(); LCD2x16_pos(1, h); sprintf(tab_temp,"%d",data...
Witam, zamierzam pomiędzy dwiema Atmegami32 przesłać pomiar temperatury, przewodowo, za pomocą SPI. Linie MISO, MOSI, i SCK podłączyłem ze sobą, SS mastera jest na masie, SS Slave'a także. Temperaturę przez pewien czas przesyła prawidłowo, jednak po pewnym czasie, na wyswietlaczu Slave'a sa glupoty, jak odłączę na chwilę kabel SS Slave od masy i znowu...
Wszystko działa :) Jako bit kontrolny ustawiłem 0xAA zamiast 0x55 i śmiga aż miło. Poniżej działający kod odbiornika i nadajnika. Temat do zamknięcia. Nadajnik [syntax=c]/*Obliczenie prędkości transmisji*/ #define BAUD 2400 #define MYUBRR (((F_CPU / (BAUD * 16UL))) - 1) /*Dołączenie bibliotek*/ #include <stdio.h> #include <avr/io.h> #include...
Masz tu program, napisany w czystym C, który skleja dane ze zmiennych w jeden napis. Musisz go sobie zmodyfikować pod Arduino. Zapisz to do pliku np. test.c i skompiluj gcc -Wall -pedantic test.c Temp. wew. : 20 Temp. zew. : -15 Alarm : Wl Swiatlo : Wyl Gsm : Wl
sprintf arduino arduino sprintf float sprintf
cennik praca tuning onkyo hikvision firmware upgrade
autocom orginalnu internet mobilny
Power bank 50000 mAh - ile razy naładuje urządzenia? Volkswagen Passat B5 1.9 TDI - Elektronika Drzwi