Hallo,
ich bin dabei meinen PIC zu programmieren. Und zwar gehts um die serielle Verbindung zu einem PC.
Dazu habe ich folgende while-Schleife, die eine Zeile einlesen soll:
Die Funktion recline232 ist wie folgt definiert:Code:recvd = recvline232(); while (recvd != '\0') { handlecommand(recvd); recvd = recvline232(); }
Die recv232-Funktion funktioniert. Das habe ich ausgetestet. Aber die recvline232 endet in einer Endlosschleife. Die Ausgabe am PC sieht wie folgt aus:Code:char recv232() { if (RCIF == 1) { char s = RCREG; return s; } return '\0'; // empty string } char *recvline232() { #ifdef DEBUG sendmessage("recvline232 start"); #endif char recvBuffer[64]; int pos = 0; while (1) { char s = recv232(); #ifdef DEBUG sendstring232("m recvd: -"); sendstring232(s); sendstring232("- "+strlen(s)); sendstring232("-\n"); #endif recvBuffer[pos++] = s; if (s == '\0') break; if (s == "") { recvBuffer[pos] = '\0'; break; } pause(10); } #ifdef DEBUG sendmessage("recvline232 stop"); #endif return recvBuffer; }
m recvline232 start
m recvd: --
m recvline232 stop
m recvline232 start
m recvd: --
m recvline232 stop
m recvline232 start
m recvd: --
m recvline232 stop
....
Hat evtl. jemand ne Idee woran das liegen könnte? Ich bin mit meinem Latein am Ende...
mg
inschenjoer







Zitieren

Lesezeichen