User Tools

Site Tools


xmlscripting:xmldb-de

Differences

This shows you the differences between two versions of the page.


xmlscripting:xmldb-de [2023/04/18 08:24] (current) – created - external edit 127.0.0.1
Line 1: Line 1:
 +====== XML-Script-Beispiele ======
 +[[:german#objekte|{{  :objects.png}}]][[:german|{{  :rocrail-logo-35.png}}]]
 +[[:german|Inhalt]] -> [[:german#Objekte|Objekte]] ->  **[[:timed-actions-de|Aktionen]]** 
 +  * [[:actions-de|Aktionen definieren]] | [[:actionctrl-de|Aktions-Steuerung]] | [[:actioncond-de|Aktions-Bedingung]] | **[[:xmlscripting-de|XML-Skripte]]** | [[:action-example-de|Beispiele]] | [[:level-crossing-de|Beispiel 2 Bahnübergang]]
 +    * **[[:xmlscripting:xmldb-de|XML-Script-Beispiele]]** | [[:userpages:micha68:virtualfbscript-en|Virtual Sensors]] (en)
 +
 +
 +\\
 +Befehls-Übersicht: __**[[:actions-de#die_typen_befehle_parameter|Befehle]]**__
 +\\
 +\\
 +
 +=====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. <sub>RainerK</sub>|
 +\\
 +
 +==== 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:
 +<code>
 +<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 
 +</code>
 +\\
 +Beispiel zur Prüfung mehrerer Bedingungen; Variable, Status and Klassen:
 +<code>
 +<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
 +</code> 
 +\\
 +\\
 +Beispiele zur Prüfung ganzer Tabellen:
 +<code>
 +<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     
 +</code>
 +\\
 +\\
 +\\
 +
 +=====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.
 +\\
 +<code>
 +<actionctrl id="test">
 +    <actioncond id="sw1" subid="" state="straight" type="sw"/>
 +</actionctrl>
 +</code>
 +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===== 
 +\\
 +<code>
 +<car id="car1" cmd="loaded"/>
 +<actionctrl id="test">
 +    <operator id="op1" cmd="emptycar" carids="DB1"/>
 +</actionctrl>
 +</code>
 +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===== 
 +\\
 +<code>
 +<sys cmd="go"/>
 +</code>
 +Befehle: stoplocs, stop, go, shutdown, resume, on, off, ebreak, resetfx, time, v0locos, shortcut(short circuit) 
 +\\
 +\\
 +\\
 +
 +=====Beispiel-Code===== 
 +\\
 +<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>
 +
 +</code>
 +
 +
 + \\
 +=====User Examples=====
 +//User examples are as is and are not officially supported.//\\
 +
 +  * [[:micha68:virtualfbscript|Virtuelle Rückmelder (micha68)]]
 +  * [[:micha68:extkeyboardscript-de|Externe Taster und LEDs (micha68)]]
 +  * [[:micha68:ampelscript-de|Verkehrsampel (micha68)]]
 +  * [[:userpages:sambaer1:entkupplungswalzer-de|Kupplungswalzer mit xmlscript (sambaer1)]]
 +  * [[:userpages#claus_cds|Skriptsammlung (cds:Claus)]]
 +  * [[:userpages:entaxi57:scriptesammlung-de|Skriptsammlung (entaxi57:Bernd)]]
 +  * [[:lordbrummi:german:skripte_beispiele|Skriptsammlung (lordbrummi:Dieter)]]
 +  * [[:besra:german:xml|Skriptsammlung (besra:Bernd)]]
 +  * [[wiki:user:minou65:Skriptfragmente-de|Skriptfragmentsammlung (minou65:Andy)]]