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