JMRI: XML IO Servlet
Le servlet JMRI XML fournit un accès Web bi-directionnel aux services JMRI.Le servlet vit dans le paquet jmri.web.servlet.xmlio , et fournit un accès Web au JMRI XML IO paquet. Par défaut, le serveur web JMRI enverra tout URL qui commence par/xmlio à ce servlet. Il liste tous les éléments connus d'un type spécifié, accepte des changements de la valeur/état des éléments, et répond avec valeur actuelle/état des éléments. Si envoyé une liste d'éléments avec des valeurs actuelles, il "surveillera" les changements de tous ces éléments, retournant les valeurs nouvelles.
Elément types complèments supportés :- alimentation
- aiguillage
- capteurr
- tête signal
- mât signal
- mémoire
- itinéraire
- Liste
- trame
- panneau
- métadata
- Chemin de fer
- Régulateur
- web/request.html
- Rend une seule requête XML pour tous les capteurs disponibles, et montre leur statut dans un tableau.
- web/monitor.html
- utilise les requêtes temporisées pour surveiller l'état de tous les capteurs, la mise à jour d'une table lors de tout changement.
- web/throttle.html
- Envoie une commande de vitesse pour une locomotive DCC sur le réseau quand une touche est enfoncée.
- web/turnoutPanel.html
- Exemple d'un panneau de commande sur une page web.
- web/turnoutMonitor.html
- Table Aiguillage plus complexes, avec des boutons pour mettre un aiguillage dévié ou droit.
- web/JMRI_XMLIO_test.html
- Utile pour envoyer plusieurs commandes au serveur xmlio et voir les réponses.
- web / JMRIMobile.html
- Utile le serveur xmlio pour récupérer des données à partir de JMRI, l'envoi et le suivi des changements des modificationsdes éléments.
S'il vous plaît noter que ce servlet a seulement été utilisé avec le Serveur Web JMRI, et peut ne pas fonctionner avec d'autres conteneurs de servlets. Nous nous sommes engagés à le faire fonctionner, cependant, entrer en contact avec les développeurs JMRI si vous rencontrez des problèmes.
Format Demande
Le schéma XML est défini dans le document schéma xmlio.xsd .Il ya aussi une syntaxe basée sur les attributs disponibles. (voir les exemples de l'état ci-dessous) Le serveur xmlio répond avec la même syntaxe que celle qu'utilise la demande.
Voici quelques exemple des demandes et réponses.
Obtenir le statut des objets individuels
Demande:
<xmlio>
<item>
<type>turnout</type>
<name>IT12</name>
</item>
<item>
<type>sensor</type>
<name>West sensor</name>
</item>
<item>
<type>power</type>
<name>power</name>
</item>
</xmlio>
<xmlio>
<item>
<type>turnout</type>
<name>IT12</name>
<value>2</value>
</item>
<item>
<type>sensor</type>
<name>West sensor</name>
<value>4</value>
</item>
<item>
<type>power</type>
<name>power</name>
<value>2</value>
</item>
</xmlio>
La "valeur" élément est insérée
dans la demande, et puis est retournée comme réponse.
Vous pouvez simplement tourner autour de la réponse et
l'utiliser comme une autre demande. Si la "valeur"
éléments est présente pour tous les articles,
la réponse ne sera restituée que lorsque l'un ou
plusieurs des état de l'élément inclus a
changé pour quelque chose de différent.
Obtenez tous les objets d'un type
Demande:
<xmlio>
<list>
<type>sensor</type>
</list>
</xmlio>
Réponse:
<xmlio>
<item>
<type>sensor</type>
<name>IS1</name>
<value>2</value>
</item>
<item>
<type>sensor</type>
<name>IS2</name>
<value>4</value>
</item>
<item>
<type>sensor</type>
<name>West sensor</name>
<value>2</value>
</item>
</xmlio>
La réponse peut être retournée et
utilisée comme la prochaine requête.
Régler le statut d'un objet
Demande:
<xmlio>
<item>
<type>turnout</type>
<name>IT12</name>
<set>2</set>
</item>
</xmlio>
Réponse:
<xmlio>
<item>
<type>turnout</type>
<name>IT12</name>
<value>2</value>
</item>
</xmlio>
L'élément "set" de la demande résulte de
l'état fixé à la valeur donnée, et puis
est retournée dans la réponse comme un
élément de valeur avec la valeur correcte à ce
point.
Toutes les écritures sont faites avant que les valeurs soient recueillies pour toute lecture, mais il n'y a aucune garantie que les conséquences de l'écrit soient propagées complètement.
Définir le statut d'un objet (syntaxe basée sur les attributs)
Contrôle un régulateur
Demande:<turnout name="IT12" set="2" />Réponse:
<turnout name="IT12" value="2" />Un élément peut être utilisé pour contrôler un régulateur via le ThrottleManager DCC par défaut. La première utilisation alloue le régulateur, et tous les postérieurs utilisent les attributs présents:
<xmlio>
<throttle>
<adresse> 1234</address>
<vitesse> 0,75</vitesse>
<forward> true</forward>
<F3> False</F3>
</throttle>
</Xmlio>
Un élément régulateur est retourné inchangé.
Documents associés
C.F. K H Wolf, K Froitzheim, M Weber, Department of Distributed
Systems, Université d'Ulm, "Interactive Video and
Remote Control via the World Wide Web", dans "Lecture Notes
in Computer Science", Springer, Berlin, 1996.
Auparavant dans le volume 7, numéro 5 de "Märklin
Digital Newsletter", Dr T. Catherall Ed, Septembre/Octobre
1995,
Page référencée
réhébergée.