Comparación de String

Muy buenas, estoy tratando de recibir caracteres por puerto serie y luego comparar si lo que me llegó es lo que deseo o no, sin embargo, estoy teniendo problemas ya que al momento de comparar lo que me llega que en este caso sería una letra A nunca entra al if donde hago la comparación y no entiendo por qué. He intentado cambiar la letra por comillas simples en lugar de comillas dobles pero el problema persiste.

Creí que mi problema era la forma de hacer la comparación y que tal vez con los Strings era diferente pero he buscado el ejemplo de la página de arduino y es tal cual así.

char Puerto;
String SumaPuerto;

void setup() {
  Serial.begin(9600);

}

void loop() {
  while (Serial.available() > 0) {
    Puerto = (char)Serial.read();
    //Serial.println(Puerto);
    if (Puerto == '\n') {
      Serial.println(SumaPuerto);
      if (SumaPuerto == "A") {
        Serial.println("Llego A");
        SumaPuerto = "";
      } else {
        Serial.println("No llego A");
        SumaPuerto = "";
      }
    }
    else {
      SumaPuerto += String(Puerto);
    }
  }

}

Hola, a mi me paso lo mismo pero la comunicacion es via UDP lo solucione asi…

if (strstr(packetBuffer, "GETCFG")) {
...
...
..
}

Espero te sirva!

Moderador: toda línea de código va con etiquetas </>. Lee las normas.

Esa función son para variables de tipo char*

Jhony9625, tienes un problema de interpretacion.

El monitor serie nunca envía LF (\n) ni CR (\r), simplemente ejecuta la accion de enviar sin añadir dichos caracteres. Es curioso porque yo esto ya lo habia analizado hace tiempo pero no logre encontrar que nadie lo documento... o quizas no busque bien. Para solucionar ese impase basta hacer.

//if (Puerto == '\n') {

if (Puerto) {

Que es algo asi como si la variable Puerto tiene algo...

Claro que este cambio invalida toda tu logica. Quizas yo te recomendaria algo mas directo

void setup() {
   Serial.begin(9600);
}

void loop() {
   while (Serial.available()) {
      char Puerto = Serial.read();
      if (Puerto == 'A') {
         Serial.println("Llego A");
      }else {
         Serial.println("No llego A");
      }
   }
}

PD: La acabo de documentar en ArduWiki

Hola Kike, si a la final me tocó hacer eso como lo pusiste, pero aún así quedo con la duda de poder hacer comparaciones, por ejemplo si quiero mandar un HOLA y saber si en verdad llegó ese HOLA no sabría cómo comprobar esto.

Por otro lado lo del '\n' en realidad este carácter si me lo detecta ya que si compruebas el código que tengo sólo te muestra los datos cuando encuentra dicho carácter.

En el caso de querer detectar una cadena si tendrias que recibir los caracteres uno a uno y concatenar en un String y comparar con la cadena.