Arduino - Split de una cadena

 
Vista:
sin imagen de perfil
Val: 2
Ha disminuido su posición en 26 puestos en Arduino (en relación al último mes)
Gráfica de Arduino

Split de una cadena

Publicado por Javier (5 intervenciones) el 28/03/2023 09:17:52
Hola.
Estoy utilizando la libreria PubSubClient.h para recbiir datos a traves de MQTT.
En la rutina de recepcion de datos recibo la siguiente cadena:

I2C_T_01,15.68870544,35.49308777

Necesito hacer split de esta cadena dividendo en subcadenas por las comas que aparecen en ella.
La rutina que hago la division es la siguiente:
[code]void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Mensaje recibido [");
Serial.print(topic);
Serial.print("] ");

String datorec = "";
int contador =0;
String tabla[6];
for (int i = 0; i < length; i++) {
//Serial.print((char)payload[i]);
if ((char)payload[i] !=','){
datorec = datorec + (char)payload[i];
} else {
tabla[contador] = datorec;
contador ++;
}
Serial.println("Recibo : " + tabla[contador] + "---" + datorec);
}
Serial.println();
Serial.println(datorec);

// Switch on the LED if an 1 was received as first character
if ((char)payload[0] == '1') {
digitalWrite(BUILTIN_LED, LOW); // Turn the LED on (Note that LOW is the voltage level
// but actually the LED is on; this is because
// it is active low on the ESP-01)
} else {
digitalWrite(BUILTIN_LED, HIGH); // Turn the LED off by making the voltage HIGH
}

}

/code]

Pero el resultado es el siguiente:

I2C_T_01,14.29805756,42.48046875
Mensaje recibido [javier/mqtt] Recibo : ---I
Recibo : ---I2
Recibo : ---I2C
Recibo : ---I2C_
Recibo : ---I2C_T
Recibo : ---I2C_T_
Recibo : ---I2C_T_0
Recibo : ---I2C_T_01
Recibo : ---I2C_T_01,
Recibo : ---I2C_T_01,
Recibo : ---I2C_T_01,1
Recibo : ---I2C_T_01,14
Recibo : ---I2C_T_01,14.
Recibo : ---I2C_T_01,14.2
Recibo : ---I2C_T_01,14.29
Recibo : ---I2C_T_01,14.298
Recibo : ---I2C_T_01,14.2980
Recibo : ---I2C_T_01,14.29805
Recibo : ---I2C_T_01,14.298057
Recibo : ---I2C_T_01,14.2980575
Recibo : ---I2C_T_01,14.29805756
Recibo : ---I2C_T_01,14.29805756,
Recibo : ---I2C_T_01,14.29805756,4
Recibo : ---I2C_T_01,14.29805756,42
Recibo : ---I2C_T_01,14.29805756,42.
Recibo : ---I2C_T_01,14.29805756,42.4
Recibo : ---I2C_T_01,14.29805756,42.48
Recibo : ---I2C_T_01,14.29805756,42.480
Recibo : ---I2C_T_01,14.29805756,42.4804
Recibo : ---I2C_T_01,14.29805756,42.48046
Recibo : ---I2C_T_01,14.29805756,42.480468
Recibo : ---I2C_T_01,14.29805756,42.4804687
Recibo : ---I2C_T_01,14.29805756,42.48046875

¿Que esta mal del proceso para que no lo divida correctamente?


Gracias.
Javier
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder