NEWS
Tipp zur Programmierung
-
Hallo,
ich benötige einen Tipp.
Ich möchte eine Variable auf true setzen wenn ein Event N mal in einem Zeitraum t geschehen ist.Das ganze soll ungefähr so funktionieren:
Auslöser für Events = 3
Zeit = 5 MinutenEvent 1 0:00
Event 2 4:00
Event 3 5:01Es wird nichts ausgelöst, aber nun sollen die Events auf 2 gesetzt werden und 4:00 als Beginn für das 1. Event gesetz werden.
Bei Auslösung soll alles wieder auf null gesetzt werden.VG
Krodon
-
Ich denke bei jedem Event was den Kriterien entspricht das es potentiell was auslösen könnte muss ein Timer gestartet werden. Alle nachfolgenden Events müssen für alle laufenden Timer gezählt werden bis entweder die Max Anzahl erreicht ist, dass dann die Aktion ausgelöst wird oder wenn die Max Zeit erreicht wird, das der Timer dann vergessen/gelöscht wird.
Das heißt zum gleichen Zeit laufen mehrere Timer, falls innerhalb der Messeturm mehrere Events auftreten -
@krodon Ich würde das so lösen:
- eine Variable definieren, als leere Liste initialisieren
- im Trigger den Zeitstempel der aktuellen Änderung als letzten in die Liste setzen
- Sofern die Liste mehr als 2 Elemente hat:
-- pruefen ob der erste Zeitstempel länger als n Minuten her ist. Wenn ja, aus der Liste entfernen. Das ganze wiederholen, bis die Bedingung nicht mehr erfüllt ist. - Hat die Liste immer noch mehr als 2 Elemente: Wert auf Wahr, dann Liste leeren.
Ohne die Liste zu leeren entfällt der 'reset'
A.
Nachtrag: warum so und nicht mit Timern ? Weil bei Timern letztendlich bei jeder Änderung ein Timer notwendig werden würde. Beispiel:
Event tritt ein bei:
T=0,
T=3,
T=6,
T=9,
T=10
Man hat also immer 2 Timeouts laufen, und erst wenn der Event eintritt wenn beide laufen darf gestartet werden. Da ist die Liste dann doch die Option mit weniger Ressourcen.