我在我的程序中比較字符串時遇到問題。我收到的串行數據,並將其保存爲一個字符串: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中,以便測試失敗 –