LabVIEWForum.de
mehrere Event Cases gleichzeitig laufen lassen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: mehrere Event Cases gleichzeitig laufen lassen (/Thread-mehrere-Event-Cases-gleichzeitig-laufen-lassen)



mehrere Event Cases gleichzeitig laufen lassen - Oli_N - 20.07.2009 08:28

Hallo zusammen..

Ich hätte da eine Frage zu den "Event Structures".
Ich habe mehrere Buttons, welche je einen Event auslösen. In einem dieser Events (Haupt-Event) werden einige dieser Buttens so gesetzt, dass diese ebenfalls ausgelöst werden. Im Haupt-Event befindet sich eine Warteschleife, in welcher gewartet werden soll, bis die anderen Events abgearbeitet sind. Mein Problem ist nun, dass ich in der Warteschleife im Haupt-Event hängen bleibe, da die anderen Events garnicht gestartet werden. Ich neme mal an, dass das daran liegt, dass Events immer nur nacheinander abgearbeitet werden.
Ist es irgendwie möglich, dass Events ausgelöst werden können, während sich das Programm noch in einem anderen befindet?

Vielen Dank schon mal!

Gruss
Oli


mehrere Event Cases gleichzeitig laufen lassen - TSC - 20.07.2009 08:37

Theoretisch kannst du eine Eventstruktur in eine andere Eventstruktur rein packen. Dabei muss man allerdings aufpassen, dass nicht beide Strukturen auf die selben Events reagieren. Und wirklich sauber ist das nicht. NI warnt vor solchen Methoden, meines Erachtens nicht grundlos.

Wenn du dein VI mal hochlädst, kann man evtl deutlicher sehen, was du da vor hast und welche Alternativen es gibt.

LG
Torsten


mehrere Event Cases gleichzeitig laufen lassen - Oli_N - 20.07.2009 09:00

Ich habe mein Problem kurz in einem separaten, einfachen VI aufgebaut, damit das Ganze etwas übersichtlicher ist.
Das Problem ist nun, dass das Programm im Event "Button 1-3" hangen bleibt.

Lv86_img[attachment=19790]

EDIT:
Bei Uploads bitte immer die LV-Version mit angeben (vgl. LVF-Regeln)!!!


mehrere Event Cases gleichzeitig laufen lassen - Morpheus - 20.07.2009 09:29

Hallo Oli.

Warum trennst Du den Event-Case nicht vom ausführenden Code?
Vielleicht hilft dir mein Beispiel? (in LabVIEW 8.6 erstellt)


Gruss Chris


mehrere Event Cases gleichzeitig laufen lassen - Lucki - 20.07.2009 09:30

Z.B so würde es funktionieren:
Lv86_img[attachment=19796]


mehrere Event Cases gleichzeitig laufen lassen - TSC - 20.07.2009 09:35

oder so:

Lv86_img[attachment=19799]


mehrere Event Cases gleichzeitig laufen lassen - Oli_N - 20.07.2009 10:32

Zuerst einmal vielen Dank für eure Beiträge!
Neben meinen Event Structures habe ich eigentlich noch eine Schleife mit meinem übrigen Code (Hauptprogramm). Darin möchte ich eine Art Initialisierung aufrufen, welche verschiedene Knopfdrücke simuliert (routine 1, routine 2, routine 3) und dessen Events ausführt. Weiter soll im Hauptprogramm gewartet werden, bis die Initialisierung abgeschlossen ist. Dazu hatte ich vor solange zu warten, bis der Button "Initialisierung" wieder gelöscht ist. Das Problem ist nun also, dass der Button "Initialisierung" gelöscht werden muss, sobald "routine 1", "routine 2" und "routine 3" abgeschlossen sind.

[attachment=19805] (in LabVIEW 8.6 erstellt)

@ Chris: Da ich mein Hauptprogramm neben der Event Structure habe geht das so nicht^.

@Lucki: In deiner Variante wird ja nun alle 100ms der Timeout case ausgeführt (braucht alles immer Zeit). Und der Button "Initialisieren" wird nicht unbedingt unmittelbar nach Beenden der routinen gelöscht.

@TSchAC Der Button "Initialisieren" wird nicht unbedingt unmittelbar nach Beenden der routinen gelöscht.

Ich denke das einfachste ist es, wenn ich den Button "Initialisieren" einfach in der routine3 (oder die, welche als letztes ausgeführt wird) wieder lösche (so, wie das Chris eigentlich hat).
Ich hatte mir gedacht, dass es ev. anders geht.

Nochmals Danke an alle!!

Gruss
Oli


mehrere Event Cases gleichzeitig laufen lassen - Lucki - 20.07.2009 13:29

' schrieb:@Lucki: In deiner Variante wird ja nun alle 100ms der Timeout case ausgeführt (braucht alles immer Zeit). Und der Button "Initialisieren" wird nicht unbedingt unmittelbar nach Beenden der routinen gelöscht.
Ein Timeout (Wartezeit) von 100ms ist nicht so schlimm wie kein Wait in den whileschleifen (= 100% Prozessorbelastung), wie Du es machst, oder Timeout=-1 (unendlich, = nicht angeschlossen) bei einer Ereignsistruktur, die in der Hauptschleife liegt (=hängenbleiben)
In dem VI, welches ich von Dir modifiziert habe, gab es gar keinen Knopf "initialisieren", also wieso argumentierst Du hier mit diesem nicht existierendem Knopf, daß er hatte gelöscht oder nicht gelöscht hätte werden müssen?
Brauchst aber nicht zu antworten, ich klinke mich hier aus.