我在我的程序中比较字符串时遇到问题。我收到的串行数据,并将其保存为一个字符串:Arduino字符串比较问题
void serialEvent() {
if(!stringComplete){
while (Serial.available()) {
// get the new byte:
char inChar = (char)Serial.read();
// add it to the inputString:
inputString += inChar;
// if the incoming character is a newline, set a flag
// so the main loop can do something about it:
if (inChar == '\n') {
stringComplete = true;
Serial.println("COMPLETE");
}
我然后做一个对是从的serialEvent功能存储的字符串比较:
void setCMD(String a){
if(a == "01*00"){
busACTIVE=0;
// clear the string:
inputString = "";
stringComplete = false;
}
else if(a.equals("01*01")){
busACTIVE=1;
// clear the string:
inputString = "";
stringComplete = false;
} 我有几个else if语句然后在最后一个else语句:
else{
Serial.println("Command not Found");
Serial.println(a);
// clear the string:
inputString = "";
stringComplete = false;
}
我试过==运算符和equals(),都不会比较正确。下面是一个串行输出: Serial Output
正如你可以看到我比较报表的一个寻找01 * 01和,这也是你在串行输出窗口看到,if语句不等同于真实的。任何人都可以帮助找出为什么这不起作用。由于
忘记在setCMD函数中添加String a作为setCMD(inputString)在主循环中调用; – PL76
添加语言标记 – ergonaut
您将'\ n'添加到inputString中,以便测试失败 –