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

My Serial Command line for Arduino doesn't work and I don't know why

本文关键字:我不知道 为什么 不起作用 命令行 Arduino 我的      更新时间:2023-10-16

请帮忙,我是盲人

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((调用命令行((

2(fans命令不是我唯一的命令,只是我必须将它们转换为使用我创建的新命令变量

3( 我正在使用 Arduino Uno Rev 3

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

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