511 lines
21 KiB
Plaintext
511 lines
21 KiB
Plaintext
<!DOCTYPE html>
|
|
<html lang="fr">
|
|
<head>
|
|
<!-- Copyright Bob Jacobsen 2008 -->
|
|
<!-- Updated by Blorec Hervé le 2013-09-26 -->
|
|
|
|
<title>JMRI: Scripting Examples</title>
|
|
<!--#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 -->
|
|
|
|
<h2>JMRI: Exemples de scripts</h2>
|
|
|
|
<p>Les distributions JMRI viennent avec un répertoire
|
|
jython qui contient quelques exemples. Cette page fournit une
|
|
brève description de chacun, copié à
|
|
partir du commentaire dans les scripts eux-mêmes.</p>
|
|
|
|
<p>Pour exécuter ces scripts, lancez DecoderPro ou
|
|
PanelPro (Définir des préférences pour
|
|
"Simulateur LocoNet" pour s'exécuter sans se connecter
|
|
à un réseau), puis sous Panneaux
|
|
sélectionnez Exécuter le script. Maintenant,
|
|
trouver et sélectionnez le fichier de script
|
|
souhaité dans le "jython" dossier du répertoire
|
|
du programme JMRI.</p>
|
|
|
|
<p>Pour parcourir l'ensemble le plus courant de scripts, s'il
|
|
vous plaît voir le <a href=
|
|
"https://jmri.org/jython">répertoire jython</a> sur le
|
|
site Web JMRI.</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/AD4OnOff.py">AD4OnOff.py</a></p>
|
|
|
|
<p>Exemple de script pour montrer comment mettre un bouton
|
|
sur l'écran qui va activer ou désactiver la
|
|
commande locale des décodeurs d'accessoires AD4. Ce
|
|
script a été remplacé par les
|
|
capacités de "verrouillage" de JMRI 1.9.3 et versions
|
|
ultérieures. Vous pouvez directement demander que JMRI
|
|
verrouille/déverrouille un aiguillage via le tableau
|
|
Aiguillage, Itinéraires et Logix</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/AddButton.py">AddButton.py</a></p>
|
|
|
|
<p>Exemple de script pour ajouter un bouton à la
|
|
fenêtre de l'application principale JMRI qui charge un
|
|
fichier de script</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/AddButton.py">AlarmClock.py</a></p>
|
|
|
|
<p>Ceci est un exemple de script d'une sortie d'impulsion
|
|
basée sur une horloge rapide.</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/AppleScript.py">AppleScript.py</a></p>
|
|
|
|
<p>Ceci est un exemple de script permettant d'invoquer une
|
|
AppleScript à partir JMRI sous Mac OS X.</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/AutomatonExample.py">AutomatonExample.py</a></p>
|
|
|
|
<p>Ceci est un exemple de script pour un "Automat" JMRI dans
|
|
Python. Il écoute deux capteurs, la course d'une
|
|
locomotive va-et-vient entre eux par des changements de
|
|
direction quand un capteur détecte la machine. Vous
|
|
avez besoin de régler la vitesse du moteur en
|
|
utilisant un régulateur.</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/BackAndForth.py">BackAndForth.py</a></p>
|
|
|
|
<p>Ceci est un exemple de script pour un "Automat" JMRI dans
|
|
Python. Il est basé sur l'AutomatonExample. Il
|
|
écoute par deux capteurs, la course d'une locomotive
|
|
en va-et-vient entre eux par des changements de direction
|
|
quand un capteur détecte la machine.</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/BackAndForthTimed.py">BackAndForthTimed.py</a></p>
|
|
|
|
<p>Ceci est un exemple de script pour un "Automat" JMRI dans
|
|
Python. Il est basé sur l'AutomatonExample. Il fait
|
|
fonctionner une locomotive en sns inverse après une
|
|
temporisation réglable.</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/CanExample.py">CanExample.py</a></p>
|
|
|
|
<p>Exemple de script pour montrer comment envoyer et recevoir
|
|
des Trames CAN</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/ControlPanel.py">ControlPanel.py</a></p>
|
|
|
|
<p>Exemple de script pour montrer un ensemble de JButton qui
|
|
affiche/cache les fenêtres panneau lorsque vous cliquez
|
|
dessus.</p>
|
|
|
|
<p>Lorsque ce script est exécuté, il trouve
|
|
tous les panneaux ouverts (soit pour PanelEditor ou
|
|
LayoutEditor) et crée une petite fenêtre avec un
|
|
bouton pour chaque panneau. Les boutons sont
|
|
étiquetés avec les noms des panneaux, et il est
|
|
nécessaire que ces noms soient uniques.</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/DebounceSensor.py">DebounceSensor.py</a></p>
|
|
|
|
<p>Ce script gère un capteur interne comme un Version
|
|
antirebond d'un autre capteur. Les retards pour On et pour
|
|
Off peuvent-être spécifiés.</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/DecoderPro.py">DecoderPro.py</a></p>
|
|
|
|
<p>Code Python pour lancer une application DecoderPro,
|
|
complète avec barre de menu</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/DisableOpsMode.py">DisableOpsMode.py</a></p>
|
|
|
|
<p>Exemple de script pour naviguer à travers
|
|
l'interface graphique et désactiver le bouton Mode Ops
|
|
sur la fenêtre principale DecoderPro.</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/InitTurnouts.py">InitTurnouts.py</a></p>
|
|
|
|
<p>Exemple de script montrant comment initialiser les
|
|
aiguillages basés sur l'état de leurs capteurs
|
|
d'entrée (par exemple Rétro-signalisation)</p>
|
|
|
|
<p>Ceci est particulièrement utile pour un
|
|
système C/MRI, où les aiguillages doivent
|
|
être fixés à un état particulier
|
|
rapidement</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/JButtonComplexExample.py">JButtonComplexExample.py</a></p>
|
|
|
|
<p>Exemple de script pour montrer une JFrame de saisie de
|
|
données. L'cadre contient deux JTextFields, et un
|
|
bouton qui est inactif tant qu'aucune donnée n'a
|
|
été saisie. Une fois activé, le bouton
|
|
permet d'imprimer un petit message de diagnostic quand on
|
|
clique dessus. L'instruction print peut être
|
|
modifiée pour y inclure ce que désiré,
|
|
par exemple dévier un aiguillage, programmer un CV,
|
|
etc</p>
|
|
<p>Ce script crée un panneau intitulé
|
|
"saisie des Données" avec deux champs ou les
|
|
données sont saisies. Le script attend que quelque
|
|
chose soit entrée dans les deux champs et permet
|
|
ensuite "Entrer valeurs". Lorsque le bouton "Entrer valeurs"
|
|
est cliqué, il provoque l'affichage des données
|
|
s'affiche sur la console Java et le "Data Entry" du panneau
|
|
de disparaître. Pour voir sur la console Java, vous
|
|
devez ouvrir la console Java ou sélectionnez "sortie
|
|
du script" du "Panneaux" du menu JMRI.</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/JButtonExample.py">JButtonExample.py</a></p>
|
|
|
|
<p>Exemple de script pour montrer un JButton qui imprime un
|
|
petit message lorsque vous cliquez dessus. L'instruction
|
|
print peut être modifiée pour inclure ce que
|
|
vous voulez, par exemple dévier un aiguillage,
|
|
programmer un CV, etc</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/jmri_defaults.py">jmri_defaults.py</a></p>
|
|
|
|
<p>Code Python pour définir des valeurs par
|
|
défaut de JMRI qui suppose que JMRI ait
|
|
déjà été initialisé, donc
|
|
ça peut faire référence à
|
|
différents gestionnaires, etc Ceci est seulement lu
|
|
une fois, lorsque la bibliothèque JMRI exécute
|
|
en premier un script, de sorte que les modifications ne
|
|
prendront effet qu'après le redémarrage du
|
|
programme</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/PanelPro.py">PanelPro.py</a></p>
|
|
|
|
<p>Code Python pour lancer une application PanelPro,
|
|
complète avec barre de menu</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/ListenerExample.py">ListenerExample.py</a></p>
|
|
|
|
<p>Par exemple d'un écouteur
|
|
d'événements pour une classe JMRI, dans ce cas,
|
|
un aiguillage.</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/LnPowerButton.py">LnPowerButton.py</a></p>
|
|
|
|
<p>Exemple de script pour montrer un JButton qui envoie un
|
|
message LocoNet lorsqu'il est cliqué. Dans ce cas, le
|
|
message LocoNet alterne entre "On" et "Off" pour un relais
|
|
PM4. Le relais particulier est adressé par le carte et
|
|
les variables de zone définies dans le code
|
|
ci-dessous. Notez que le message envoyé au PM4 a
|
|
fixé le contenu pour les trois (quatre) autres canaux
|
|
sur la carte. Est-ce que ceci cause un problème dans
|
|
le fonctionnement normal?\</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/LnSendTool.py">LnSendTool.py</a></p>
|
|
|
|
<p>Ce script va envoyer la plupart des commandes loconet de
|
|
type messages. Il s'agit notamment de passer, les
|
|
rétro-signalisations et les messages type de capteur.
|
|
Les paquets de signaux DCC peuvent également
|
|
être envoyés par loconet. Les messages sont
|
|
configurés en utilisant les boutons radio et les
|
|
listes déroulantes. Des portions de ce script sont
|
|
prises à partir de LnPowerButton.py par Bob
|
|
Jacobsen</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/LocoTest.py">LocoTest.py</a></p>
|
|
|
|
<p>Script pour tester une locomotive et un décodeur,
|
|
après l'installation. Il saute un champ pour entrer
|
|
l'adresse de locomotive, et un bouton "Go" . En cliquant sur
|
|
le bouton, il séquences grâce à une
|
|
série d'opérations: F0 on, F0 off, F1 on, F1
|
|
off</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/MemorySiglet.py">MemorySiglet.py</a></p>
|
|
|
|
<p>Ceci est un exemple de script pour un "Siglet" JMRI dans
|
|
Python Il écoute un objet mémoire, et imprime
|
|
le nouvel état sur stdout</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/NSelectorExample.py">NSelectorExample.py</a></p>
|
|
|
|
<p>Ceci est un exemple de script pour mettre un
|
|
Sélecteur "N-way" sur un panneau. Le panneau contient
|
|
des capteurs N (dans cet exemple numérotés 101,
|
|
102, 103). Quand un est cliqué sur le panneau, les
|
|
autres sont obligés d'être inactifs et le
|
|
programme définit les sorties de façon
|
|
appropriée (dans ce cadre le cas des aiguillages 101
|
|
et 102) pour N grand, ce serait mieux fait avec des tableaux
|
|
et des fermetures, mais pour N = 3 une approche directe est
|
|
la meilleure.</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/NumberInput.py">NumberInput.py</a></p>
|
|
|
|
<p>Remplissez un mémoire avec un nombre à deux
|
|
chiffres, en utilisant 10 capteurs comme des entrées
|
|
digitales</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/OpsProgExample.py">OpsProgExample.py</a></p>
|
|
|
|
<p>Cet échantillon Automate montres un capteur, et
|
|
ajuste le mouvement d'une locomotive en utilisant la
|
|
programmation ops mode lorsque l'état du capteur
|
|
change. Le capteur et le décodeur sont non
|
|
modifiables, comme ça c'est juste un exemple de la
|
|
fonction automate. L'ajout d'une interface graphique pour les
|
|
configurer serait directe. Les valeurs peuvent être
|
|
transmises via le constructeur, ou le constructeur (qui peut
|
|
fonctionner dans n'importe quel lien requis) pourrait
|
|
invoquer un dialogue.</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/ParallelPortTest.py">ParallelPortTest.py</a></p>
|
|
|
|
<p>Connect JMRI turnouts to parallel port logic Maps internal
|
|
turnouts to specific values to be send to the parallel port.
|
|
Note that JMRI must be set up to have a valid turnout table;
|
|
if you're not using some other DCC connection, configure JMRI
|
|
to use LocoNet Simulator</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/PM4Announce.py">PM4Announce.py</a></p>
|
|
|
|
<p>Essayez d'envoyer des octets sur un port
|
|
parallèle</p>
|
|
|
|
<p><a href=
|
|
"../../../../../../../ParallelPortTurnouts.py">ParallelPortTurnouts.py</a></p>
|
|
|
|
<p>Connectez des aiguillages JMRI aux ports parallèles
|
|
des Cartes logique des aiguillages internes pour des valeurs
|
|
spécifiques à envoyer sur le port
|
|
parallèle. Notez que JMRI doit être mis en place
|
|
pour avoir un tableau de'aiguillage valide; si vous
|
|
n'utilisez pas plusieurs autres connexi</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/PM4Announce.py">PM4Announce.py</a></p>
|
|
|
|
<p>Exemple de script pour faire une annonce quand une section
|
|
PM4 change d'état. Cela suppose que les sections PM4
|
|
font de courtes protections. S'ils font une inversion
|
|
automatique, vous pouvez changer le message d'annonce
|
|
ci-dessous. En outre, il suppose que seule une PM4 va changer
|
|
à la fois. Notez que l'état
|
|
précédent (variables oldStateN) n'est pas
|
|
maintenue par la carte, mais juste comme une seule copie. Si
|
|
vous voulez suivre l'évolution de plusieurs cartes,
|
|
cela doit devenir une structure plus complexe de
|
|
données qui sont par exemple indexées par
|
|
carte. Notez également que si plusieurs sections
|
|
à la fois et que vous utilisez la commande "parler",
|
|
les annonces peuvent se chevaucher.</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/PocketTesterExample.py">PocketTesterExample.py</a></p>
|
|
|
|
<p>Exemple d'un écouteur d'événements
|
|
pour un PocketTester PRICOM</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/PowerSensor.py">PowerSensor.py</a></p>
|
|
|
|
<p>Fournit un exemple d'écoute de la PowerManager, et
|
|
l'exploitation d'un capteur pour indiquer les changements. Le
|
|
numéro du capteur utilisé pour indiquer
|
|
l'état de l'alimentation est codé en dur
|
|
ci-dessous comme "100". Changer cela si vous souhaitez
|
|
utiliser certains autres capteurs.</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/RailDriver.py">RailDriver.py</a></p>
|
|
|
|
<p>Connectez un pupitre RailDriver moderne
|
|
(périphérique USB) pour un
|
|
régulateur.</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/ReporterFontControl.py">ReporterFontControl.py</a></p>
|
|
|
|
<p>Script pour passer chaque panneau ouvert, descendre dans
|
|
la hiérarchie d'objets et de rechercher tous les
|
|
objets ReporterIcon. Chaque ReporterIcon aura sa taille et sa
|
|
couleur définie tel que spécifié au
|
|
début du script. En plus d'être un outil utile
|
|
en soi, c'est un bon exemple de l'intensification à
|
|
travers la structure objet d'un panneau.</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/ReporterFormatter.py">ReporterFormatter.py</a></p>
|
|
|
|
<p>Fournit un exemple de l'écoute d'un journaliste, et
|
|
mettre les modifications apportées dans une
|
|
mémoire dans un format agréable. Les noms
|
|
Journal et Mémoire sont codées en dur dans
|
|
l'exemple près du fond. Changer ceux-ci pour quelque
|
|
chose qui donne un sens pour votre réseau en premier,
|
|
définir la classe auditeur. Cela obtient les messages
|
|
du journal, les utilise pour garder une trace des
|
|
décodeurs dans un canton, et écrit cette liste
|
|
dans une mémoire pour l'affichage.</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/RobotThrottle.py">RobotThrottle.py</a></p>
|
|
|
|
<p>Ce script fait rouler une loco autour du réseau,
|
|
contrôle la vitesse en fonction des signaux et en
|
|
suivant les cantons.</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/RosterLoop.py">RosterLoop.py</a></p>
|
|
|
|
<p>Exemple de script montrant comment parcourir en boucle le
|
|
fichier entrées. Cet exemple ne fait qu'afficher le
|
|
nom, mais YOUCAN extrait ou utilise d'autres Infos aussi.</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/RpsRaceTrack.py">RpsRaceTrack.py</a></p>
|
|
|
|
<p>Racetrack utilisant les mesure de position RPS donne loco1
|
|
plus rapide, loco2 est plus lente. Lorsque loco1 s'inscrit
|
|
dans dmin = 24 pouces de loco2, il sera: ralenti à 1/4
|
|
de sa vitesse et attendra 6 secondespour revenir à sa
|
|
vitesse originale et vérifiez à nouveau. Ceci
|
|
est basé sur le temps (vérifier chaque 200msec
|
|
), plutôt que des mesure basées (auditeurs) pour
|
|
faciliter le débogage. Le changer plus tard sera
|
|
bon.</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/SampleLnStats.py">SampleLnStats.py</a></p>
|
|
|
|
<p>Ceci est un script pour les échantillons
|
|
statistiques LocoNet une fois par minute et les imprime</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/SampleSound.py">SampleSound.py</a></p>
|
|
|
|
<p>Ceci est un exemple de script pour jouer un son dans un
|
|
script JMRI</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/SensorLog.py">SensorLog.py</a></p>
|
|
|
|
<p>écoutez tous les capteurs, impression d'une ligne
|
|
quand ils changent d'état.</p>
|
|
|
|
<p><a href="../../../../../jython/Sensor-sound.py">capteur
|
|
sound.py</a></p>
|
|
|
|
<p>Attend que capteur spécifique (capteur n°4),
|
|
joue un son de portail traversé quand le train entre
|
|
sur le cantons.</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/SetTurnouts.py">SetTurnouts.py</a></p>
|
|
|
|
<p>Exemple de script montrant comment des aiguillages
|
|
multiples à des positions spécifiques, avec un
|
|
temps de retard entre eux, séparément des
|
|
autres choses que le programme fait. En mettant les commandes
|
|
d'aiguillages dans une classe séparée , ils
|
|
vont fonctionner indépendamment, après le
|
|
"start" opération</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/ShutDownExample.py">ShutDownExample.py</a></p>
|
|
|
|
<p>Horaire de quelque chose qui se produit lorsque une
|
|
application JMRI se termine</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/SigletExample.py">SigletExample.py</a></p>
|
|
|
|
<p>Ceci est un exemple de script pour un JMRI "Siglet" dans
|
|
Python. Il écoute les changements de deux capteurs et
|
|
un aiguillage, puis recalcule un aspect du signal sur la base
|
|
des valeurs</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/ThrottleSound.py">ThrottleSound.py</a></p>
|
|
|
|
<p>Jouer un son lorsque la touche F3 est enfoncée sur
|
|
la manette portable de poche et loco 1001
|
|
sélectionnée.</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/TurnoutReset.py">TurnoutReset.py</a></p>
|
|
|
|
<p>Réinitialiser un aiguillage à Direct
|
|
à chaque fois qu'il est cliqué
|
|
Dévié pourrait être utilisé afin
|
|
que l'icône d'un aiguillage sur un TCO se trouve dans
|
|
une position, prête à être cliquée
|
|
et allumer un itinéraire. Le début du fichier
|
|
définit les codes nécessaires. Il y a quelques
|
|
lignes près du bas, vous devez modifier pour l'adapter
|
|
à votre réseau particulière.</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/TwoOutputTurnouts.py">TwoOutputTurnouts.py</a></p>
|
|
|
|
<p>Piloter un aiguillage depuis deux connexions CMRI.
|
|
Certains Utilisateurs CMRI connectent des aiguillages
|
|
à moteur lent entre les deux sorties CMRI, et puis
|
|
réglez les sorties à des états
|
|
complémentaires (un actif, un inactif) pour conduire
|
|
la machine dans les deux directions. Ce script asservit un
|
|
2ème aiguillage au premier, de sorte que lorsque le
|
|
premier est commandé à un état
|
|
particulier, le deuxième va à utiliser l'autre
|
|
état , modifier le script pour inclure vos aiguillages
|
|
vers le bas (voir l'exemple existant; vous devriez enlever
|
|
ça) alors le sélectionner comme un script
|
|
à exécuter au démarrage des
|
|
"Préférences avancées" sur les la
|
|
fenêtre Préférences, exemple: aiguillages
|
|
à deux connexions CMRI .</p>
|
|
|
|
<p><a href=
|
|
"../../../../../jython/USBThrottle.py">USBThrottle.py</a></p>
|
|
|
|
<p>utiliser un périphérique USB comme un
|
|
régulateur</p>
|
|
|
|
<p><a href="../../../../../jython/JavaOne">Javaone</a></p>
|
|
|
|
<p>Ce répertoire contient les scripts qui ont d'abord
|
|
été créés pour les tests JavaOne
|
|
du réseau.</p>
|
|
|
|
<!--#include virtual="/help/fr/parts/Footer_fr.shtml" -->
|
|
</div>
|
|
</div>
|
|
<script src="/js/help.js"></script>
|
|
</body>
|
|
</html>
|