2017-08-03 102 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

相关问题