15-06-2024, 03:31 PM
(15-06-2024, 12:42 PM)piamp a écrit : Je ne suis pas expert des communications série d'où les talonnements...
Je ne comprends pas trop comment cela fonctionne, je pense que l'on reste dans la boucle while tant que des données arrivent, mais n'en suis pas sûr...
Dans la dernière version de mon code, on reçoit 101 octets soit 404 bits.
a 19200 bps, cela fait 20ms pour recevoir la totalité du message, si je ne me trompe pas ?
Moi non plus, mais j'ai bricolé pas mal sur Arduino et les ports série.
Et non, malheureusement, cela ne fonctionne pas comme cela.
Je pense en fait que c'est par 'hasard' (ou miracle ?) que ça marche plus ou moins en l'état.
Rien n'est "bloquant dans ces échanges totalement asynchrones, et quelques lignes de code tournent bien plus vite sur l'ESP32 que 'arrivée d'un nouvel octet chaque 1ms.
Et dans tous les cas, la doc indique que les données ne sont pas rafraichies à plus de 1s.
Ce que j'ai fait pour le moment pour sécuriser, c'est
> ajouter un simple timer d'attente des données (une seconde)
> lancer une requête initiale à la fin de l'init_UxIx3 et armer le timer d'attente de lecture à 1 seconde.
> lire les données toutes les secondes, et à la fin de la lecture, envoyer une nouvelle requête et ré-armer le timer d'attente.
Avec ce principe, on doit je pense lire correctement un message toutes les secondes.
A moins de 1s, j'obtiens des messages incomplets une fois sur 2.
cdlt,
V12.0 modifiée récurrence d'interrogation serveurs, RTE, et code UxIx3. 1 serveur RMS UxIx3, 1 client Triac CE + 1 client SSR CE. 1 client SSR sur CE tri sur 1 serveur Linky réf. CACSI. Variateurs de fréquence sur Piscine et Spa.
6 panneaux (2 SO 2 S, 2 SE ) 425Wc produisent 13kWh de jour actuellement.
6 panneaux (2 SO 2 S, 2 SE ) 425Wc produisent 13kWh de jour actuellement.