我的Arduino串行命令行不起作用,我不知道为什么

时间:2017-08-03 01:11:16

标签: c++ c arduino serial-port

请帮助我失明

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毫秒从loop()调用commandline()

2)粉丝命令不是我拥有的唯一命令,只是我必须将它们转换为使用我创建的新命令变量

3)我正在使用Arduino Uno Rev 3

1 个答案:

答案 0 :(得分:1)

输出是一个提示:有一个空行。对我说commandvar = "on\n"因此!= "on"

您可以通过检查字符串的长度来确认这是问题 - 如果它是> 2那里有一些你没想到的特殊人物。如果字符只是空格,那么您可能只需要commandvar.trim()来获得重要部​​分(即没有空格)

相关问题