strcmp funktioniert nicht

Hi,

ich möchte per serieller Verbindung einen String von einem raspberry empfangen und bei richtigen String etwas ausführen. Leider funktioniert der Vergleich des Strings nicht. Könnt ihr mir sagen, wo der Fehler liegt?

if (Serial.available() >= 5) {
      for (int j=0; j<5; ++j) {incomingByte[j] = ' '; }    //Array wird gelöscht
      for (int i = 0; i <= 4; i++) {
      incomingByte[i] = Serial.read();
      }
incomingByte[5]='\0';
Serial.print(strcmp(incomingByte,"testa"));    //Ergebnis des Vergleichs
    if (strcmp(incomingByte, "testa")==0)      //Array wird verglichen
    {transmitCode(Bibliothek_Down); 
      digitalWrite(ledPin, HIGH); 
      delay(20);
    }

Gruß Grave

Wieso löscht Du das Array wenn Du es sowieso mit anderen Werten lädst?

fehlt hier nich der Index?

for (int i = 0; i <= 4; i++) {
      incomingByte = Serial.read();
      }

Grüße Uwe

Der Index ist doch da. Derweil habe ich es über eine while Schleife geschafft. Trotzdem würde mich interessieren, wo der Fehler im sketch liegt.

Gruß Grave

Generell ist es vernünftiger man markiert das Ende eines Strings mit einem CR oder LF und liest dann nicht-blockierend alles bis dahin ein: http://forum.arduino.cc/index.php?topic=329469.msg2273780#msg2273780

Hat vor allem den Vorteil, dass dann die Länge des Strings egal ist

Hi,

hab mir dein Beispiel mal angesehen. Hab´s soweit auch verstanden, bis auf folgende Zeile:

if (c >= 32 && index < SERIAL_BUFFER_SIZE - 1)

Kannst du mir die mal erklären? Warum c>=32?

Damit ASCII Steuerzeichen nicht abgespeichert werden. Das braucht man nicht unbedingt, aber wenn du das weglässt musst du unbedingt die Abfrage auf CR/LF als erstes machen