Найдите ОК или ОШИБКУ в последовательной строке
Я пытаюсь понять, как записать ОК
или ОШИБКУ
с 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");
}
}
Но я всегда ничего не получаю взамен?
@maxum, 👍1
Обсуждение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");
}
}
,
@voidPointer
Смотрите также:
- Ошибка 'Serial' was not declared in this scope
- Serial.availableForWrite против Serial.flush
- Arduino Serial.ReadString() проблема
- Из string в int, проблема
- Повреждение данных SoftwareSerial - поиск предложений
- Какой лучший способ объявить Serial при создании библиотеки Arduino?
- String() против char для простого управления потоком
- Термопринтер Adafruit печатает слабо
Это ответ на ваш вопрос? Сравнение строки после считывания ее с последовательного fails. Проблема в том, что строка, считываемая с последовательного порта, также содержит закрывающий символ "новой строки", поэтому сравнение не удается. Вам нужно убрать новую строку., @StarCat