Info sur JMRI:
Outils de Développement
Structure
Techniques et Standards
Comment Faire
Infos Fonctionnelles
Contexte Infos

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 .
  1. 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.
  2. 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.
  3. ultérieurement, après que le port soit (espérons le) en place, AbstractConnectionConfigXml invoque la méthode de configuration() de l'Adaptateur.
  4. 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 )
    1. configurez Paketiser/port/etc en fonction des besoins
    2. configureCommandStation() à partir LnPortController
    3. configureManagers() à partir LnPortController, mais par exemple de substitution dans PR3Adapter.
    4. faire toute autre initialisation de son propre chef, par exemple StartThreads()

      À ce stade, le système est fondamentalement prêt à fonctionner.

    5. Enfin,un objet jmri.jmrix.loconet.LocoNetSystemConnectionMemo est créé et enregistré avec le InstanceManager.
  5. Plus tard, jmri.jmrix.ActiveSystemsMenu et/ou jmri.jmrix.SystemsMenu veulent créer des menus utilisateur, et trouve l'objet LocoNetSystemConnectionMemo dans l'InstanceManager
  6. 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
  7. 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:
  1. Le gestionnaire Basique doit avoir getSystemPrefix en plus de la lettre
  2. 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