Hallo Leute,
ich möchte an meinen µC einen Befehl senden (na so wein Zufall
Der Befehl soll im Prinzip so aussehen:
<befehl>
Das ganze müsste dann so interpretiert werden:
wenn '<' empfangen, dann
Command[i]=empfangenes_zeichen
i++
wenn '>' empfangen, dann keine weiteren Zeichen mehr aufnehmen.
Das habe ich bisher so versucht zu realisieren:
Schön und gut, wenn ich nun mit uart_puts(RS232.Cmd) versuche den Befehl zurückzusenden bekomme ich im Terminal nur ein "<". Wieso?Code:uint8_t c = uart_getc(); if (c=='<') RS232.Cmd_Start=1; //RS232.Cmd_Start ist ein Bitfeld if (RS232.Cmd_Start==1) { RS232.Cmd[RS232.i]=c; //RS232.Cmd ist ein Char[20] RS232.i++; //ein uint8_t } if (c=='>') { //wenn fertig, '\0' anhängen und Index Resetten RS232.Cmd_Start=0; RS232.Cmd[RS232.i]='\0'; RS232.Cmd_Complete=1; } ... woanders ... if (RS232.Cmd_Complete==1) { lcd_gotoxy(0,1); lcd_puts(RS232.Cmd); uart_puts(RS232.Cmd); RS232.Cmd_Complete=0; }
Wenn ich folgendes sende:
erhalte ich im Terminal "abc", egal ob ich (const char*) RS232.Cmd nehme oder nicht. Ich versteh' nicht, wo mein Denkfehler liegt.Code:RS232.Cmd[0]='a'; RS232.Cmd[1]='b'; RS232.Cmd[2]='c'; RS232.Cmd[3]='\0'; uart_puts(RS232.Cmd);
Vieln Dank,
Simon
Hinweis: Es macht auch keinen Unterschied, wenn ich in der Auswertung (unsigned int)c=='>' anstelle von c=='>' verwende, obwohl's eigentlich korrekter wäre.
P.S.: ATMega32, XTAL=8MHz
Lesezeichen