Voir les contributions

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.


Messages - DDEFF

Pages: [1] 2 3 ... 55
1
Vos projets / Re : Projet partagé d'un gestionnaire de réseau
« le: mai 02, 2025, 10:14:18 am »
Bonjour,

Some news : je suis en train de modifier l'éditeur de façon à ce que le JSON soit cohérent avec ce qu'on a dit précédemment.
On a maintenant 30 moteurs, mais seulement 14 appareils pour ce que j'appellerai maintenant le Locoduinodrome 3 (en PJ).
Je vous en dirai plus bientôt.

Denis :P

PS : la bretelle et les bretelles doubles sont là pour un réseau d'essai. La SNCF n'aurait jamais mis ces bretelles à ces endroits. Mais il fallait bien les mettre quelque part...

2
Vos projets / Re : Projet partagé d'un gestionnaire de réseau
« le: avril 23, 2025, 11:53:44 am »
Bien sûr.
La raison pour laquelle je faisais ça, c'est que je pensais utiliser des StringList au lieu d'ArrayList.
Sauf que, je viens de regarder : C'est JsonArray. Donc, on n'a pas le choix.

Denis :P

3
Vos projets / Re : Projet partagé d'un gestionnaire de réseau
« le: avril 23, 2025, 09:22:33 am »
Bonjour,

Quand je regarde la programmation avec les nouveaux appareils, je me rends compte qu'il y a plus d'homogénéité dans la description du réseau.
Du côté des zones, pour les voisins, on a :
     - soit une zone seule (ex : "voisP" : "Z220",)
     - soit 2 ArrayList dans une ArrayList (ex : "voisI" : [["Z221","a600","2"],["Z231","a600","0"]],)

Dans chaque ArrayList, les éléments sont toujours les mêmes :
     - un nom de zone
     - un nom d'appareil
     - un numéro de liste
C'est très régulier.

Du côté de l'appareil, on a, pour la liste, une ArrayList contenant plusieurs ArrayList.
Chacune de ces ArrayList a une structure répétitive : un numéro de moteur + (gauche ou droite).

Cette régularité doit simplifier la programmation de la lecture du JSON.

Denis :P

4
Vos projets / Re : Projet partagé d'un gestionnaire de réseau
« le: avril 22, 2025, 03:41:15 pm »
En PRS, il faut découper au maximum et c'est très luxueux.
Évidement, en PRA, on peut regrouper les zones.

Et je suis d'accord que les signaux C11 et C13 sont très très luxueux.
C'est un réseau d'essais et je voulais caser une bretelle double, elle même très luxueuse.

Denis :P


5
Vos projets / Re : Projet partagé d'un gestionnaire de réseau
« le: avril 22, 2025, 01:54:16 pm »
Le fait qu'on travaille avec des itinéraires ne change pas le fait que si on a plus d'appareils, ayant chacun plus de positions, on allonge le temps de traitement.

Dans la liste des appareils, il faut ajouter la bretelle double.

En PJ, le plan d'une bretelle double.

Voici ma façon de décrire ça :
(j'ai viré les balises et la parité, pour l'instant, et chaque moteur d'aiguille a, comme numéro, son numéro de zone)

"appareils" : {
            "a600" : {
                     "nom" : "a600",
                     "type" : "bretelle double",
                     "liste" : [["a60", "droite", "a63", "droite", "a66", "droite"],
                               ["a64", "gauche", "a63", "gauche", "a62", "gauche"],
                               ["a60", "gauche", "a62", "droite", "a64", "droite", "a66", "gauche"]],
                      "no" : 8
            }
},
"zones" : {
            "Z60" : {
                    "nom" : "Z60",
                    "voisP" : "Z220",
                    "voisI" : [["Z221","a600","2"],["Z231","a600","0"]],
                    "no" : 48
            },
            "Z61" : {
                    "nom" : "Z61",
                    "signI" : "C11",
                    "voisP" : "Z62",
                    "voisI" : "Z60",
                    "no" : 49
            },
            "Z62" : {
                    "nom" : "Z62",
                    "voisP" : "Z221",
                    "voisI" : [["Z220","a600","2"],["Z230","a600","1"]],
                    "no" : 50
            },
            "Z63" : {
                    "nom" : "Z63",
                    "voisP" : [["Z60","a600","0"],["Z64","a600","1"]],
                    "voisI" : [["Z66","a600","0"],["Z62","a600","1"]],
                    "no" : 51
            },
            "Z64" : {
                    "nom" : "Z64",
                    "voisP" : "Z230",
                    "voisI" : [["Z65","a600","2"],["Z63","a600","1"]],
                    "no" : 52
            },
            "Z65" : {
                    "nom" : "Z65",
                    "signI" : "C13",
                    "voisP" : "Z66",
                    "voisI" : "Z64",
                    "no" : 53
            },
            "Z66" : {
                    "nom" : "Z66",
                    "voisP" : "Z231",
                    "voisI" : [["Z230","a600","2"],["Z220","a600","0"]],
                    "no" : 54
            },
            "Z220" : {
                    "nom" : "Z220",
                    "signI" : "C15",
                    "voisP" : "Z60",
                    "voisI" : ["Z24"],
                    "no" : 57
            },
            "Z221" : {
                    "nom" : "Z221",
                    "signI" : "C17",
                    "voisP" : "Z35",
                    "voisI" : "Z62",
                    "no" : 58
            },
            "Z230" : {
                    "nom" : "Z230",
                    "signI" : "C19",
                    "voisP" : "Z64",
                    "voisI" : "Z24",
                    "no" : 59
            },
            "Z231" : {
                    "nom" : "Z231",
                    "signI" : "C21",
                    "voisP" : "Z35",
                    "voisI" : "Z66",
                    "no" : 60
            },
    },


Denis :P

6
Vos projets / Re : Projet partagé d'un gestionnaire de réseau
« le: avril 22, 2025, 10:48:43 am »
Citer
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.

==> je ne comprends pas bien ce que tu veux dire, les hashmap utilisent des clés et des valeurs non nulles.

Dans ton "lecture_json()" du précédent programme, tu attendais des clés "itineraires", "auts", "trains" qui ne figurent pas dons mon JSON.
Donc, ce sont des clés de valeur nulle et il n'a pas aimé...
Dit autrement, il faut que dans mon JSON, je mette aussi ces clés, quitte à ce qu'elles soient vides.

Denis :P

7
Vos projets / Re : Projet partagé d'un gestionnaire de réseau
« le: avril 22, 2025, 09:16:03 am »
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.

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.

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".

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…
Tu balaie toutes les clés des zones en mettant en String le nom des zones ?

Le reste de la boucle est clair :
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 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.

Merci Pierre

Denis :P

8
Vos projets / Re : Projet partagé d'un gestionnaire de réseau
« le: avril 21, 2025, 05:22:46 pm »
Non, Z2, c'est Z2, Z6, c'est Z6 et Z39, c'est Z39. On détecte la présence dans chacune des zones, indépendamment, comme avant.

On  a 3 moteurs : a13, a15 et a16.

Et, pour commander ces moteurs, on a SU19. SU19 ne correspond à aucune zone. C'est simplement une liste de positions de moteurs.

On n'a pas, comme avant, une zone ET un moteur dans un appareil. On a d'un côté des zones avec une détection de présence, des voisins, mais pas de moteurs.

Et on a, par ailleurs, des moteurs dont la liste des positions est dans SU19. Ces positions permettent de relier des zones.

Denis :P


9
Vos projets / Re : Projet partagé d'un gestionnaire de réseau
« le: avril 21, 2025, 04:48:34 pm »
Pourquoi appairée ? Je ne parle jamais de bretelles.

SU19 a 4 positions, donc 4 listes :
"Z2" : {
                    "nom" : "Z2",
                    "voisP" : "Z3",
                    "voisI" : [["Z1","Su19","1","999"],["Z400","Su19","2","999"]],
                    "no" : 2
            },
            "Z6" : {
                    "nom" : "Z6",
                    "voisP" : "Z400",
                    "voisI" : [["Z7","Su19","2","999"],["Z3","Su19","3","999"]],
                    "no" : 6
            },
            "Z39" : {
                    "nom" : "Z39",
                    "voisP" : "Z7",
                    "voisI" : [["Z500","Su19","0","999"],["Z4","Su19","3","999"]],
                    "no" : 37
            },
Avec :
"Su19" : {
"nom" : "Su19",
"positions" : [["a13", "gauche"],["a15", "droite"],
                      [["a13", "gauche"],["a15", "gauche"],["a16", "gauche"]],
                      [["a13", "droite"],["a15", "droite"],["a16", "droite"]]]
"no", 28
},
On définit bien un voisP et un voisI pour chaque zone concernée, sans problème.

Denis :P

10
Vos projets / Re : Projet partagé d'un gestionnaire de réseau
« le: avril 21, 2025, 04:27:57 pm »
Citer
Concernant les appareils, une aiguille ne peut appartenir qu'a une seule bretelle !

Entièrement d'accord. C'est pour ça que je ne parle plus de bretelles.
Un appareil à une liste de positions. Point.

Et tu admettras que si on a a15 G et a16 G, il vaut mieux qu'on ait a13 G. Et si on a a16 D et a13 D, il vaut mieux qu'on ait a15 D.

Denis :P

11
Vos projets / Re : Projet partagé d'un gestionnaire de réseau
« le: avril 21, 2025, 11:11:50 am »
Bonjour,

Voilà les dessins correspondants.
Il y a Su19 qui reprend 3 appareils, avec seulement 4 boutons (= 4 positions pour le gestionnaire).
Il y a toujours 3 zones.

Ce qu'on appelait "aiguillages" chez toi et "appareils" chez moi s'appelle maintenant "moteurs". J'ai représenté des solénoïdes, mais ça pourrait très bien être des servos.
Et, effectivement, l'appellation "appareils" étant libre maintenant, on pourrait appeler ça des "appareils".
Il n'y a plus de "bretelles" car elles ont intégrées dans les "appareils".
Il faut refaire l'éditeur pour mettre ça en forme. Ça doit rester automatique.

Pour les instanciations, si ça n'est pas évident pour toi, imagine pour moi...

Denis :P

12
Vos projets / Re : Projet partagé d'un gestionnaire de réseau
« le: avril 20, 2025, 07:05:53 pm »
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.

A part ça, je suis désolé : je ne sais pas instancier des zones en les remplissant à partir du JSON.

Denis :P

13
Vos projets / Re : Projet partagé d'un gestionnaire de réseau
« le: avril 20, 2025, 04:41:47 pm »
En fait, en analysant mieux les problèmes, je propose de diminuer le nombre d'objets dans le gestionnaire, ce qui diminue la taille du JSON, par voie de conséquence.

Qu'est ce qu'un "super-appareil" ?

C'est une liste de positions de lames d'appareils de voie.
Cette liste est optimisée, réduite aux seules positions constructives et améliorant la sécurité.
Cette liste peut concerner plusieurs appareils de voie simples.
Une position correspond à un bouton sur le TCO.
Je noterai SU le super-appareil, pour plus de simplicité d'écriture.

1°) Aiguillage :
C'est le SU le plus simple, avec seulement 2 positions : gauche et droite.
2°) Traversée simple :
Lui aussi a 2 positions, virtuelles (tout droit 1 et tout droit 2)
3°) TJS :
SU à 3 positions (tout droit 1, tout droit 2 et dévié).
Cela correspond au câblage où 3 boutons suffisent (avec des diodes)
4°) TJD :
SU à 4 positions.
5°) Triple
SU à 3 positions
6°) Bretelle simple :
SU à 2 positions, concernant 2 aiguillages. Il n'y a même pas besoin de diodes.
7°) Bretelle double :
SU à 3 positions, concernant 4 aiguillages
8°) Triple + bretelle :
Qu'il y ait une ou 2 bretelles simples impliquant un triple, il n'y a que 3 positions.

Ma proposition est la suivante :

1°) On renomme la partie "appareils" en "moteurs" : c'est la liste des moteurs d'aiguille
2°) On supprime la partie "bretelles"
3°) Dans la partie "zones", on définit les VoisP et VoisI en indiquant la position du SU correspondant
4°) Dans la partie "Super-appareils", on définit une liste de positions possibles.
Exemples d'applications sur le réseau de test :
---------------------------------------------------------------------------------
Z24 avant :
            "Z24" : {
                    "nom" : "Z24",
                    "voisP" : "Z25",
                    "voisI" : [["Z220","a18","gauche","999"],["Z230","a18","droite","999"]],
                    "no" : 22
            },
Z24 après :
            "Z24" : {
                    "nom" : "Z24",
                    "voisP" : "Z25",
                    "voisI" : [["Z220","Su18","0","999"],["Z230","Su18","1","999"]],
                    "no" : 22
            },
Quasiment pas de changement pour une aiguille isolée. J'ai pris Su18 au pif, pour l'exemple.
"Su18" : {
"nom" : "Su18",
"positions" : [["a18", "gauche"], ["a18", "droite"]],
"no", 28
},
----------------------------------------------------------------------------------------------
Z2, Z6, Z39 avant :
            "Z2" : {
                    "nom" : "Z2",
                    "voisP" : "Z3",
                    "voisI" : [["Z1","a15","droite","999"],["Z6","a15","gauche","999"]],
                    "no" : 2
            },
            "Z6" : {
                    "nom" : "Z6",
                    "voisP" : "Z400",
                    "voisI" : [["Z39","a16","droite","999"],["Z2","a16","gauche","999"]],
                    "no" : 6
            },
            "Z39" : {
                    "nom" : "Z39",
                    "voisP" : "Z7",
                    "voisI" : [["Z500","a13","gauche","999"],["Z6","a13","droite","999"]],
                    "no" : 37
            },
Et ça devient :
            "Z2" : {
                    "nom" : "Z2",
                    "voisP" : "Z3",
                    "voisI" : [["Z1","Su19","1","999"],["Z400","Su19","2","999"]],
                    "no" : 2
            },
            "Z6" : {
                    "nom" : "Z6",
                    "voisP" : "Z400",
                    "voisI" : [["Z7","Su19","2","999"],["Z3","Su19","3","999"]],
                    "no" : 6
            },
            "Z39" : {
                    "nom" : "Z39",
                    "voisP" : "Z7",
                    "voisI" : [["Z500","Su19","0","999"],["Z4","Su19","3","999"]],
                    "no" : 37
            },
Avec :
"Su19" : {
"nom" : "Su19",
"positions" : [["a13", "gauche"],["a15", "droite"],
                      [["a13", "gauche"],["a15", "gauche"],["a16", "gauche"]],
                      [["a13", "droite"],["a15", "droite"],["a16", "droite"]]]
"no", 28
},
On pourrait trouver ça un peu compliqué, mais on passe de 3 aiguilles (a13, a15 et a16) à un seul SU (Su19) à 4 positions. Notez que les zones voisines ont changé.
Un seul SU, mais 3 zones. Et plus de bretelles.

Denis :P

14
Vos projets / Re : Projet partagé d'un gestionnaire de réseau
« le: avril 18, 2025, 08:16:59 pm »
Pour moi, un super appareil, c'est pour diminuer le nombre d'aiguillages vu du gestionnaire.
Moins d'appareils, c'est une gestion plus rapide.
Sans changer les possibilités du réseau. On retire simplement les configurations de lames qui ne servent pas et qui nuisent à la sécurité.

Denis :P

15
Vos projets / Re : Projet partagé d'un gestionnaire de réseau
« le: avril 18, 2025, 06:13:30 pm »
Pour les super_appareils, l'explication est dans le lexique : comme on regroupe les fils des moteurs d'aiguille pour les commander, on a moins de fils de commande, globalement.
Et ça simplifie le câblage et le gestionnaire.

Les bretelles, elles étaient dans ton JSON et c'est le plus simple des super_appareils : 2 positions pour 2 appareils au lieu de 4.

Pages: [1] 2 3 ... 55