conversion int pour transmission série

Bonjour à tous,
Je me lance depuis très peu de temps dans la conception d'un système de gestion d'eau pour ma piscine, a base d'arduino uno et d'Esp32 pour la connexion wifi, n'ayant pas assez de gpio sur l'esp.
J'avale le C depuis seulement quinze jours, mais j'ai un problème avec la transmission d'int (2 octets) via la liaison série.
J'ai un int de valeur 300 que j’envoie sur la ligne série, en le décomposant octet de poids faible puis octet de poids fort.
A l'arrivée, j’obtiens = octet de poids faible 44, octet de poids fort 01, ce qui donne 1 0100 0100 soit 324 en décimal ?
Ça fonctionne très bien pour les int inférieurs à 255.
mon code pour l'émission :
int distance = 300;
s.write(distance & 0xFF); // Envoi l'octet de poids faible
s.write((distance >> 8) & 0xFF); // puis l'octet de poids fort
Pour la réception :
byte car;
while (Serial.available() > 0)
{
delay(5);
car = Serial.read();

Je sèche !!!!

A l'arrivée, j'obtiens = octet de poids faible 44, octet de poids fort 01, ce qui donne 1 0100 0100 soit 324 en décimal ?

44 oui, pas 0x44. 44=0x2C...

JOE56670:
J'ai un int de valeur 300 que j’envoie sur la ligne série, en le décomposant octet de poids faible puis octet de poids fort.
A l'arrivée, j’obtiens = octet de poids faible 44, octet de poids fort 01, ce qui donne 1 0100 0100 soit 324 en décimal ?

tu confonds 44 (décimal) et 0x44 (héxa). En décimal:
1 x 256 + 44 x 1 = 300

Ça fonctionne très bien pour les int inférieurs à 255.

Ca montre que ton code marche si l'octet de poids fort est nul. Donc il y a une erruer dans le calcul qui fait intervenir cet octet là.

Bonjour,

Merci de vos réponses, effectivement, je confondais Hex et Dec !
Donc ça marche OUF...!