PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PIC RS232 programmieren



inschenjoer
28.11.2006, 21:28
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:


recvd = recvline232();
while (recvd != '\0')
{
handlecommand(recvd);

recvd = recvline232();
}


Die Funktion recline232 ist wie folgt definiert:

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