JMRI: Scripting Examples

## JMRI: Exemples de scripts

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.

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.

Pour parcourir l'ensemble le plus courant de scripts, s'il vous plaît voir le répertoire jython sur le site Web JMRI.

AD4OnOff.py

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

AddButton.py

Exemple de script pour ajouter un bouton à la fenêtre de l'application principale JMRI qui charge un fichier de script

AlarmClock.py

Ceci est un exemple de script d'une sortie d'impulsion basée sur une horloge rapide.

AppleScript.py

Ceci est un exemple de script permettant d'invoquer une AppleScript à partir JMRI sous Mac OS X.

AutomatonExample.py

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.

BackAndForth.py

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.

BackAndForthTimed.py

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.

CanExample.py

Exemple de script pour montrer comment envoyer et recevoir des Trames CAN

ControlPanel.py

Exemple de script pour montrer un ensemble de JButton qui affiche/cache les fenêtres panneau lorsque vous cliquez dessus.

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.

DebounceSensor.py

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.

DecoderPro.py

Code Python pour lancer une application DecoderPro, complète avec barre de menu

DisableOpsMode.py

Exemple de script pour naviguer à travers l'interface graphique et désactiver le bouton Mode Ops sur la fenêtre principale DecoderPro.

InitTurnouts.py

Exemple de script montrant comment initialiser les aiguillages basés sur l'état de leurs capteurs d'entrée (par exemple Rétro-signalisation)

Ceci est particulièrement utile pour un système C/MRI, où les aiguillages doivent être fixés à un état particulier rapidement

JButtonComplexExample.py

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

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 .

JButtonExample.py

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

jmri_defaults.py

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

PanelPro.py

Code Python pour lancer une application PanelPro, complète avec barre de menu

ListenerExample.py

Par exemple d'un écouteur d'événements pour une classe JMRI, dans ce cas, un aiguillage.

LnPowerButton.py

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?\

LnSendTool.py

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

LocoTest.py

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

MemorySiglet.py

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

NSelectorExample.py

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.

NumberInput.py

Remplissez un mémoire avec un nombre à deux chiffres, en utilisant 10 capteurs comme des entrées digitales

OpsProgExample.py

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.

ParallelPortTest.py

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

PM4Announce.py

Essayez d'envoyer des octets sur un port parallèle

ParallelPortTurnouts.py

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

PM4Announce.py

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.

PocketTesterExample.py

Exemple d'un écouteur d'événements pour un PocketTester PRICOM

PowerSensor.py

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.

RailDriver.py

Connectez un pupitre RailDriver moderne (périphérique USB) pour un régulateur.

ReporterFontControl.py

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.

ReporterFormatter.py

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 cantons, et écrit cette liste dans une mémoire pour l'affichage.

RobotThrottle.py

Ce script fait rouler une loco autour du réseau, contrôle la vitesse en fonction des signaux et en suivant les cantons.

RosterLoop.py

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.

RpsRaceTrack.py

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.

SampleLnStats.py

Ceci est un script pour les échantillons statistiques LocoNet une fois par minute et les imprime

SampleSound.py

Ceci est un exemple de script pour jouer un son dans un script JMRI

SensorLog.py

écoutez tous les capteurs, impression d'une ligne quand ils changent d'état.

capteur sound.py

Attend que capteur spécifique (capteur n°4), joue un son de portail traversé quand le train entre sur le cantons.

SetTurnouts.py

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

ShutDownExample.py

Horaire de quelque chose qui se produit lorsque une application JMRI se termine

SigletExample.py

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

ThrottleSound.py

Jouer un son lorsque la touche F3 est enfoncée sur la manette portable de poche et loco 1001 sélectionnée.

TurnoutReset.py

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.

TwoOutputTurnouts.py

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 .

USBThrottle.py

utiliser un périphérique USB comme un régulateur

Javaone

Ce répertoire contient les scripts qui ont d'abord été créés pour les tests JavaOne du réseau.