Hallo,
hier erst einmal der wichtige Codeschnipsel aus deinem Programm mit ein paar eingefügten Kommentaren.
Code:
while (1) //Schleife bis ein Enter/CR/13 empfangen wird
{
c = uart_getchar(); //Zeichen abholen
if (c != -1) //Ist ein Zeichen da?
{
if (c == 13) //Is das Zeichen Enter/CR/13
{
/* Ende der Zeile erreicht,
also String abschließen */
str[index] = 0;
/* Funktion beenden */
return; // hier wird die Schleife verlassen
}
else /* Normales Zeichen, anhängen an die Zeichenkette */
{
str[index] = c;
index++;
}
}
}
Jetzt zu Enter/CR/13. Wenn du die Entertaste drückst, ist das auch nur ein Zeichen, wie zum Beispiel das A. Jedes Zeichen hat einen ASCII-Code. Der ist bei dem A 65, für Enter 13. Jetzt ist es ja möglich das A als A darzustellen. Das geht bei Enter nicht, darum hat man sich darauf geeinigt, dass Enter als CR dargestellt wird. CR kommt noch von den alten Druckern und bedeutet carrige return, Wagenrücklauf.
Wenn du bisher in deinem Terminal nach der Zeichenkette Enter gedrückt hast, hat das T-Programm die Zeichenkette abgeschickt. Aber das Enter für sich behalten! Dadurch ist das Programm auf dem Controller nie aus der Schleife gekommen. Wenn du jetzt dem T-Programm gesagt hast, schicke jeder Zeichenkette ein CR nach, schickt es das Enter mit und die Schleife kann verlassen werden.
Gruß
Jens
Lesezeichen