LabVIEWForum.de
Schleife nach Pop-Up beenden - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Schleife nach Pop-Up beenden (/Thread-Schleife-nach-Pop-Up-beenden)



Schleife nach Pop-Up beenden - TDO - 16.02.2016 08:50

Hallo,

kann ich eine While Schleife beenden, nachdem ein One-Button-Dialog geschlossen wurde?
Es soll dieser Dialog geöffnet werden (natürlich nur einmal) und dann soll die Schleife solange ihre Arbeit tun, bis der Benutzer den Dialog weggeklickt hat.
Mir fällt gerade nichts ein, wie ich das lösen kann, ohne das der Dialog bei jedem Schleifendurchlauf aufpopt...
Hat da jemand eine Idee, wie man das machen kann?

Gruß
TDO


RE: Schleife nach Pop-Up beenden - GerdW - 16.02.2016 08:57

Hallo TDO,

wenn Dinge parallel laufen sollen (Dialog und Arbeitsschleife), dann sollten sie in parallelen Schleifen stattfinden.
Reicht das als Tipp?


RE: Schleife nach Pop-Up beenden - TDO - 16.02.2016 09:01

Steh immernoch auf dem Schlauch.
Der Dialog soll ja nur einmal angezeigt werden. Wie kann ich den Dialog in einer Schleife abfragen, ob er beendet wurde, ohne, dass er bei jedem durchlauf wieder erneut aufpopt?
Wenn ich eine zweite Schleife für den Dialog einrichte, wird der Dialog ja ständig aufgerufen.

Bitte um noch einen Tipp ;-)

Gruß
TDO


RE: Schleife nach Pop-Up beenden - GerdW - 16.02.2016 09:10

Hallo TDO,

Pseudocode:
Code:
flag := FALSE
Dialog("Text")
flag := TRUE
Das Flag wird in der parallel laufenden Schleife abgefragt…

Zitat:Wenn ich eine zweite Schleife für den Dialog einrichte, wird der Dialog ja ständig aufgerufen.
Diese zweite Schleife muss nicht unbedingt eine Schleife sein, es kann sich ja auch um eine Sequenz etc. handeln. Außerdem könnte man diese Schleife ja auch genau einmal durchlaufen, wenn der User beim Dialog auf den richtigen Button klickt…

Kernaussage: Wenn Dinge parallel laufen sollen, muss man sie auch parallel programmieren. Und das machst du nicht, wenn der Dialog innerhalb der Arbeitsschleife aufgerufen wird!


RE: Schleife nach Pop-Up beenden - TDO - 16.02.2016 09:41

Das das parallel laufen muss ist mir bewusst.
So, wie ich dich verstanden habe, müsste es dann in etwa so aussehen oder?
[attachment=55310]

Oder evtl. noch eine Schleife um den Dialog.

Wenn ich das aber so laufen lasse, zählt der Schleifenzähler nicht hoch und die Schleife macht genau einen Durchlauf.

Ich versteh zwar, woran es liegt und das es parallel laufen muss, aber ich komm grad nicht drauf, wie ich das umsetzen kann, sorry.

Gruß
TDO


RE: Schleife nach Pop-Up beenden - GerdW - 16.02.2016 09:49

Hallo TDO,

nein. THINK DATAFLOW!
So wie im Bild laufen die Dinge NICHT parallel, du hast explizit einen DATAFLOW programmiert!

Nochmal: Wenn Dinge parallel laufen sollen, musst du sie parallel programmieren.
Oder auch: Mittels DATAFLOW per Draht legt man fest, was nacheinander abläuft…

Zitat:Ich versteh zwar, woran es liegt und das es parallel laufen muss, aber ich komm grad nicht drauf, wie ich das umsetzen kann, sorry.
Indem du Arbeitsschleife und Dialog in eigenen, parallel laufenden Strukturen OHNE DATAFLOW-Abhängigkeit laufen lässt. Und eben ein Flag (lokale Variable, globale Variable, Melder, FGV, …) zum Datenaustausch benutzt!

Jetzt mit Bild:
[attachment=55311]
Parallel laufende Strukturen ohne DATAFLOW-Abhängigkeit! (Noch nicht 100% korrekt dank RaceCondition…)
Nach >6 Jahren LabVIEW-Nutzung sollte bekannt sein, wie DATAFLOW funktioniert und wie man Dinge parallel laufen lässt: das sind LabVIEW-Grundlagen!


RE: Schleife nach Pop-Up beenden - TDO - 16.02.2016 09:59

Ok, danke für den Hinweis.
Entsteht dadurch aber nicht eine Art Race Condition?
Wodurch ist sichergestellt, dass der boolsche Wert im ersten Schleifendurchlauf false ist?
Am besten wäre es dann den boolschen Wert vorher definiert auf einen Wert zu bringen oder? Sonst macht das Programm ja den ersten Schleifendurchlauf quasi gleichzeitig als die Zuweisung des false Werts oder?

Gruß
TDO

Edit: Mir ist bekannt, wie Dinge parallel laufen können. Einen solchen Fall hatte ich eben bisher noch nicht. In dem Gebiet, in dem ich unterwegs bin, kommt sowas eher selten vor...