2016-09-22 3 views
0

Ich versuche, die Grundlagen mit meinem Arduino zu machen, und damit beginne ich klein.Arduino nimmt nicht mehrere Befehle

Das heißt, ich will die Arduino für einfache, mehrere Befehle hören von meinem Raspberry Pi gesendet wird (ich dies über die serielle Monitor emuliert aber jetzt) ​​

Dies ist der Code Ich arbeite mit:

#include "SoftwareSerial.h" 

void setup() 
{ 
    Serial.begin(9600); 
    delay(100); 
} 

void loop() { 
    if (Serial.find("test1")) { 
     delay(100); 
     Serial.println("TEST1 command received"); 
    } 
    if (Serial.find("test2")) { 
     delay(100); 
     Serial.println("TEST2 command received"); 
    } 
    } 
} 

Leider löst nur der Befehl test1 eine serielle Druckantwort aus, test2 nein. Kann mir hier jemand helfen, mich in die richtige Richtung zu lenken?

Vielen Dank!

+2

'find' wird blockiert, bis' test1' gefunden oder abgelaufen ist, wobei alle Daten auf dem Weg verbraucht werden, einschließlich der 'test2'-Strings, die möglicherweise gefunden werden. Ich empfehle Ihnen, ein wenig über die Funktionen zu recherchieren, die Sie verwenden möchten. –

Antwort

1

Aus dem Lesen der Dokumentation glaube ich nicht, dass Sie die find() Funktion so verwenden können.

Überlegen Sie, was passiert, wenn test2 eingegeben wird, wenn der Anruf find("test1") ausgeführt wird. Es wird wahrscheinlich alle Zeichen bis einschließlich verbrauchen und dann false zurückgeben, zu welchem ​​Zeitpunkt diese Zeichen verloren gehen.

Ich denke, Sie sollten ein tatsächliches Protokoll mit einigen Trennzeichen zwischen Befehlen entwerfen und diese lesen/analysieren.