Os comento a ver si podeis ayudarme con algo tan trivial que me da hasta verguenza....
Tengo un arduino rs232 que lo conecto con un modem externo rs232, con el objetivo de mandarle codigos AT (estandar de comunicacion con modems) y obtener su respuesta.
Esto lo tengo conseguido, ademas le añadi el display lcd al primer puerto para poder ver lo que me decia el modem.
Con este codigo de ejemplo le envio un comando AT al modem desde el arduino: Serial.println("ATI");
El me responde con "56000" que es la configuracion de modem o si le mando: Serial.println("AT"); el modem me responde con el texto "OK"
Bien, pues con un bucle leo lo que me envia y se lo mando al display para enterarme:
void lectura(){
if (Serial.available()) {
delay(100);
char dato= ' ';
while (Serial.available() > 0) {
dato=(Serial.read());
if (dato==13 || dato==10){
lcd.write(' ');
}
else{
lcd.write(dato);
}
}
}
}
y perfecto, me muestra sus respuestas, pero lo muestra porque estoy en el bucle de ir leyendo la entrada serie continuamente y la lee caracter a caracter.
Y he aqui mi pregunta, porque me vuelvo loco intentando encadenar caracteres a string y demas...:
Podriais orientarme para poder conseguir el objetivo de leer el puerto serie, recibir, por ejemplo la respuesta del modem de: "ok" o "no carrier" y poder compararla para poder decir, si es "ok" vale pero si no ejecutar inicializar modem (por ejemplo) o si es "no carrier" (sin portadora) pues mandarle el texto al display de que no hay linea.
Los comandos AT los controlo, lo que no consigo es un bucle de lo que manda el modem (que puede ser breve de 2 caracteres como el "OK" o puede ser mas largo como "NO CARRIER"
Es que estoy mas perdido... con esto de leer el arduino... solo consigo leer caracter a caracter.
Gracias y un saludo.
PD: El objetivo mio es controlar un modem analogico desde una placa arduino.