erreur trame TIC ADCO ?
-
Bonjour à tous,
Je débute et je teste la librairie LibTeleinfo avec un esp32 mais avec Teleinfo_DenkyD4.ino
(V1.01 2021-04-18 - Refactored for Denky D4 standalone test only)Tout semble fonctionner mais il y a une erreur sur la variable ADCO.
Affiche 2147483647 au lieu de 031762023755.
La donnée sur la trame traitée n'est pas celle reçue et affichée ! (voir ci- dessous)Y a t'il moyen de corriger cela ?
Nota : sur la version esp32 (ESP32.ino) la valeur ADCO était correcte.Merci à vous.
... HHPHC A ,
MOTDETAT 000000 B
<ETX><STX>
ADCO 031762023755 @
OPTARIF BASE 0
ISOUSC 30 9
BASE 015572905 -
PTEC TH.. $
IINST 002 Y
IMAX 090 H
PAPP 00490 .
HHPHC A ,
MOTDETAT 000000 B
{"ADCO":2147483647, "OPTARIF":"BASE", "ISOUSC":30, "BASE":15572905, "PTEC":"TH..", "IINST":2, "IMAX":90, "PAPP":490, "HHPHC":"A", "MOTDETAT":0}
<ETX><STX>
ADCO 031762023755 @
OPTARIF BASE 0
ISOUSC 30 9 ... -
Bonjour à tous,
Je débute et je teste la librairie LibTeleinfo avec un esp32 mais avec Teleinfo_DenkyD4.ino
(V1.01 2021-04-18 - Refactored for Denky D4 standalone test only)Tout semble fonctionner mais il y a une erreur sur la variable ADCO.
Affiche 2147483647 au lieu de 031762023755.
La donnée sur la trame traitée n'est pas celle reçue et affichée ! (voir ci- dessous)Y a t'il moyen de corriger cela ?
Nota : sur la version esp32 (ESP32.ino) la valeur ADCO était correcte.Merci à vous.
... HHPHC A ,
MOTDETAT 000000 B
<ETX><STX>
ADCO 031762023755 @
OPTARIF BASE 0
ISOUSC 30 9
BASE 015572905 -
PTEC TH.. $
IINST 002 Y
IMAX 090 H
PAPP 00490 .
HHPHC A ,
MOTDETAT 000000 B
{"ADCO":2147483647, "OPTARIF":"BASE", "ISOUSC":30, "BASE":15572905, "PTEC":"TH..", "IINST":2, "IMAX":90, "PAPP":490, "HHPHC":"A", "MOTDETAT":0}
<ETX><STX>
ADCO 031762023755 @
OPTARIF BASE 0
ISOUSC 30 9 ...@Géryko said in erreur trame TIC ADCO ?:
Sur mon 1er message :Nota : sur la version esp32 (ESP32.ino) la valeur ADCO était correcte.Je ne suis plus sûr de mon coup ?
Sur la version "basique" il y avait le même problème mais je ne l'avais pas remarqué. -
Bonjour,
Remarques :
-
Un indice : 2147483647 (dec) = 7fffffff (hex) "Comme c'est bizarre !"
Je ne suis pas assez connaisseur pour trouver la cause du problème. -
Sans rapport avec le problème principal.
Lorsque je créer un faux checksum sur une des étiquettes, l'affichage de cette étiquette ne se fait pas OK, mais je n'ai aucun signalement !
Comment faire pour afficher les problèmes sur le moniteur ?
genre ligne 901 du .cpp : TI_Debugf(PSTR("LibTeleinfo::checkLine Err checksum 0x%02X != 0x%02X"), calc_checksum, checksum);
Merci à vous.
-
-
Bonjour,
Remarques :
-
Un indice : 2147483647 (dec) = 7fffffff (hex) "Comme c'est bizarre !"
Je ne suis pas assez connaisseur pour trouver la cause du problème. -
Sans rapport avec le problème principal.
Lorsque je créer un faux checksum sur une des étiquettes, l'affichage de cette étiquette ne se fait pas OK, mais je n'ai aucun signalement !
Comment faire pour afficher les problèmes sur le moniteur ?
genre ligne 901 du .cpp : TI_Debugf(PSTR("LibTeleinfo::checkLine Err checksum 0x%02X != 0x%02X"), calc_checksum, checksum);
Merci à vous.
@Géryko ADCO doit être traité comme un long long pour être géré en valeur numérique. Sinon, il faut le traiter en string.
-
-
Bonjour Nicolas Bernaerts,
et merci pour ta réponse.Mais comme je l'ai écrit, c'est un problème de la bibliothèque LibTeleinfo que je ne sais pas traiter.
Pour l'instant je n'ai rien programmé. L'anomalie est présente avec les exemples fournis.
je ne suis pas assez "performant". en programmation.Je vais quand même y jeter un oeil sur les déclarations mais ???
En clair, que faudrait-il modifier ?PS : à priori, toutes les données sont des "char".
-
Bonsoir à tous,
Le viens de faire des tests complémentaires.
Si ADCO est < à 2147483647 c'est OK ( 7fffffff (hex) 2^31 )
Si ADCO est > à 2147483647 c'est mauvais.Mais je ne comprends pas comment cette valeur est déclarée ?
Il n'y a que du char dans la librairie LibTeleinfo.h et LibTeleinfo.cpp !Quelqu'un peut-il m'aider à résoudre ce petit problème ?
Merci -
Bonjour,
Autre possibilité, mettre :
(strlen(me->value) > 9) ? SERIAL_DEBUG.print(me->value) : SERIAL_DEBUG.print(atoi(me->value));Mais transformer String en nombre ne sert quasiment à rien pour l'afficher ?
(hormis effacer le zéros non significatifs et revérifier qu'il ne s'agit bien que de chiffres)
Une double erreur peut provoquer un checksum OK. -
Bonjour,
Autre possibilité, mettre :
(strlen(me->value) > 9) ? SERIAL_DEBUG.print(me->value) : SERIAL_DEBUG.print(atoi(me->value));Mais transformer String en nombre ne sert quasiment à rien pour l'afficher ?
(hormis effacer le zéros non significatifs et revérifier qu'il ne s'agit bien que de chiffres)
Une double erreur peut provoquer un checksum OK.
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login