zapis danych z UART do tablicy

0

Witam, jestem nowym oraz początkującym forumowiczem więc proszę o wyrozumiałość. Mam taki problem jak w temacie. Nad rozwiązaniem siedzę już trzy dni i nie mam większych rezultatów więc proszę o pomoc.
Chcę zapisywać ciąg danych(ASCI), które przesyłam (póki co z BrayTerminal) do uC ATmega32. Z jednym bajtem nie mam problemów. Gorzej jeżeli chcę zapisywać kolejne znaki do tablicy, aż do napotkania 0x0d. Program piszę w języku C. Póki co mam taki kod.

 char * uart_gets (char *b) {
	char a;
	while (1) {
		a = uart_getc();
		if (a) {
			uint8_t b=0;
			char buf[20];
			buf[*b]=a;
			*b++;
			if (a==0x0d)
				break;
		}else break;
	}
	return 0;
}

funkcja uart_getc(); pobiera jeden bajt z bufora UDR.

Pozdrawiam i proszę o pomoc, gdyż siedzę nad problemem od kilku dni.

0

Witam.
Linię

 uint8_t b=0;

trzeba przenieść przed

while(1) 
0

Dziękuję za odpowiedź,

rzeczywiście nie zauważyłem, że ciągłe przypisywanie wartości 0 w pętli jest bez sensu. Niestety przeniesienie, a nawet całkowite usunięcie definicji zmiennej b nie przyniosło oczekiwanego rezultatu. Funkcję tą napisałem na podstawie rozmowy z kolegą, więc może nie do końca jest to wszystko tak jak być powinno, tzn może coś pokręciłem, dziś siedzę nad wskaźnikami i je przerabiam. Może jeszcze coś pokręciłem w tej funkcji.

Jako argument do tej funkcji przekazuję 'input' który jest równy uart_getc(); czy robię to poprawnie?

Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1