2017-08-03 1 views
0

bitte helfen ich bin blindMeine Serienbefehlszeile für Arduino funktioniert nicht und ich weiß nicht, warum

void commandline() { 
    if (Serial.available() > 0) 
    { 
    String command = Serial.readStringUntil(' '); 
    String commandvar = Serial.readString(); 

    Serial.print(command); 
    Serial.print(" | "); 
    Serial.println(commandvar); 

    if (command == "fans" || command == "Fans" || command == "FANS") 
    { 
     Serial.println("Command Recognized"); 
     if (commandvar == "on" || commandvar == "On" || commandvar == "ON") 
     { 
     Serial.println("     Fans are now ON"); 
     digitalWrite(2, HIGH); 
     digitalWrite(3, HIGH); 
     } 
     else if (commandvar == "off" || commandvar == "Off" || commandvar == "OFF") 
     { 
     Serial.println("     Fans are now OFF"); 
     digitalWrite(2, LOW); 
     digitalWrite(3, LOW); 
     } 
     else 
     { 
     Serial.println("commandvar isn't valid"); 
    } 
    } 

, wenn ich an der seriellen Konsole schauen und „Fans“, die Konsole spuckt senden

aus
fans | on 

Command Recognized 
commandvar isn't valid 

jede Hilfe sehr geschätzt

=========================

zusätzliche Informationen würden

1) Ich rufe Kommandozeile() von der Schleife() alle 10 Millisekunden

2) Die Fans Befehl ist nicht der einzige Befehl, den ich habe, es ist nur, dass ich sie konvertieren mit der neuen Arbeit Führungsgrößen I erstellt

3) ich bin mit dem Arduino Uno Rev 3

+0

Der gesunde Menschenverstand würde sagen, wenn Sie einen nicht erkannten Befehl erhalten, möchten Sie ihn vielleicht ausgeben kann sehen, ob das, was Sie denken, dass Sie gesendet haben, ist, was Ihr Code denkt, empfängt es, nicht wahr? Debuggen mit einfachen Techniken zu lernen ist eine wertvolle Fähigkeit, die Sie wahrscheinlich zu lernen versuchen sollten. –

+0

Sind Sie sicher, dass hier C++ beteiligt ist? – Gerhardh

Antwort

1

Der Ausgang ist ein Hinweis: Es gibt eine Leerzeile. Sagt mir das commandvar = "on\n" und daher != "on"

Sie können bestätigen, das ist das Problem, indem Sie die Länge der Zeichenfolge überprüfen - wenn es> 2 ist, gibt es einige Sonderzeichen, die Sie nicht erwartet haben. Wenn die Zeichen nur Leerraum sind, dann brauchen Sie wahrscheinlich nur commandvar.trim(), um nur den wichtigen Teil zu erhalten (dh kein Leerzeichen)

+0

also sagst du ich sollte commandvar.trim verwenden? – Psaidiwd

+0

Vielen Dank, es funktioniert perfekt – Psaidiwd

Verwandte Themen