Table of Contents
XML-Script-Beispiele
- Aktionen definieren | Aktions-Steuerung | Aktions-Bedingung | XML-Skripte | Beispiele | Beispiel 2 Bahnübergang
Befehls-Übersicht: Befehle
Befehls-Beispiele
Zu tun: Beispiele im Wiki-Quelltext mit doppelten % -Zeichen beginnen und beenden. Falsch: <lc id="test"/> Richtig: <lc id="test"/> |
Für Beispiele bis 26.08.2015 21:19 erledigt. RainerK |
Lok-Befehle
Innerhalb <foreach>-Tabellen-Schleifen (Keine Kennung erforderlich, ist für alles mit passenden Bedingungen) | Innerhalb <if> oder als Einzel-Befehl außerhalb von Schleifen (Kennung ist erforderlich) | Hinweise |
---|---|---|
<lc cmd="gotoblock" blockid="Sbf"/> | <lc id="V200" cmd="gotoblock" blockid="Sbf"/> | Setzt den Ziel-Block "Sbf" |
<lc cmd="useschedule" scheduleid="Nirvana"/> | <lc id="V200" cmd="useschedule" scheduleid="Nirvana"/> | Setzt den Fahrplan auf "Nirvana" |
<lc cmd="go"/> | <lc id="@loco" cmd="stop"/> | Lok starten/stoppen |
<lc cmd="gotoblock" blockid="@var6"/> | <lc id="V200" cmd="gotoblock" blockid="@var6"/> | Setzt den Ziel-Block auf den var6-Text |
<lc cmd="gotoblock" blockid="$tx1"/> | <lc id="V200" cmd="gotoblock" blockid="$tx1"/> | Setzt den Ziel-Block auf den tx1-Textfeld-Text |
<lc cmd="useschedule" scheduleid="@var6"/> | <lc id="V200" cmd="useschedule" scheduleid="@var6"/> | Setzt den Fahrplan auf den var6-Text |
<lc cmd="useschedule" scheduleid="$tx1"/> | <lc id="V200" cmd="useschedule" scheduleid="$tx1"/> | Setzt den Fahrplan auf tx1-Textfeld-Text |
<lc cmd="go"/> | <lc id="@var6" cmd="stop"/> or <lc id="$tx1" cmd="stop"/> | Lok @var6 oder Lok $tx1 starten/stoppen |
<lc cmd="velocity" v="5"/> | <lc id="V200" cmd="velocity" v="5"/> | Setzt die Geschwindigkeit auf 5 |
nicht verfügbar (Es kann nur eine Lok im Block sein) | <lc id="loco1" cmd="block" blockid="b1"/> | Setzt die Lok mit Kennung loco1 in den Block "b1" |
nicht verfügbar (Es kann nur eine Lok im Block sein) | <lc bkid="bk1" ... /> oder <lc bkid="@var6" ... /> oder <lc bkid="$tx1" ... /> | lcid der Lok in Block bk1 / @var6 (Variablentext) / $tx1 (Textfeldtext) |
<fn fnchanged="3" f3="true"/> | <fn id="loco1" fnchanged="3" f3="true"/> | Funktionen true/false |
Befehle: go, stop, velocity, velocity2, percent dispatch, swap, blockside, carcount, min, mid, cruise, max, consist, assigntrain, releasetrain, binstate_on, binstate_off, class, x-go, pomwrite
Variable
Innerhalb <foreach>-Tabellen-Schleifen (Sub-Kennung erforderlich, ist für alles mit passenden Bedingungen) | Innerhalb <if> (Kennung ist erforderlich) | Hinweise |
---|---|---|
<vr id="var2%oid%" text="empty"/> | <vr id="var2" text="empty"/> | Setzt den Text einer Variablen |
<vr id="var2%oid%" value="0"/> | <vr id="var2" value="0"/> | Setzt den Wert einer Variablen |
<vr id="var1%oid%" value="4711" text="empty"/> | <vr id="var1" value="4711" text="empty"/> | Setzt den Wert und Text von var1 |
<vr id="var3%oid%" value="#var3 + #var5"/> | <vr id="var3" value="#var3 + #var5"/> | Addiert den Wert von var5 zu var3 |
<vr id="var2%oid%" value="#var2%oid% + 4"/> | <vr id="var2" value="#var2 + 4"/> | Erhöht den Wert einer Variablen um 4 |
<vr id="var2%oid%" min="10" max="100" cmd="random"/> | <vr id="var2" min="10" max="100" cmd="random"/> | Setzt den Wert von var2 auf einen Zufallswert zwischen min und max |
<vr id="var2%oid%" cmd="start"/> | <vr id="var2" cmd="start"/> | Startet/stoppt den Zeitgeber von var2 |
<vr id="var3%oid%" text="$tx1"/> | <vr id="var3" text="$tx1"/> | Der Text von var3 erhält den Text des Textobjekts tx1 |
Klassen
Innerhalb <foreach>-Tabellen-Schleifen (Keine Kennung erforderlich, ist für alles mit passenden Bedingungen) | Innerhalb <if> (Kennung ist erforderlich) | Hinweise |
---|---|---|
<lc cmd="classset" class="AB,DD"/> | <lc id="loco" cmd="classset" class="AB,DD"/> | Setzt die Lok-Klasse auf AB,DD |
<lc cmd="classset" class="AB,DD"/> | <lc id="@var6" cmd="classset" class="AB,DD"/> | Setzt die Lok-Klasse (Variable des var6-Text) auf AB,DD |
<bk cmd="classdel" class="AB"/> | <bk id="4711" cmd="classdel" class="AB"/> | Löscht die Blockklasse AB |
<bk cmd="classdel" class="AB"/> | <bk id="$tx1" cmd="classdel" class="AB"/> | Löscht die Blockklasse AB (Variable des tx1-Textfelds) |
<bk cmd="classadd" class="CD,EE1"/> | <bk id="4711" cmd="classadd" class="CD,EE1"/> | Fügt die Blockklasse hinzu CD,EE1 |
Blöcke
Innerhalb <foreach>-Tabellen-Schleifen (Keine Kennung erforderlich, ist für alles mit passenden Bedingungen) | Innerhalb <if> (Kennung ist erforderlich) | Hinweise |
---|---|---|
Nicht verfügbar (Ein Block kann nur für eine Lok reserviert werden) | <bk id="b2" cmd="reserve" lcid="loco1"/> | Reserviert den Block b2 für die Lok loco1 |
Rückmelder
Innerhalb <foreach>-Tabellen-Schleifen (Keine Kennung erforderlich, ist für alles mit passenden Bedingungen) | Innerhalb <if> (Kennung ist erforderlich) | Hinweise |
---|---|---|
Verfügbarkeit muss noch geklärt werden | <fb id="fb1" cmd="on"/> | Setzt den Rückmelder-Status |
Textfelder
Innerhalb <foreach>-Tabellen-Schleifen (Keine Kennung erforderlich, ist für alles) | Innerhalb <if> (Kennung ist erforderlich) | Hinweise |
---|---|---|
nicht verfügbar (Ändern eines Textfeldes innerhalb einer Schleife ist sinnlos ) | <tx id="tx1" format="var1 is #var1 @var1"/> | Aktualisiert den Text von tx1 mit dem Wert and Text von var1 |
Pausenbefehl (Sleep)
Innerhalb <foreach>-Tabellen-Schleifen (Pause erfolgt bei jedem Durchlauf!) | Innerhalb <if> (Kennung ist erforderlich) | Hinweise |
---|---|---|
<sleep time="10"/> | <sleep time="10"/> | Das Script pausiert um 10ms (max. 100ms erlaubt, Werte größer als 100ms werden auf 100 gesetzt) |
<sleep time="#varSleep"/> | <sleep time="#varSleep"/> | Das Script pausiert um den Wert der Variablen varSleep (max. 100ms) |
Bedingungs-Beispiele
Beispiele zur Prüfung mehrerer Bedingungen:
<if condition="@var1 = hallo|#var1 = 4712"> : Wenn der Text von var1 = hallo UND der Wert var1=4712 - Wenn alltrue nicht gesetzt ist, ist es WAHR <if condition="@var1 = hallo|#var1 = 4712" alltrue="true"> : Wenn der Text von var1 = hallo UND der Wert var1=4712 <if condition="@var1 = hallo|#var1 = 4712" alltrue="false"> : Wenn der Text von var1 = hallo ODER der Wert var1=4712
Beispiel zur Prüfung mehrerer Bedingungen; Variable, Status and Klassen:
<if condition="#var1 < &time" state="sg sem3 = green" class="bk 4711 = AB" alltrue="true"> : Wenn var1 < serialtimevalue UND der Status des Signals sem3 grün ist UND die Klasse von Block 4711 AB ist
Beispiele zur Prüfung ganzer Tabellen:
<foreach table="lclist" condition="#var2%oid% < &time|#var1 < &time"> : Für jeden Tabelleneintrag bei dem die Variable var2%lcid% < aktueller serialtime-Wert UND var1 < aktueller serialtime-Wert - Wenn alltrue nicht gesetzt ist, ist es WAHR <foreach table="lclist" condition="#var2%oid% < &time|#var1 < &time" alltrue="true"> : Für jeden Tabelleneintrag bei dem die Variable var2%lcid% < aktueller serialtime-Wert UND var1 < aktueller serialtime-Wert <foreach table="lclist" condition="#var2%oid% < &time|#var1 < &time" alltrue="false"> : Für jeden Tabelleneintrag bei dem die Variable var2%lcid% < aktueller serialtime-Wert ODER var1 < aktueller serialtime-Wert
Sub-Scripte und Script verlassen
Ein Sub-Script aufrufen oder das aktuelle Script verlassen:
XML | Remarks |
---|---|
<sub file="reset.xml"/> | Startet das Script reset.xml |
<exit cmt="Raus hier!"/> | Verlässt dieses Script hier (im Trace findet sich "Raus hier!") |
cmt=“reason” kann für Tracing verwendet werden.
Schleife unterbrechen
Eine Schleife verlassen, wenn eine Bedingung passt:
XML | Remarks |
---|---|
<break cmt="Its enough." condition="#var1 = 4712"/> | Verlässt die Schleife, wenn der Wert von var1 = 4712 ist. |
cmt=“reason” kann für Tracing verwendet werden.
Aktions-Steuerung
Eine existierende Aktion aufrufen, wenn eine Bedingung WAHR ist.
<actionctrl id="test"> <actioncond id="sw1" subid="" state="straight" type="sw"/> </actionctrl>
Aktion "test" wird aufgerufen, wenn Weiche sw1 den Status "straight" hat.
Um eine existierende Aktion von Scripten mehrmals mit verschiedenen Bedingungen aufzurufen.
Fahrdienstleiter- und Wagen-Befehle
<car id="car1" cmd="loaded"/> <actionctrl id="test"> <operator id="op1" cmd="emptycar" carids="DB1"/> </actionctrl>
emptycar, loadcar, addcar, leavecar. Im Attribut Wagenkennungen (carids) muss eine kommaseparierte Liste von Wagen spezifiziert sein.
Wagen-Befehle:empty, loaded, maintenance
Fahrdienstleiter-Befehle:addcar, removecar, loadcar, emptycar, class
System-Befehle
<sys cmd="go"/>
Befehle: stoplocs, stop, go, shutdown, resume, on, off, ebreak, resetfx, time, v0locos, shortcut(short circuit)
Beispiel-Code
<xmlscript> <sys cmd="go"/> <vr id="var1" value="4712" text="hallo"/> <tx id="tx1" format="var1 is #var1 @var1"/> <bk id="b1" cmd="classadd" class="ZZ"/> <vr id="varX" text="loco1"/> <lc id="@varX" cmd="classadd" class="ZZ"/> <car id="car1" cmd="loaded"/> <actionctrl id="test"> <actioncond id="sw1" subid="" state="straight" type="sw"/> </actionctrl> <operator id="op1" cmd="emptycar" carids="DB1"/> <if condition="@var1 = hallo|#var1 = 4712"> <then> <tx id="tx1" format="var1 is #var1 @var1 OK!!"/> <lc id="loco1" cmd="block" blockid="b1"/> <vr id="var2" min="10" max="100" cmd="random"/> <tx id="tx1" format="var1 is #var1 @var1 OK!! #var2"/> <vr id="var2" cmd="start"/> <vr id="var3" text="$tx1"/> </then> <else> <sub file="reset.xml"/> <exit cmt="Raus hier!"/> </else> </if> <foreach table="lclist"> <vr id="var4%oid%" value="4711" text="empty"/> <break cmt="Its enough." condition="#var1 = 4712"/> </foreach> </xmlscript>
User Examples
User examples are as is and are not officially supported.