Moin,
vielleicht denke ich zu kompliziert, aber ich bekomme es nicht innerhalb EINES DOIF hin und habe es derzeit über ein zweites quasi als Watchdog gelöst. Prinzipiell möchte ich Folgendes erreichen: Wenn das DOIF in einen cmd-Zweig a gesprungen ist, soll es nach x Sekunden in diesem Zweig in einen anderen Zweig b springen. Dieser Sprung soll natürlich nicht stattfinden, wenn innerhalb der x Sekunden einer der übrigen Zweige c etc. angesprungen wird.
Ich hatte es versucht, über ein wait im Zweig a und dann einem verzögerten set $SELF cmd_x ... aber hier wird nur der Befehlszweig von cmd_x ausgeführt und nicht wirklich der Zweig gewechselt. Zumindest steht im Reading des DOIF immer der ursprüngliche Zweig drin. Anscheinend soll auf diese Art das Modul sich selbst nicht wechseln können.
Gibt es hier eine elegante Lösung, die ich übersehen habe?
Danke
Michael
ZitatIch hatte es versucht, über ein wait im Zweig a und dann einem verzögerten set $SELF cmd_x ... aber hier wird nur der Befehlszweig von cmd_x ausgeführt und nicht wirklich der Zweig gewechselt.
Das ist völlig korrekt.
Du willst, dass er den Zweig x prüft und ausführt?
Da wäre ja wenn innerhalb der Wait-Zeit der Zweig x getriggert wird. Du musst also in der Zeit diese Bedingungen schaffen.
Man kann auch noch ein IF im Ausführungsteil einbauen, aber ich würde mal über den Anwendungsfall nachdenken.
Du kannst im Zweig y
or [$SELF:cmd] ==
bzw. den Sub abfragen.
Musst aber dann die entsprechenden Attribute aktivieren.