LabVIEWForum.de
Eventstrukturen in jedem Case einer State-Machine - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Eventstrukturen in jedem Case einer State-Machine (/Thread-Eventstrukturen-in-jedem-Case-einer-State-Machine)



Eventstrukturen in jedem Case einer State-Machine - Lupin - 24.09.2010 16:28

Mal eine vereinfachte Beschreibung: Ich habe eine State-Machine mit Zuständen "Messung einrichten" und "Messen". In jedem dieser Zustände möchte ich auf komplett unterschiedliche Events reagieren und damit in jedem State eine eigene Event-Struktur. Unter anderem verwende ich beim "einrichten"-Zustand die "Dynamic Event Terminals", um auf Maus-Klicks auf einen Cluster zu reagieren.

Im Fall "Messen" brauche ich diesen Event nicht. Wenn ich jetzt aber bei der Event-Struktur in diesem Case nicht das gleiche an die "Dynamic Event Terminals" dran hänge (ich brauche sie eigentlich nicht, da ich auf keines dieser "dynamischen" Events reagieren möchte), hängt das Frontpanel sobald ich auf den Cluster klicke. Highlighting zeigt mir, dass das Programm im Hintergrund noch läuft ("timeout"-Case der Eventstruktur wird regelmäßig ausgeführt), aber am Frontpanel tut sich nichts mehr (ich kann z. B. nicht mehr zu einem anderen Tab eines Tab-Controls wechseln).

Hänge ich die "event registration refnums" an läuft alles normal. Ich verstehe nur nicht, wieso es im ersteren Fall überhaupt schief gelaufen ist. Was habe ich da falsch gemacht oder übersehen?


Eventstrukturen in jedem Case einer State-Machine - GerdW - 24.09.2010 18:35

Hallo Lupin,

die Events werden weiterhin erzeugt und zwängen sich in die Warteschlange. Die zugehörige Eventstruktur kommt aber nicht zum Abarbeiten - ist ja in einem anderen State. Und du hast das Häkchen ganz unten im Event-Dialog nicht beachtet, das darüber entscheidet, ob das UI blockiert wird, solange das Event abgearbeitet wird...

Lösung:
Eine Eventstruktur in eigener Schleife, dort Events verarbeiten und Messages an die State-Loop senden...