Hola. Muchísimas gracias por vuestras respuestas y disculpar que tarde en responder pero he estado fuera unos días...
Metaconta ###
Los tres ejemplos que me pones utilizan simplemente el envío de una sola variable mediante la instrucción Serial.print() y mi problema es enviar tres variables y que el receptor sepa cual es la que le está llegando.
felicito_escobar ###
Lo que me propones es exactamente la misma conclusión a la que he llegado pero no termino de conseguirlo...Seguro que es una tontería pero no veo como... intentaré poner un ejemplo reducido de lo que hago y el problema que tengo.
-------- EMISOR --------
float VAL1 = 4.44;
float VAL2 = 55.55;
BT.write("A");
delay(5);
BT.write(1);
delay(5);
BT.print(VAL1);
delay(5);
BT.write("C");
delay(5);
BT.write("A");
delay(5);
BT.write(2);
delay(5);
BT.print(VAL2);
delay(5);
BT.write("C");
delay(5);
-------- RECEPTOR --------
float VAL1;
float VAL2;
int VALBT=0;
if (BT.available()>0) {
VALBT = BT.read();
if (VALBT==65){ //Si me llega una "A" empieza una variable.
while (VALBT != 67){ // Mientras no llegue una "C" de cierre de variable...
while (BT.available()==0) {
}
VALBT = BT.read();
Serial.println(VALBT);
switch (VALBT){
case 1:
while (BT.available()==0) {
}
VAL1 = BT.read();
break;
case 2:
while (BT.available()==0) {
}
VAL2 = BT.read();
break;
}
}
}
}
...Esto casi me funciona salvo por un pequeño problema... el valor de la variable me llega en ascii.
Es decir debería llegarme esto...
A, 1, 4.44, C
A, 2, 55.55, C
Y en cambio me llega...
A, 1, 4.00, C
A, 2, 55.00, C
No se si queda demasiado claro.
Primero envío una "A" para indicar que empieza una variable.
A continuación envío un numero entero que indica si es la variable 1 o 2.
Luego envío el valor de esa variable.
Y por último envío una "C" para indicar que he terminado de enviar esa variable.