2017-08-03 36 views
0

請幫我瞎我對Arduino的串口命令行不工作,我不知道爲什麼

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"); 
    } 
    } 

當我看到串行控制檯和發送「球迷」,控制檯吐奶出

fans | on 

Command Recognized 
commandvar isn't valid 

任何幫助將是非常讚賞

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

額外的資訊

1)我打電話從環命令行()()每10毫秒

2)風機命令不是唯一的命令,我有這只是我必須把它們轉換新工作命令變量我創建

3)我使用Arduino的烏諾版本3

+0

常識會說,如果你得到一個無法識別的命令,你可能想輸出它,所以你可以看到你認爲你發送的是你的代碼認爲它收到了什麼,不是嗎?學習使用簡單技術進行調試是一項寶貴的技巧,您應該努力學習。 –

+0

你確定這裏有任何C++嗎? – Gerhardh

回答

1

的輸出是一個暗示:有一個空行。對我說,commandvar = "on\n"因此!= "on"

您可以通過檢查字符串的長度來確認這是問題 - 如果它是> 2,那麼在那裏有一些你不期待的特殊字符。如果字符只是空格,那麼你可能只需要commandvar.trim()就可以得到重要的部分(即沒有空白)

+0

所以你說我應該使用commandvar.trim? – Psaidiwd

+0

非常感謝,它完美的作品 – Psaidiwd

相關問題