identifier de la data avec serial.write

Bonjour à tous, je souhaiterai communiquer de la data entre un arduino et un raspberry et l'identifier :

je dois retourner la température, l’humidité

Je peux le faire via cette example :

void setup(){
  Serial.begin(9600);
}

void loop(){
  Serial.write(45); // send a byte with the value 45

   int bytesSent = Serial.write("hello"); //send the string "hello" and return the length of the string.
}

Le soucis est que je ne peux pas concaténer des variables + des chaines donc je ne sais pas identifier qui est quoi a la réception. Auriez vous une idée de comment faire cela ?

Car actuellement en retour sur mon raspberry j'ai :

27
8
28
9
27
8

donc je ne peux pas identifier qui est temperature qui est humiditee

merci par avance

Voir par ici

Boujour,

Dans ton code actuel, tu envoies plusieurs bytes d'informations à la suite sans mettre de séparateur (caractère inséré entre chaque information qui ne sera jamais présent dans l'information).

Comment ton raspberry arrive-t-il à séparer ces informations avec un retour à la ligne comme on le voit dans ton exemple?

As-tu ajouté une contrainte de temps ?

Le soucis est que je ne peux pas concaténer des variables + des chaines

C'est pourtant ce que tu fais en envoyant en deux fois un byte (45) suivi d'une suite de bytes correspondant aux caractères de la chaîne 'hello'.

Serial.print("{T:");
Serial.print(temperature);
Serial.print(", Hu:");
Serial.print(humidité);
Serial.print("}\n");

doit faire l'affaire(et python a tout ce qu'il faut pour recevoir des chaines de caractères -pyserial- , les découper (split) , verifier qu'une ligne est correcte : commence par '{', finit par '}', a des mots clefs.....)
Vous ne devriez pas tenter de transmettre en binaire
a) le debugging est compliqué.
b) si c'est pour optimiser, pourquoi transmettre à 9600 bauds -le RPi va jusqu'à 115200 bauds ...)
c) le fonctionnement en cas d'erreur -ou au démarrage- est abominable.
f) les températures et humidités sont acquises par des capteurs lents.... Autant detecter /filtrer, côté RPi, les éventuelles erreurs de transmission par une redondance certaine.
PS: si, malgré tout, vous souhaitez transmettre à toute vitesse, il faut que le programme sur RPI
a) donne un ordre de départ
b) attendre les octets, en espèrant ne pas en perdre

PS: si , malgré tout, et pour un usage plus adapté, vous souhaitez transmettre à des cadences infernales, Capturing an analog signal with Arduino and python | Freedom Embedded continue de susciter une admiration justifiée (fait, en plus, et en moins de 100 lignes commentées de C++ et python, découvrir pyserial et matplotlib)

Merci pour vos réponses, effectivement dbrion06 je n'ai pas besoin de transmettre la data en permenance je suis passé par des fonctions que je peux appeler à la demande de ce côté la pas de soucis.
Si je comprend bien tu transmets sous format "json" la data et python s'occupera de parse la data désiré ?

cdlt

Impeccable dbrion06, ta solution fonctionne à merveille via json merci