77 lines
4.1 KiB
Plaintext
77 lines
4.1 KiB
Plaintext
<!DOCTYPE html>
|
|
<html lang="fr">
|
|
<!-- Updated by Blorec Hervé 2016-08-017-->
|
|
<head>
|
|
<title>JMRI: Liaison</title>
|
|
<meta name="author" content="Bob Jacobsen">
|
|
<meta name="keywords" content="JMRI technical code threading">
|
|
<!--#include virtual="/help/fr/parts/Style.shtml" -->
|
|
</head>
|
|
|
|
<body>
|
|
<!--#include virtual="/help/fr/parts/Header_fr.shtml" -->
|
|
<div id="mBody">
|
|
<!--#include virtual="Sidebar.shtml" -->
|
|
<div id="mainContent">
|
|
<!-- Page Body -->
|
|
|
|
<h1>JMRI: Liaison</h1>
|
|
|
|
<p>La grande majorité des codeurs JMRI (et programmeurs) n'ont pas à
|
|
se soucier des liaisons. Leur code se trouve invoqué, et appelle un autre code,
|
|
et la laison prend soin d'elle-même. Cela est particulièrement vrai pour le code basé sur les événements,
|
|
qui répond à des événements provenant par exemple de l'interface graphique ou du changement d'un objet sur le réseau,
|
|
et appelle des méthodes concernant d'autres objets, qui peuvent à leurs tours créer plus
|
|
d'événements.</p>
|
|
|
|
<p>
|
|
Cette simplicité vient de l'utilisation d'un seul lien pour le traitement de la plupart de l'activité de JMRI: Le fil des événements Java Swing.
|
|
<p>
|
|
Notez que ceci ne signifie <em>pas</em> que d'autres choses ne peuvent pas survenir. Par exemple, ce fragment de script:
|
|
|
|
<pre><code>
|
|
state = sensors.provideSensor("mySensor").getState()<br>
|
|
turnouts.provideTurnout("myTurnout").setState(THROWN)<br>
|
|
print state == sensors.provideSensor("mySensor").getState()<br>
|
|
</code></pre>
|
|
|
|
peut imprimer soit vrai ou faux, parce que car la modification de l'aiguillage <em>peut</em> changer instantanément les capteurs associés.
|
|
|
|
<p>
|
|
Il y a des moments où vous pouvez vouloir faire des choses un peu plus complexes avec l'utilisation d'un lien supplémentaire:
|
|
<ul>
|
|
<li>Vous pouvez vouloir mettre un processus gourmand en temps dans un lien séparé pour garder le reste de JMRI réactif.
|
|
<li>La meilleure manière de coder un l'état d'une machine qui dialogue avec le matériel du réseau pourrait être d'utiliser un lien séparé.
|
|
<li>Vous pourriez être l'interface avec un autre code existant qui utilise des liens
|
|
</ul>
|
|
|
|
Nous préférerions que vous manipuliez les questions de liaison qui se posent dans ce cas par l'intermédiaire de la clase
|
|
<a href="https://jmri.org/JavaDoc/doc/jmri/util/ThreadingUtil.html">jmri.util.ThreadingUtil</a>.
|
|
ThreadingUtil fournit des utilitaires qui rendent cela aisé
|
|
pour appeler les fonctions nécessaire sur le bon lien.
|
|
<p>
|
|
Par exemple, si vous voulez lire un tas de données venant d'un fichier, passer quelque temps à le modifier,
|
|
et puis créer une fenêtre pour le montrer, vous pouvez vouloir faire tout ce travail sur
|
|
un lien séparé. À la fin, quand il est temps de rendre visible votre travail, vous devez
|
|
le faire sur le lien Swing ( GUI ). Voici le code pour le faire:
|
|
<pre>
|
|
frame = new JmriJFrame(); // frame declared as instance variable<br>
|
|
// spend a long time reading data and configuring the frame<br>
|
|
ThreadingUtil.runOnGUI( ()->{ frame.setVisible(); });<br>
|
|
</pre>
|
|
ThreadingUtil sépare les opérations sur le lien GUI ( par ex Java Swing ) et les opérations
|
|
sur le réseau ( ex: Capteurs, Aiguillages, etc ). Il n'y a pas de vrai différence maintenant,
|
|
mais dans l'interêt peut-être d'avoir besoin un jour de les séparer, nous introduisons maintenant
|
|
les deux versions. SVP essayez de choisir la bonne la plupart du temps l'une lors du codage.
|
|
<p>
|
|
( N.B: Vous trouverez beaucoup de cas plus anciens qui utilisent explicitement javax.swing.SwingUtilities.invokeLater( r )
|
|
ou javax.swing.SwingUtilities.invokeAndWait( r ); Ceux-ci seront migrés vers les nouvelles méthodes spécifiques JMRI
|
|
à l'avenir pour garder notre code juste un petit peu plus propre et plus souple.)
|
|
|
|
<!--#include virtual="/help/fr/parts/Footer_fr.shtml" -->
|
|
</div><!-- closes #mainContent-->
|
|
</div> <!-- closes #mBody-->
|
|
<script src="/js/help.js"></script>
|
|
</body>
|
|
</html>
|