Bonjour Dominique,
Disons que ca semble être l'équivalent qui utilise les fichiers JMRI de données des décodeurs.
J'ai trouvé un script de "sniffer" super bien fait sur le site de UAICF
http://modelisme58.free.fr/index.php/telechargement/decodeurs-accessoires-dcc.htmlGrâce à lui j'ai trouvé l'origine du problème qui provient de cette partie du code
address -= 1;
address *= 4;
address += 1;
address += (data & 0x06) >> 1; // DCC address decoding
Comme ces lignes ne sont pas documentées dans les exemples de la bibliothèque, je ne savais pas à quoi elles servent. Sans doute à adapter le décodage de l'adresse pour les centrales. En l'occurence, avec le programme "Centre de programmation" et une Sprog3, il faut les commenter.
Pour une z21 il faut ajouter une ligne
address = adresseDecode + 4;
et pas
address = address - 4;
comme on le voit partout sur le net.
Les exemples de la bibliothèque DCC_Decoder.h sont incomplets. Le script de l'UAICF détaille bien le décodage des trames pour les locos et pour les accessoires. Bravo à eux pour ce code.
En règle générale, je trouve que les bibliothèques sont mal documentées pour les "nuls" comme moi (tant dans le code en lui-même que pour l'utilisation). Il faudrait que Giuhub renforce ces critères de publication.
Maintenant la fonction DCC de ma gestion d'aiguillages fonctionne parfaitement ... et je sais pourquoi ... mdr ... seul soucis, ca semble incompatible avec la gestion par Infra Rouge que j'avais faite. Sans doute que IRRemote utilise les mêmes interruptions.
Bon dimanche à tous et merci de votre aide
Bien amicalement
Philippe