193 lines
8.0 KiB
Plaintext
193 lines
8.0 KiB
Plaintext
<!DOCTYPE html>
|
|
<html lang="fr">
|
|
<head>
|
|
<!-- Copyright Bob Jacobsen, John Plocher 2005, 2006, 2008 -->
|
|
<!-- Translated by Hervé Blorec le 2016/09/09-->
|
|
<title>JMRI: Layout Automation in Java</title>
|
|
|
|
<!--#include virtual="/help/fr/parts/Style.shtml" -->
|
|
</head>
|
|
|
|
<body>
|
|
<!-- Page Body -->
|
|
<!--#include virtual="/help/fr/parts/Header_fr.shtml" -->
|
|
<div id="mBody">
|
|
<!--#include virtual="Sidebar.shtml" -->
|
|
<div id="mainContent">
|
|
<!-- Page Body -->
|
|
|
|
<h2>JMRI: Automatisation Réseau en Java</h2>
|
|
|
|
La bibliothèque JMRI fournit un ensemble puissant d'outils pour
|
|
automatiser votre réseau. Si les outils intégrés à
|
|
<a href="../../apps/PanelPro/PanelPro.shtml"> PanelPro</a> ou les
|
|
<a href="../scripting/index.shtml"> capacités de scripts</a>
|
|
ne sont pas suffisantes pour faire ce que vous voulez, la solution sera d'écrire vous-même vos propres
|
|
programme de commande.
|
|
|
|
<p> 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.</p>
|
|
|
|
<p>
|
|
Notez que vous pouvez aussi écrire votre code d'automatisme en utilisant Jython
|
|
comme <a href="../scripting/index.shtml">"scripts" JMRI </a>.
|
|
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.
|
|
</p>
|
|
|
|
<dl>
|
|
<dt class="left">Introduction</dt>
|
|
<dd class="first">
|
|
<p> La classe"Automat" fournit un moyen facile d'écrire l'automatisation par Java
|
|
pour votre réseau en utilisant JMRI.</p>
|
|
|
|
<p> La classe clé est
|
|
<a href="https://jmri.org/JavaDoc/doc/jmri/jmrit/automat/AbstractAutomaton.html">AbstractAutomaton</a>,
|
|
qui fournit un support de liaison pour simplifier le code d'automatisation personnalisé.</p>
|
|
|
|
<p>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.
|
|
|
|
<p>Il y a plusieurs exemples:</p>
|
|
<ul>
|
|
<li> SampleAutomaton - surveille un capteur, et ajuste l'
|
|
état d'un aiguillage afin qu'il corresponde à l'état du Capteur.</li>
|
|
<li> SampleAutomaton2 - surveille un capteur, et ajuste
|
|
le mouvement d'un décodeur de locomotive utilisant le mode de programmation mode ops
|
|
lorsque l'état du capteur change.</li>
|
|
<li> SampleAutomaton3 - une locomotive fonctionne en avant et en arrière
|
|
sur un morceau de voie en regardant deux capteurs, inversant la locomotive
|
|
quand ils changent d'état.</li>
|
|
</ul>
|
|
|
|
<p>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.</p>
|
|
</dd>
|
|
|
|
<dt class="left">Commande de Locomotives</dt>
|
|
<dd>
|
|
<p class="example">
|
|
// Récupère l'instance du régulateur pour l'"adresse courte" 3 <br>
|
|
throttle = getThrottle (3, false);
|
|
</p>
|
|
|
|
<p> 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.</p>
|
|
</dd>
|
|
|
|
<dt class="left">Interaction avec l'utilisateur</dt>
|
|
<dd>
|
|
<p> 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.</p>
|
|
|
|
<p> Pour faire une boîte de message, vous devez d'abord faire un objet de la classe "MsgFrame":</p>
|
|
<p class="example">
|
|
MsgFrame box = nouveau MsgFrame ();
|
|
</p>
|
|
|
|
<p> (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;. "</p>
|
|
|
|
<p> 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: .
|
|
|
|
<p class="example">
|
|
box.show ("mon texte du message va ici", true);
|
|
</p>
|
|
|
|
<p> 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:</p>
|
|
|
|
<p class="example">
|
|
box.show ("text message d'état", false);
|
|
</p>
|
|
|
|
<p> Si vous avez fait cela, vous pouvez modifier le message avec un autre "show", ou
|
|
vous pouvez faire partir la boîte avec:</p>
|
|
|
|
<p class="example">
|
|
box.hide ();
|
|
</p>
|
|
|
|
<p> 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.</p>
|
|
</dd>
|
|
|
|
<dt class="left">Exécution de Votre Code</dt>
|
|
<dd>
|
|
Il y a deux façons de le faire: Rendre votre code Java disponible pour JMRI et l'appeler.
|
|
<p>
|
|
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:
|
|
|
|
<pre>
|
|
classes/MyCode.class
|
|
</pre>
|
|
|
|
Si vous n'avez pas spécifié de code dans votre paquet, ou
|
|
|
|
<pre>
|
|
classes/MyCode.class
|
|
</pre>
|
|
|
|
ou
|
|
|
|
<pre>
|
|
classes/jmri/jmrit/automat/SampleAutomaton.class
|
|
</pre>
|
|
|
|
comme un exemple de la façon dont le code est stocké dans un package spécifique .
|
|
<p>
|
|
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:
|
|
|
|
<pre>
|
|
MyCode().start()
|
|
</pre>
|
|
|
|
ou
|
|
|
|
<pre>
|
|
import jmri.jmrit.automat
|
|
jmri.jmrit.automat.SampleAutomaton().start()
|
|
</pre>
|
|
|
|
et appuyez sur Executer. La deuxième ligne crée une instance de votre class et lui dit de démarrer une exécution.
|
|
<p>
|
|
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.
|
|
</dd>
|
|
|
|
</dl>
|
|
|
|
<p>Retour à la <a href="index.shtml">page d'Aide Automatisation</a>.</p>
|
|
|
|
<!--#include virtual="/help/fr/parts/Footer_fr.shtml" -->
|
|
</div><!-- closes #mainContent-->
|
|
</div> <!-- closes #mBody-->
|
|
<script src="/js/help.js"></script>
|
|
</body>
|
|
</html>
|