Cette page décrit les classes Java qui ont en charge l'écriture "Automatisation" JMRI du code en Java. C'est des choses comme les signaux d'exploitation, les trains, et même des choses subtiles comme l'évolution du volume du son du décodeur quand un train passe dans un tunnel.
Notez que vous pouvez aussi écrire votre code d'automatisme en utilisant Jython comme "scripts" JMRI . Pour plusieurs raisons, ceci peut être plus simple parce qu'il plus réactif et a un meilleur support de débogage. Java est réellement le meilleur pour les cas longs et complexes, ou si vous écrivez quelque chose que vous voulez finalement voir contribuer à JMRI lui-même.
La classe"Automat" fournit un moyen facile d'écrire l'automatisation par Java pour votre réseau en utilisant JMRI.
La classe clé est AbstractAutomaton, qui fournit un support de liaison pour simplifier le code d'automatisation personnalisé.
Aspect essentiel: Ceux-ci s'exécutent dans un lien séparé, de sorte qu'ils peuvent attendre que quelque chose se produise pour que le reste du programme continue. Effectivement, chaque Automat est un programme distinct s'exécutant quand il le doit.
Il y a plusieurs exemples:
Notez qu'ils ne peuvent rien faire d'utile sur votre réseau, car ils ont les numéros de Loco qui ne sont pas modifiables. Ils sont censés être des exemples pour votre propre programmation, pas des outils utiles.
// Récupère l'instance du régulateur pour l'"adresse courte" 3
throttle = getThrottle (3, false);
Cet extrait de code assigne "adresse courte 3" à la variable "régulateur" ( le "false" sélectionne l'adresse courte; "true" aurait été pour l'adresse longue). Si cela ne fonctionne pas pour une raison quelconque, vous obtiendrez un message périodique "toujours en attente de régulateur" dans la fenêtre de Java, et le programme attendra.
Vous pouvez mettre en place des boîtes de message directement à partir de Java, mais cela prend un peu de code pour le faire. Pour simplifier, au début, j'ai ajouté une classe d'assistance "MsgFrame" à la bibliothèque JMRI.
Pour faire une boîte de message, vous devez d'abord faire un objet de la classe "MsgFrame":
MsgFrame box = nouveau MsgFrame ();
(Vous pouvez appelez ça comme vous voulez, bien sûr). Cette ligne devrait aller avec les autres déclarations, par exemple à droite après la ligne "DccThrottle throttle= null;. "
Puis, à l'intérieur des routines de test, il y a quelques choses que vous pouvez faire. Pour afficher un message et attendre que l'utilisateur clique sur un bouton "Continuer", faites: .
box.show ("mon texte du message va ici", true);
Le 2ème argument montre le bouton "Continuer" et attend si elle est vraie, et continue si elle est fausse. Donc, si vous souhaitez afficher un message d'état pendant que le programme continue à à se dérouler, faire:
box.show ("text message d'état", false);
Si vous avez fait cela, vous pouvez modifier le message avec un autre "show", ou vous pouvez faire partir la boîte avec:
box.hide ();
Java a fait faire des travaux pour faire apparaître la boîte et la dessiner. Nous ne voulons pas retarder le programme de test principal, donc j'ai écrit cette classe d'aide pour faire tout ce genre de travail en tant que 2ième plus faible priorité. Vous devriez être capable de mettre en place des messages sur l'écran sans ralentir considérablement le fonctionnement (à moins que le programme attende que le bouton "Continuer" soit pressé pour continuer, bien sûr). Et attendre que "Continuer" soit pressé ne fera pas arrêter l'exécution du reste du programme.
La manière la plus simple pour rendre votre code accessible est de faire un fichier .jar et de le placer dans le répertoire "lib" dans le répertoire du programme JMRI. Autrement, vous pouvez créer un répertoire "Classes", et compiler votre class Java à l'intérieur. Dans ce cas, il devrait se retrouver dans:
classes/MyCode.classSi vous n'avez pas spécifié de code dans votre paquet, ou
classes/MyCode.classou
classes/jmri/jmrit/automat/SampleAutomaton.classcomme un exemple de la façon dont le code est stocké dans un package spécifique .
La manière la plus simple pour appeler votre code est d'utiliser le support script de JMRI. Ouvrir une fenêtre Sortie Script ( ainsi vous verrez les erreurs ) depuis le menu Panneaux, puis une fenêtre Entrée Script, entrez:
MyCode().start()ou
import jmri.jmrit.automat jmri.jmrit.automat.SampleAutomaton().start()et appuyez sur Executer. La deuxième ligne crée une instance de votre class et lui dit de démarrer une exécution.
Une fois que vous avez obtenu qu'il travaille, vous pouvez le mettre dans un petit fichier script et l'appeler au démarrage, via un Logix ou autre chose.
Retour à la page d'Aide Automatisation.