У меня проблема со сравнением строк в моей программе. Я получаю последовательные данные и сохраняю их в строку:
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(), и ни один из них не будет правильно сравниваться. ниже приведен последовательный вывод: последовательный вывод
Как видите, один из моих операторов сравнения ищет 01*01, и это также то, что вы видите в окне последовательного вывода, но оператор if не соответствует истине. Может ли кто-нибудь помочь понять, почему это не работает. Спасибо
inputString += inChar;
, как я? Потому что это единственная возможная ошибка ;) 05.11.2015