2014-10-14 3 views
0

Может кто-нибудь объяснить, что не так с этим кодом. ПОЧЕМУ утверждение if всегда ложно, когда оно соответствует точным строкам. Я тоже пробовал его с ==. Все, каждый раз, когда я получаю No Match Found !!.Сравнение строк Не работает Arduino

String inData = ""; 
char inChar; 
String property; 
String a = "test"; 

void loop() { 


    Serial.println("String Comparison"); 

    if(Serial.available() > 0){ 

     while(Serial.available()>0) { 
      inChar = Serial.read(); 
      inData.concat(inChar); 
     } 

     //Extracting Property 
     property = inData.substring(inData.lastIndexOf(":")+2); // Extracts the String "test" 
     Serial.println("Property:" +property); 


     if(property.equals(a)){ // It never matches though, it is TRUE all the time 

      Serial.println(" Matched !! "); 

     }  
     else 
     Serial.println(" Match Not Found !! "); 

     inData = ""; 


    } 

    delay(5000); 
} 

ответ

1

Поскольку я могу видеть совпадения матчей и пропуски пропусков, я думаю, мне нужна дополнительная информация для повторения ошибки.

Поскольку я этого не вижу, я бы предположил, что это связано с тем, что вводится и как эта строка анализирует его.

property = inData.substring(inData.lastIndexOf(":")+2); // Extracts the String "test" 
  • Что такое входной ток, который не удается?
  • Можете ли вы включить свой печатный результат с этим вводом?
  • Добавить строку распечатать property.length() для проверки скрытых пробельных символов
+2

Я имел точно такую ​​проблему тоже, да и длина строки не совпадают. Я решил это, добавив: 'command = command.substring (0, command.length() - 1);' В вашем случае вы можете исправить это, сделав +1 вместо +2. – onok