Problema con datos leidos desde puesto serie

Hola soy nuevo en el foro y aunque seguramente mi pregunta ya este respondida no he encontrado la respuesta.

Cuando leo los datos desde el puerto serie del sim900 al realizar la llamada recibe el comando “RING” pero intentando compararlo con otro String con el mismo texto en un blucle if no consigo que acceda a el.

Adjunto el codigo de la funcion en concreto y una captura con el resultado en el monitor serie.

 void identificarFuncion(boolean llamando){
     while (SIM900.available()) {
        char c = SIM900.read();
        palabra=palabra+c; 
        Serial.println(palabra);
        palabra = String(palabra);
        String palabra2="RING";
        if (palabra.equals(palabra2)) {
          Serial.println("ring detectado");
          if(llamando==true){
               detenerLlamada();     
          }else{
                pararBomba();
          }
          
        }
        
      }
      palabra="";    
  }

como se puede ver en la imagen no se muestra el mensage “ring detectado” que debiera verse si se accede al bucle if

Hola, estas comparando solo RING y tiene que ser exacto, lo que tienes en el buffer es ring mas retorno de carro salto de linea. Ademas posiblemente también tendrás varios RING dentro de la cadena.
O pones toda la trama entera que entra y la comparas o una función que busque RING dentro de la cadena recibida. Pero con esa comparación no te funcionara es como si esperas por ejemplo 595 y en la trama recibes 595 595 595 el numero si que esta pero no es idéntico. Tienes funciones para buscar dentro de una cadena algo en concreto. Eso si te funcionara.

Saludos.

Mas alla de lo que cita FRAN2017 que es correcto, quiere decir que cada vez que un promotor o llamada equivocada suene en tu telefono actuará sobre las bombas?
Debes mejorar eso!!

Envia SMS y con eso activas/desactivas.