Asynchrone (Child-)Prozesse über xml starten?

Asynchrone (Child-)Prozesse über xml starten?

Postby AutomatikFan » 26.08.2017, 09:03

Hallo zusammen,

über den 'sub' oder den 'call' Aufruf lassen sich bekanntlich Subroutinen starten. Die Syntax ist (wie in Doku zu finden):

Code: Select all
  <call  id="f_Loks_SBHF"/> <!-- ruft Subroutine aus demselben xml-File auf-->
  <sub file="./Programme/Auto_ALL_TRAINS.xml" id="f_Loks_HBF"/> <!-- ruft Subroutine aus einem anderem xml-File auf-->
  <sub file="./Programme/Auto_ALL_TRAINS.xml" id="_"/> <!-- ruft allen Code in einem xml-File (ohne evtl. enthaltene Subroutinen)-->

Nun sind alle diese Aufrufe synchron, d.h. der Subroutinen-Code wird im selben Prozess/Thread abgearbeitet, oder in anderen Worten: der Subroutinen-Code wird ausgeführt, und wenn dieser beendet ist, wird mit dem nächsten Befehl im Skript weitergemacht.

Manchmal hätte ich aber auch gerne asynchron aufgerufenen xml-Code, d.h. der Code wird gestartet, und das aufrufende Skript wartet nicht, bis dieser beendet ist, sondern der Code läuft unabhängig in einem eigenen Prozess/Thread.

In der Praxis möchte ich z.B. eine LED am Kontrollpult nach Bedarf blinken lassen. Es gibt aber auch noch andere Anwendungsfälle.

Im Moment gibt es nur die Möglichkeit, extra eine Aktion zu definieren, diese als "asynchron" einzustellen, diese ein xml-Skript starten zu lassen, und diese selbst dann mittels <actionctrl .../> zu starten. Das ist recht umständlich.

Ein Vorschlag: wäre es möglich, zum Beispiel den Aufruf

Code: Select all
  <sub file="./Programme/Auto_ALL_TRAINS.xml" id="_"/> <!-- ruft allen Code in einem xml-File (ohne evtl. enthaltene Subroutinen)-->

immer asynchron ablaufen zu lassen? Wenn ich mich recht entsinne, war das auch früher irgendwann mal so.

Danke für Antwort(en).

Viele Grüße
Chris
AutomatikFan
 

Re: Asynchrone (Child-)Prozesse über xml starten?

Postby rjversluis » 26.08.2017, 09:11

Hi Chris,

Wenn ich mich recht entsinne, war das auch früher irgendwann mal so.

das war noch nie so.

Ich persönlich finde die Idee nicht gut um ein Subroutine async auf zu rufen; Das ist in keine Programmiersprache so.
Best Regards, Rob.
:!: PS: Do not forget to attach the usual files.
:!: PS: Nicht vergessen die übliche Dateien an zu hängen.
[ macOS - Linux] - [ N: CBus - CAN-GCA ] - [ 0: RocNetNode - GCA-Pi ]
rjversluis
Site Admin
 

Re: Asynchrone (Child-)Prozesse über xml starten?

Postby AutomatikFan » 26.08.2017, 09:27

Hi Rob,
rjversluis wrote:Das ist in keine Programmiersprache so.

da gebe ich Dir recht. Allerdings ist hier beim xml und Rocrail auch schon einiges anders, als ich es sonst kenne. :wink:

Ist aber auch nicht so wichtig. Ich kriege das, was ich gerne möchte, ja auch so hin. Hauptsache, es gibt irgendeinen Weg.

Viele Grüße
Chris
AutomatikFan
 

Re: Asynchrone (Child-)Prozesse über xml starten?

Postby Bela1 » 12.02.2018, 20:40

Hello Chris
I must apologize for answering to your post on DE forum in English but my German is very poor. I only hardly understand sense.
I tryied to start some RR objects for example loco, function and so on by python script. I used communication via port 8051 like another client. I was relative successful with sending some command (loco started) but not succesful with starting xml file.
If I good understood You started functions by activation sys objects. I have choosen similar way - I used phantom signal. For example if signal is green then is starting xml file. After that I was succsessful.
Now I only thank You for possibility to compare my ideas with yours. I know that asynchrone starting of threads can make PC slower but everything shall be used with common sense. Also I suppose that implementation of XML parsing in RR is only basic.

I am not programmer but electrical designer & TT fan. Overthere I must sometimes make programms.

Viele Grüße
Vojtech
Bela1
 


Return to XMLScripting (DE)