1
Vos projets / Re : Projet partagé d'un gestionnaire de réseau
« le: mai 28, 2025, 10:32:26 am »
Bonjour
Je trouve le code C/C++ généré un peu bizarre.
Pierre
Je trouve le code C/C++ généré un peu bizarre.
Pierre
Le forum LOCODUINO est consacré aux discussions ayant trait à l'utilisation de l'Arduino dans les automatismes et les animations pour le train miniature. Nous avons eu récemment quelques inscriptions de personnes ayant des projets plus généraux mais surtout inapplicables au train miniature. Si votre projet ou vos questions ne concernent pas le modélisme ferroviaire, ne vous inscrivez pas, vous perdriez votre temps et nous aussi.
Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.
Bonjour Pierre,
Finalement, je propose de renommer les "super-appareils" en "claviers", avec des boutons, car c'est vraiment à ça que ça correspond.
Pour un aiguillage simple, un clavier à 2 boutons (on ne gagne rien)
Pour une TJD, un clavier à 4 boutons (on ne gagne rien)
Pour une TJS, un clavier à 3 boutons (on gagne déjà un bouton)
Pour une bretelle double, on a un clavier à 3 boutons (on gagne 7 boutons).
Il y a, en effet, 5 appareils (4 aiguillages et une traversée) qui sont, chacun, à 2 boutons, soit 10 boutons.
Et, en combinaison de boutons, on a 2^5 = 32 combinaisons dont seulement 3 sont utiles !
Et j'insiste bien : dans la bretelle double, il y a bien les 7 zones (une par appareil + une section en haut et une section en bas).
Pour l'ancien "SU19", appelé maintenant "CLV19", pour "Clavier 19", on a 4 boutons.
Comme il y a 3 appareils à 2 boutons, on gagne 2 boutons, mais on passe de 2^3 = 8 possibilités à 4 seulement.
Je vais maintenant expliquer, dans le détail, ce que j'ai compris de ton programme.==> une hashtable c'est un ensemble de clé/valeur, les clés ne peuvent pas êtres nulle, les valeurs oui mais cela n'a pas grand intérêt. Ici on s'en sert pour associer un nom (string) a une instance, par exemple associer au nom d'une zone à son instance.
Tu utilises HashMap, ce qui permet de gérer des valeurs nulles.
On démarre dans le simple avec des zones qui ne gèrent que des signaux, pairs et impairs.==> je ne comprends pas bien ce que tu veux dire, les hashmap utilisent des clés et des valeurs non nulles.
On lit l'objet "json", globalement.
On définit l'objet "zones", l'une des clés. Puis les autres objets (signaux, …).
Si j'ai bien compris, on devra citer tous les objets dans le JSON car HashMap n'accepte qu'une clé nulle. Mais leur valeur pourra être nulle.
Dit autrement, je devrai avoir une clé "itinéraire", même si je ne les définis pas. Cela explique peut-être pourquoi ça plantait.
Puis tu définis la HashMap "tableZones".==> tout à fait
Si j'ai bien compris, la clé est une variable de type String, et la valeur est un objet "zone".
Puis tu fais une boucle forall. Après, la syntaxe est plus floue…==> on balaye le Json pour obtenir tous les noms des zones (string).
Tu balaie toutes les clés des zones en mettant en String le nom des zones ?
Le reste de la boucle est clair :==> null c'est la valeur par défaut si on ne trouve pas la clé "signI" dans le Json de la zone concernée.
On crée une nouvelle zone.
On ajoute à TableZones un couple (z, zone), z étant une String, celle du balayage, et une zone vide en valeur.
Pareil pour TableSignaux avec un couple (z, signal).
Démarre la phase 2.
On rebalaie toutes les zones.
Là, j'ai encore un problème de syntaxe avec getString("signI", null). Je ne vois pas d'où sort le null.
Après, c'est clair : tu définis la zone, fonction de z, et tu remplis signalI et signalP==> c'est vrai que ce sera plus difficile, mais le choix était volontaire.
C'est une bonne idée d'avoir démarré par une zone et les signaux, car il n'y a que des objets. Quand on arrivera aux ArrayList, ça va être plus coton.
Dans les exemples donnés, les zones ont les bons numéros, les bons paramètres, mais j'ai pris "au pif" des numéros de Su. C'est un exemple.Tes su c'est des appareils de voie, on pourrait les appeler appareils ?
A part ça, je suis désolé : je ne sais pas instancier des zones en les remplissant à partir du JSON.