-
PIC RS232 programmieren
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:
Code:
recvd = recvline232();
while (recvd != '\0')
{
handlecommand(recvd);
recvd = recvline232();
}
Die Funktion recline232 ist wie folgt definiert:
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;
}
Die recv232-Funktion funktioniert. Das habe ich ausgetestet. Aber die recvline232 endet in einer Endlosschleife. Die Ausgabe am PC sieht wie folgt aus:
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