Чтение строки из последовательного порта и сравнение с другой строкой

Я использую 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

Обсуждение

в строке после обрезки() не может быть \r\n, @Juraj

Кроме того, завершающий \n удаляется из входного буфера, но исключается из возвращаемого результата, даже без trim., @DataFiddler


1 ответ


1

Trim удаляет пробелы, и вы сравниваете чтобы \r и \n были там. Поскольку они представляют собой пробелы, естественно, сравнение завершается неудачно.

См. здесь одно определение пробелов для C.

,