Найдите ОК или ОШИБКУ в последовательной строке

Я пытаюсь понять, как записать ОК или ОШИБКУ с SIM800l.

Я пытался

mySerial.println("AT");
while (mySerial.available() > 0 ) {
String str = mySerial.readString();
Serial.println(str);
     if (str.equals("OK")) {
        Serial.println("ok");
     } else {
        Serial.println("unknown");
     }
   }

Но я всегда ничего не получаю взамен?

, 👍1

Обсуждение

Это ответ на ваш вопрос? Сравнение строки после считывания ее с последовательного fails. Проблема в том, что строка, считываемая с последовательного порта, также содержит закрывающий символ "новой строки", поэтому сравнение не удается. Вам нужно убрать новую строку., @StarCat


1 ответ


Лучший ответ:

0

Вы можете использовать .indexOf для поиска символов в строке. Он возвращает значение -1, если совпадение не найдено. Видишь https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/indexof/

mySerial.println("AT");
String str;

while (mySerial.available() > 0 ) 
{
    str = mySerial.readString();
    Serial.println(str);

    if (str.indexOf("OK") != -1) 
    {
        Serial.println("ok");
    } else if (str.indexOf("ERROR") != -1) 
    {
        Serial.println("error!");
    } else {
        Serial.println("unknown");
    }
}
,