String-Variable weiterverarbeiten durch Skript braucht seine Zeit

Ich habe eine String-Variable, wo von anderen Ereignissen ein Text übergeben wird. Bei jedem neuen Text wird ein Script gestartet, welches den neuen Text weiterverarbeitet. Dieses Skript braucht dazu ca. 250ms.
Mein Problem ist, dass es vorkommt, dass zum gleichen Zeitpunkt mehrere Ereignisse auslösen und quasi gleichzeitig (oder in sehr kurzem Abstand) ihren Text an die String-Variable übergeben. Das Skript, was es weiterverarbeitet, kommt da leider nicht hinterher oder braucht zu „lang“, bevor es startet. Damit wird immer nur der letzte String im Skript verarbeitet und die vorhergehenden nicht mehr. Aufgeführt sind sie in der String-Variable aber alle. Interessant ist auch, dass das Skript auch so oft gestartet wird, wie neue Texte eingegangen sind. Nur wird dann leider immer nur der letzte Text verarbeitet.

Alle Versuche, die Variable vielleicht aufzuteilen und dann jeweils einzeln ein Skript zu starten, waren nicht erfolgreich. Auch der Ablaufplan scheint da zu „langsam“ (nicht falsch verstehen). Ich will damit nicht sagen, dass irgendetwas zu langsam ist! Es müssen nicht alle neu ankommenden Texte sofort verarbeitet werden. Doch wie kann ich das durch vielleicht Hilfsvariablen oder eine Art Schieberegister lösen, dass es geordnet nacheinander verarbeitet wird?
Ich befinde mich gerade auf einem Holzweg, deshalb brauche ich mal einen guten Rat. Danke!

Wie greift das Script drauf zu? GetValue oder $_IPS[‚Value‘]? In In letzterem müsste eigentlich der korrekte Wert stehen.

1 „Gefällt mir“

Wenn das Problem die gleichzeitige Ausführung des Skriptes ist, kannst du das mit einem Semaphore einschränken: IPS_SemaphoreEnter — IP-Symcon :: Automatisierungssoftware

Damit kann ein Skript immer nur einmal zur Zeit ausgeführt werden und die anderen Ausführungen warten kurz bis sie starten. Wenn nur gelegentlich mal kleine Schübe kommen, sollte das diese entzerren.

$_IPS[‚Value‘] ist die Lösung!
Ich hatte es mit GetValue gemacht. Damit wurde zwar das Skript x mal ausgeführt, aber hat immer den letzten String-Wert genommen. Mit $_IPS[‚Value‘] nimmt es auch den passenden Wert zum Auslösetrigger. Wieder was gelernt, danke!