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:
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;
		}
Schön und gut, wenn ich nun mit uart_puts(RS232.Cmd) versuche den Befehl zurückzusenden bekomme ich im Terminal nur ein "<". Wieso?
Wenn ich folgendes sende:

Code:
 RS232.Cmd[0]='a';
 RS232.Cmd[1]='b';
 RS232.Cmd[2]='c';
 RS232.Cmd[3]='\0';

 uart_puts(RS232.Cmd);
erhalte ich im Terminal "abc", egal ob ich (const char*) RS232.Cmd nehme oder nicht. Ich versteh' nicht, wo mein Denkfehler liegt.
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