JMRI: Structure du Système
Historiquement, les systèmes ne sont pas disposés de cette façon, de sorte que le
code existant peut ne pas être un bon exemple.
Vouloir exposer très peu au-dessus du paquet jmrix.
Le Noyau de base est le code de communication, souvent un "trafficmanager"
Les outils doivent aller dans un sous-ensemble Swing
Les types de connexion spécifiques pour un seul protocole peuvent aller dans des
sous-répertoires.
Rôle de ConnectionConfig, SystemConnectionMemo
ActiveFlag obsolète
Voir aussi la page
Mettre à jour ces Connexions Multiples.
Séquence d'Initialisation
Cette section décrit la mise en oeuvre de la nouvelle configuration système de LocoNet (2010)
. "NN" se réfère à par exemple le locobuffer, ou pr3 ou, classe de
connexion spécifique similaire .
- jmri.jmrix.loconet.NN.configurexml.ConnectionConfigXml est invoqué
par le mécanisme de configurexml lorsque la classe spécifique est nommée dans un
fichier d'entrée XML.
- L'objet ConnectionConfigXml
est un descendant de la classe jmri.jmrix.configurexml.AbstractConnectionConfigXml,
qui invoque la méthode getInstance () de celui-ci (et non la méthode statique)
dans sa méthode de chargement () pour charger la variable "adaptateur" avec un membre
* Adaptateur spécifique de classe, par exemple, MS100Adapter.
- ultérieurement, après que le port soit (espérons le) en place,
AbstractConnectionConfigXml invoque la méthode de configuration() de l'Adaptateur.
- Que la méthode de configuration () de l'Adaptateur fait, dans l'ordre
(ce qui a été remaniée dans LocoNetSystemConnectionMemo
lui-même, de sorte que cette liste doit être réorganisée )
- configurez Paketiser/port/etc en fonction des besoins
- configureCommandStation() à partir LnPortController
- configureManagers() à partir LnPortController,
mais par exemple de substitution dans PR3Adapter.
- faire toute autre initialisation de son propre chef, par exemple StartThreads()
À ce stade, le système est fondamentalement prêt à fonctionner.
- Enfin,un objet jmri.jmrix.loconet.LocoNetSystemConnectionMemo
est créé et enregistré avec le InstanceManager.
- Plus tard, jmri.jmrix.ActiveSystemsMenu et/ou jmri.jmrix.SystemsMenu
veulent créer des menus utilisateur, et trouve l'objet LocoNetSystemConnectionMemo
dans l'InstanceManager
- Le code menu demande l'objet spécifique SystemConnectionMemo
pour créer et retourner le menu. Il le fait, dans le processus
reliant chaque action à lui-même de telle sorte que les différents outils
seront en mesure de se connecter au bon, par exemple: TrafficController,
SlotMonitor, etc
- Quand une Action est déclenchée par la suite, la(es) classe(s) invoquée (es) se renseignent auprès
de LocoNetSystemConnectionMemo quand elles ont besoin d'une ressource,
au lieu de se référer à un exemple () dans la classe de
ressource.
Pour adapter un type, par exemple, Aiguillage:
- Le gestionnaire Basique doit avoir getSystemPrefix en plus de la lettre
- ProxyManager doit vérifier le préfixe du système, pas la lettre
Démarrage de l'Application
La classe apps.SampleMinimalProgram fournit un exemple minimale de démarrage d'un programme
qui utilise JMRI. Il obtient une configuration codée du réseau. Voir les commentaires
internes pour plus de détails.
Les applications JMRI elles-mêmes utilisent un méchanisme "profile" plus puissant
qui a hérité des classes apps.Apps et apps.AppsBase.