1
Vos projets / Re : LaBox" : Une Centrale DCC polyvalente et abordable
« le: octobre 08, 2024, 09:22:06 pm »
Bonjour à tous.
Une nouvelle version 2.7.0 vient d'être poussée sur github.
Elle comprend pas mal de modifications :
- De nouvelles capacités de 'broadcast' ont été ajoutées à l'écosystème EXComm. Le broadcast permet d'informer l'ensemble des interfaces extérieures d'un changement dans les éléments pilotés. Si la vitesse, la direction ou une fonction change sur une loco pilotée simultanément par plusieurs applis Z21 ou EngineDriver, alors les autres applis sont informées du changement. C'est d'ailleurs assez sympa de voir les vitesses bouger toutes seules sur les autres applis... Les commandes d'aiguillages sont gérées, et bien sûr tout arrêt d'urgence est reporté sur toutes les interfaces. A noter que je n'ai pas géré SPROG, CANMARKLIN ou XPressNet. Dans les deux derniers cas, je ne sais pas si une mise à jour des éléments pilotés est souhaitable, ou si une remontée d'information est possible... Pour ce système de broadcast, j'ai amélioré ce qui existait déjà dans CommandStation-EX mais qui était réservé aux liaisons séries et à WiThrottle.
- Le code de EXComm a largement été remanié pour reposer sur des bases de codage plus solides. Par exemple, les fonctions générales, appelées dans le .ino par exemple, sont maintenant des méthodes de la classe EXComm et non plus EXCommItem... Si c'est important !
- La classe Z21 plus particulièrement a fait l'objet d'un nettoyage de prin... d'automne. Les données inutiles ont été supprimées et des méthodes jamais appelées ont été enlevées. Par exemple la classe MYZ21LOCO qui maintenait une liste des adresses DCC pilotées par une appli (et d'autres données inutilisées) dans chaque Z21Throttle a été supprimée. Elle a été remplacée par une simple liste d'entiers avec les adresses DCC pilotées.
- Dans cette même classe, un remaniement des méthodes de notification qui existaient déjà pour remonter les infos à l'appli a eu lieu afin d'être utilisé par le broadcast de EXComm.
- Le menu du petit écran a lui aussi subi mes bombardements, c'est de saison. De nombreuses commandes inutiles parce que non câblées ont été retirées, comme l'activation du Wifi ou du CAN d'avant EXComm (donc qui n'existait pas !) ou le reset aux valeurs d'usine, sans objet.
- En échange une nouvelle commande 'Information' est apparue. Elle contient trois sous commandes qui permettent respectivement d'avoir des infos sur les versions de Labox et CS-EX (A propos de...), d'avoir la config Wifi de l'ESP: mode STA ou AP, IP, port, ou d'avoir des information sur les interfaces EXComm lancées, comme l'Id et le taux de transfert du CAN, ou les broches utilisées par les différentes interfaces.
- Pour terminer j'ai utilisé pour la première fois une nouveauté du C++, le mot clef 'override' qui permet d'affirmer dans sa déclaration qu'une fonction est bien la surcharge d'une fonction de la classe de base. Ainsi tout changement dans l'interface de la classe de base se soldera par une erreur de compilation si les classes dérivées n'ont pas suivi. C'est un progrès notable pour la mise au point présent dans le C# que j'utilise au boulot et qui me manquait en C++...
Il reste encore beaucoup à faire. Par exemple exploiter le mode DC possible avec CommandStation-EX, s'assurer qu'EXRail fonctionne bien avec nos interfaces, proposer une commande simple de va et vient par EXRail pour le tester dans le menu du petit écran, ou ajouter une autre commande pour identifier les décodeurs basée sur la lecture du CV8 ! Bref du boulot en perspective.
Thierry.
Une nouvelle version 2.7.0 vient d'être poussée sur github.
Elle comprend pas mal de modifications :
- De nouvelles capacités de 'broadcast' ont été ajoutées à l'écosystème EXComm. Le broadcast permet d'informer l'ensemble des interfaces extérieures d'un changement dans les éléments pilotés. Si la vitesse, la direction ou une fonction change sur une loco pilotée simultanément par plusieurs applis Z21 ou EngineDriver, alors les autres applis sont informées du changement. C'est d'ailleurs assez sympa de voir les vitesses bouger toutes seules sur les autres applis... Les commandes d'aiguillages sont gérées, et bien sûr tout arrêt d'urgence est reporté sur toutes les interfaces. A noter que je n'ai pas géré SPROG, CANMARKLIN ou XPressNet. Dans les deux derniers cas, je ne sais pas si une mise à jour des éléments pilotés est souhaitable, ou si une remontée d'information est possible... Pour ce système de broadcast, j'ai amélioré ce qui existait déjà dans CommandStation-EX mais qui était réservé aux liaisons séries et à WiThrottle.
- Le code de EXComm a largement été remanié pour reposer sur des bases de codage plus solides. Par exemple, les fonctions générales, appelées dans le .ino par exemple, sont maintenant des méthodes de la classe EXComm et non plus EXCommItem... Si c'est important !
- La classe Z21 plus particulièrement a fait l'objet d'un nettoyage de prin... d'automne. Les données inutiles ont été supprimées et des méthodes jamais appelées ont été enlevées. Par exemple la classe MYZ21LOCO qui maintenait une liste des adresses DCC pilotées par une appli (et d'autres données inutilisées) dans chaque Z21Throttle a été supprimée. Elle a été remplacée par une simple liste d'entiers avec les adresses DCC pilotées.
- Dans cette même classe, un remaniement des méthodes de notification qui existaient déjà pour remonter les infos à l'appli a eu lieu afin d'être utilisé par le broadcast de EXComm.
- Le menu du petit écran a lui aussi subi mes bombardements, c'est de saison. De nombreuses commandes inutiles parce que non câblées ont été retirées, comme l'activation du Wifi ou du CAN d'avant EXComm (donc qui n'existait pas !) ou le reset aux valeurs d'usine, sans objet.
- En échange une nouvelle commande 'Information' est apparue. Elle contient trois sous commandes qui permettent respectivement d'avoir des infos sur les versions de Labox et CS-EX (A propos de...), d'avoir la config Wifi de l'ESP: mode STA ou AP, IP, port, ou d'avoir des information sur les interfaces EXComm lancées, comme l'Id et le taux de transfert du CAN, ou les broches utilisées par les différentes interfaces.
- Pour terminer j'ai utilisé pour la première fois une nouveauté du C++, le mot clef 'override' qui permet d'affirmer dans sa déclaration qu'une fonction est bien la surcharge d'une fonction de la classe de base. Ainsi tout changement dans l'interface de la classe de base se soldera par une erreur de compilation si les classes dérivées n'ont pas suivi. C'est un progrès notable pour la mise au point présent dans le C# que j'utilise au boulot et qui me manquait en C++...
Il reste encore beaucoup à faire. Par exemple exploiter le mode DC possible avec CommandStation-EX, s'assurer qu'EXRail fonctionne bien avec nos interfaces, proposer une commande simple de va et vient par EXRail pour le tester dans le menu du petit écran, ou ajouter une autre commande pour identifier les décodeurs basée sur la lecture du CV8 ! Bref du boulot en perspective.
Thierry.