Чтение строки из последовательного порта и сравнение с другой строкой
Я использую Arduino Mega 2560 и пишу очень простой фрагмент кода, который не работает.
String a, letra;
#define led 13
void setup() {
Serial.begin(9600); // открывает последовательный порт, устанавливает скорость передачи данных 9600 бит/с
pinMode(led, OUTPUT);
}
void loop() {
while(Serial.available()) {
letra= Serial.readStringUntil('\n');
letra.trim();
Serial.println(letra);
if(letra.equals("aa\r\n")){
Serial.println("ABRE 1");
}
if(letra == "aa\r\n"){
Serial.println("ABRE 2");
}
if(letra.compareTo("aa\r\n") == 0){
Serial.println("ABRE 3");
}
}
}
Он возвращает то, что я набрал, но не вводит ни одно условие if... Может ли кто-нибудь помочь мне с этим?
1 ответ
▲ 1
Trim удаляет пробелы, и вы сравниваете чтобы \r
и \n
были там. Поскольку они представляют собой пробелы, естественно, сравнение завершается неудачно.
См. здесь одно определение пробелов для C.
,
@Nick Gammon
Смотрите также:
- Как разделить входящую строку?
- Как вывести несколько переменных в строке?
- форматирование строк в Arduino для вывода
- Очень простая операция Arduino Uno Serial.readString()
- Arduino Преобразование std:string в String
- Как прочитать входящие ШЕСТНАДЦАТИРИЧНОЕ значение из serial метод read ()?
- Arduino Serial.ReadString() проблема
- Очистка строкового буфера с помощью memset после последовательного чтения
в строке после обрезки() не может быть \r\n, @Juraj
Кроме того, завершающий
\n
удаляется из входного буфера, но исключается из возвращаемого результата, даже безtrim
., @DataFiddler