User Tools

Site Tools


Action disabled: source
xmlscripting:xmldb-de

XML-Script-Beispiele

Befehls-Beispiele

:!: Die Anführungszeichen auf dieser Seite können in XML nicht verwendet werden.
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

xmlscripting/xmldb-de.txt · Last modified: 2023/04/18 08:24 by wolfgangk