Buenos días,
Estoy tratan de realizar lo siguiente:
- Recibir una cadena desde el puerto serie.
- Comprobar que la cadena_1 recibida contenga 62 bytes, así me aseguro de recibir toda la cadena antes de empezar a "trabajarlo".
- Guardar esta cadena_1 en una variable tipo String para empezar a "desglosarlo" usando ciclos FOR.
- Usando un if comprobar que los dos primeros caracteres recibidos sean 7E. Así me aseguro que estoy recibiendo la cadena del dispositivo remoto correcto.
- Si el resultado de la comparación del punto anterior es TRUE , imprimir en el monitor serial "Cadena 7E recibida correctamente".
- Extraer de la cadena_1 los datos de la posición 18 al 35 e imprimirlo en monitor serial.
- Extraer de la cadena_1 los datos de la posición 63 al 65 e imprimirlo en monitor serial.
He tenido problemas en realizar el punto 4, no logro que el if lo compare adecuadamente.
/*Cadena de ejemplo a recibir
7E 00 12 92 00 7D 33 A2 00 42 53 EA F3 FF FE C1 01 00 10 00 00 00 77
*/
void setup()
{
Serial.begin(9600);
}
void loop()
{
if (Serial.available() > 62) // Me aseguro de recibir toda la cadena.
{
String cadena_1 = Serial.readString(); // Guardo toda la cadena en cadena_1.
Serial.println(cadena_1); // Imprimo la cadena recibida.
for (int i =0; i < 2; i++) // Extraigo los dos primeros caracteres de la cadena_1.
{
Serial.print(cadena_1[i]); // Imprimo los dos primeros caracteres.
if (Serial.print(cadena_1[i]== "7E")) // Comparo que los dos primeros caracteres sean 7E.
{
Serial.println ("Cadena 7E recibida correctamente");
}
}
for (int i =18; i < 36; i++)
{
Serial.print(cadena_1[i]); //imprimo los caracteres del 18 al 36
}
Serial.println("");
for (int i =63; i < 65; i++)
{
Serial.print(cadena_1[i]); //imprimo los caracteres del 63 al 65
}
}
}
Ádemas si pueden indicarme como guardar los datos de los puntos 6 y 7 en una variable tipo String para posteriormente poder compararlos con un texto. Gracias.