[implementiert] XML Script mit Parameter aufrufen

[implementiert] XML Script mit Parameter aufrufen

Postby peter&basti » 18.03.2017, 18:21

Hallo Freunde,

ich studiere jetzt schon geraume Zeit und suche eine Möglichkeit in der Aktion welche das Script startet, einen Parameter mitzugeben.

Zb. Parameter 1,2,3 und mit diesem Parameter dann im Script als (Text)variable zu arbeiten.

param.png


Ich habe aber die Schlüsselstelle weder im Wiki noch im Forum gefunden wo das beschrieben ist.

Ich finde Funktionsaufrufe und Calls, das brauche ich aber nicht.... :?:

Danke im Voraus für einen sachdienlichen Hinweis.

Ansonsten brauche ich 3 weitere Aktionen die eine Variable setzen, um diese dann wieder im Script auszuwerten....
You do not have the required permissions to view the files attached to this post.
Last edited by peter&basti on 20.03.2017, 14:24, edited 1 time in total.
Liebe Grüße / best regards
Peter


System: DCC 2-Leiter H0, Rocrail Win10 Pro 64
Traktion: GBMBoost & GBM16T, RailCom
Fahrweg: RocNetNode & GCA PI01/2/3, GCA41/Arduino RFID, GCA145 Drehscheibe, etc.
Lokdecoder: 99% Zimo
peter&basti
 

Re: XML Script mit Parameter aufrufen

Postby rjversluis » 18.03.2017, 18:38

Hi Peter,

musst du nicht machen. Wenn es im Wiki nicht dokumentiert ist brauchst du deine Zeit nicht zu verschwenden.
Best Regards, Rob.
[ macOS - Linux] - [ N: CBus - CAN-GCA ] - [ 0: RocNetNode - GCA-Pi ]
rjversluis
Site Admin
 

Re: XML Script mit Parameter aufrufen

Postby peter&basti » 18.03.2017, 19:39

Hi Rob,

Ok verstanden. Gibt es nicht, habe ich wohl falsch interpretiert.
Könnte man aber einbauen?
%parameter%
oder so.
Vielleicht auch eine kommaseparierte Liste, die dann im Script in Parameter 1,2,3 landen....
Liebe Grüße / best regards
Peter


System: DCC 2-Leiter H0, Rocrail Win10 Pro 64
Traktion: GBMBoost & GBM16T, RailCom
Fahrweg: RocNetNode & GCA PI01/2/3, GCA41/Arduino RFID, GCA145 Drehscheibe, etc.
Lokdecoder: 99% Zimo
peter&basti
 

Re: XML Script mit Parameter aufrufen

Postby peter&basti » 19.03.2017, 00:21

Hi Rob,

hier noch nachgereicht der konkrete Anlassfall für mein Ansinnen.

Um in meinem Beispiel zum Thema Dunkeltasten das gemeinsame Vorsignal unter allen Bedingungen richtig zu setzen, kommt man leider doch nicht ohne Aktionen/Script aus. Ich habe das aktuell mit 3 Aktionen und 3 Scripts gelöst, da bei "zweitem Zielblock reservieren" nach meinem Kenntnisstand (und Versuchen) keine inhaltlich passende Variablen zum Zeitpunkt der Stellung der betreffenden Fahrstraße übergeben werden (können), die das Zielobjekt (das Hauptsignal) über die Blockkennung (die Teil des Signalnamens ist) definieren.

Dies könnte man auf 3 Aktionen mit Parametern und 1 Script reduzieren, wenn man in diesem Beispiel konkret die Signalnamen per Parameter aus der Aktion bei Aufruf des Scripts übergeben könnte:

Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<xmlscript>
<!-- Dieses Script setzt das Signal V_Einfahrt auf den richtigen Begriff -->
<!-- Dieses Script ist per Aktion in allen Fahrstrassen nach dem Signal V_Einfahrt bei "lock" aufzurufen.-->

   <if state="sg A_Gleis1 = red">
   <then>
   <sg id="V_Einfahrt" cmd="red"/>
   </then>
   </if>
      <if state="sg A_Gleis1 = green">
      <then>
      <sg id="V_Einfahrt" cmd="green"/>
      </then>
      </if>
         <if state="sg A_Gleis1 = yellow">
         <then>
         <sg id="V_Einfahrt" cmd="yellow"/>
         </then>
         </if>   
            <if state="sg A_Gleis1 = white">
            <then>
            <sg id="V_Einfahrt" cmd="white"/>
            </then>
            </if>
<trace text="Signal V_Einfahrt mit Aspect A_Gleis1 gesetzt"/>
</xmlscript>


Das gesamte Beispiel inklusive aller Dateien findest Du hier:
http://wiki.rocrail.net/doku.php?id=sig ... nkeltasten
Liebe Grüße / best regards
Peter


System: DCC 2-Leiter H0, Rocrail Win10 Pro 64
Traktion: GBMBoost & GBM16T, RailCom
Fahrweg: RocNetNode & GCA PI01/2/3, GCA41/Arduino RFID, GCA145 Drehscheibe, etc.
Lokdecoder: 99% Zimo
peter&basti
 

Re: XML Script mit Parameter aufrufen

Postby rjversluis » 19.03.2017, 06:35

Moin Peter,

das Parameter Feld wird schon verwendet um ein bestimmte Funktion innerhalb ein XMLScript auf zu rufen.

Vielleicht kannst du %callertext% oder %calleruserdata% hier verwenden.
Best Regards, Rob.
[ macOS - Linux] - [ N: CBus - CAN-GCA ] - [ 0: RocNetNode - GCA-Pi ]
rjversluis
Site Admin
 

Re: XML Script mit Parameter aufrufen

Postby rjversluis » 19.03.2017, 07:49

Hi Peter,

ab jetzt kann man auch das Description Feld benutzen: %desc%
http://wiki.rocrail.net/doku.php?id=act ... scription1
Best Regards, Rob.
[ macOS - Linux] - [ N: CBus - CAN-GCA ] - [ 0: RocNetNode - GCA-Pi ]
rjversluis
Site Admin
 

Re: XML Script mit Parameter aufrufen

Postby peter&basti » 19.03.2017, 08:54

Danke Rob,

werde ich versuchen sobald Build verfügbar, liest sich vielversprechend. Nach meinem Verständnis kann man in %desc% ja auch eine ganze Liste reinschreiben ....
Liebe Grüße / best regards
Peter


System: DCC 2-Leiter H0, Rocrail Win10 Pro 64
Traktion: GBMBoost & GBM16T, RailCom
Fahrweg: RocNetNode & GCA PI01/2/3, GCA41/Arduino RFID, GCA145 Drehscheibe, etc.
Lokdecoder: 99% Zimo
peter&basti
 

Re: XML Script mit Parameter aufrufen

Postby nice2have » 19.03.2017, 09:08

Hallo Peter,
ich habe jetzt dein Beispiel nur auf die "Schnelle" überflogen. Warum packst Du die drei Scripte nicht in ein Script und verwendest
Code: Select all
<switch>
  <case>

bezogen auf die gelockte Fahrstraße ?
Zeichenketten-Beispiel
MfG
Gerrit
[bekennender Unterstützer der Software Rocrail]
nice2have
 

Re: XML Script mit Parameter aufrufen

Postby peter&basti » 19.03.2017, 11:10

Hallo Gerrit,

deine Antwort hat mich motiviert, nochmals das Kriterium zu suchen wo ich bei "zweiten Zielblock reservieren" den Zielblock herausfinde.
Habe ich jetzt endlich gefunden.

Jetzt geht es auch mit einer Aktion und einem Script. Geht sicher noch eleganter, aber das Ziel die Anzahl von Aktionen und Scripte zu minimieren ist erreicht. Das mit den Parametern aus der Description bei Aktionsaufruf möchte ich verwenden für eine Möglichkeit, beliebige (ggf. vorhandene) Signalkennungen übergeben zu können.

Bei meiner Logik muss die Signalkennung die Blockkennung beinhalten.

Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<xmlscript>
<!-- Dieses Script setzt das Signal V_Einfahrt auf den richtigen Begriff -->
<!-- Dieses Script ist per Aktion in allen Fahrstrassen nach dem Signal V_Einfahrt bei "lock" aufzurufen.-->
<query vr="Ziel" table="stlist" id="%callerid%" get="bkb"/>
<vr id="Main_%callerid%" text="A_@Ziel" tokeniser="_"/>
   <if state="sg @Main_%callerid% = red">
   <then>
   <sg id="V_Einfahrt" cmd="red"/>
   </then>
   </if>
      <if state="sg @Main_%callerid% = green">
      <then>
      <sg id="V_Einfahrt" cmd="green"/>
      </then>
      </if>
         <if state="sg @Main_%callerid% = yellow">
         <then>
         <sg id="V_Einfahrt" cmd="yellow"/>
         </then>
         </if>   
            <if state="sg @Main_%callerid% = white">
            <then>
            <sg id="V_Einfahrt" cmd="white"/>
            </then>
            </if>
<trace text="Signal V_Einfahrt mit Aspect von @Main_%callerid% gesetzt"/>
</xmlscript>
Liebe Grüße / best regards
Peter


System: DCC 2-Leiter H0, Rocrail Win10 Pro 64
Traktion: GBMBoost & GBM16T, RailCom
Fahrweg: RocNetNode & GCA PI01/2/3, GCA41/Arduino RFID, GCA145 Drehscheibe, etc.
Lokdecoder: 99% Zimo
peter&basti
 

Re: XML Script mit Parameter aufrufen

Postby peter&basti » 20.03.2017, 14:23

Hallo Rob,

funktioniert einwandfrei.

Zusatzfrage: Wenn ich hier 2 Parameter kommasepariert angebe, kann ich das dann im Script auf 2 Variable zerlegen?
Wenn ja, wie?
Ich habe mir alle Scriptbefehle und Beispiele angesehen, komme nicht dahinter...
Liebe Grüße / best regards
Peter


System: DCC 2-Leiter H0, Rocrail Win10 Pro 64
Traktion: GBMBoost & GBM16T, RailCom
Fahrweg: RocNetNode & GCA PI01/2/3, GCA41/Arduino RFID, GCA145 Drehscheibe, etc.
Lokdecoder: 99% Zimo
peter&basti
 


Return to XMLScripting (DE)