LabVIEWForum.de
While Schleife stoppen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: While Schleife stoppen (/Thread-While-Schleife-stoppen)



While Schleife stoppen - itz_me - 13.04.2017 12:06

Hallo,

ich habe 3 Whileschleifen parallel.

Diese 3 Schleifen möchte ich über einen Schalter vorzeitig beenden, momentan über Boolschenschalter (switch when pressed/ nach drücken geschaltet) über locale Variablen realisiert.
Der normale Programmdurchlauf läuft ohne Probleme, die Schleifen hören zum gewünschten Zeitpunkt auf.
Bei betätigen des Stoppschalters stoppen alle 3 Schleifen wie gewünscht, habe das durch 3 Indicatoren direkt am Stop der Schleife kontrolliert.
Nach erfolgreichen Stopp bleibt aber mein Programm hängen aus der 3 Schleife kommen keine Daten (Error/ Boolsche Konstante).

Ich habe in der 3 Schleife einen weiteren Stoppschalter (S3) eingebaut. Wird dieser vor Betätigung des allgemeine Stoppschalters betätig, Stoppt die Schleife wie gewünscht. Danach kann der allgemeien Stoppschalter betätigt werden und das Programm Stoppt.
Der Fehler hängt in der 3. Schleife.
Eine kontrollierte For-Schleife war auch nicht die Lösung.
Untere Schleife im Anhang ist das Problemkind.

Vielen Dank im voraus für Eure Anregungen und Ideen
[attachment=57635]


RE: While Schleife stoppen - GerdW - 13.04.2017 12:13

Hallo itz_me,

THINK DATAFLOW: eine Schleife(niteration) wird beendet, wenn alles in der Schleife abgearbeitet ist.
Mit etwas Highlight-Debugging würdest du sofort sehen, welche Funktion da noch wartet…

Tipp: Man kann Funktionen wie ReadQueue eine Timeout-Zeit vorgeben!


RE: While Schleife stoppen - jg - 13.04.2017 12:26

Offtopic2
ABER wieso so kompliziert?
[attachment=57636]
Gruß, Jens


RE: While Schleife stoppen - GerdW - 13.04.2017 12:33

Habe auch noch was:
[attachment=57637]
Wenn man die Maxima einfach in einem Array mit zwei Elementen speichert, würde noch dieses Unbundle/IndexArray&Bundle wegfallen…


RE: While Schleife stoppen - itz_me - 13.04.2017 14:47

(13.04.2017 12:13 )GerdW schrieb:  Hallo itz_me,

THINK DATAFLOW: eine Schleife(niteration) wird beendet, wenn alles in der Schleife abgearbeitet ist.
Mit etwas Highlight-Debugging würdest du sofort sehen, welche Funktion da noch wartet…

Tipp: Man kann Funktionen wie ReadQueue eine Timeout-Zeit vorgeben!

Merci GerdW,

das mit dem Highlight Debugging hatte ich probiert, aber dann läuft alles so langsam, dass der Timeout nicht benötigt wird, bzw der Fehler nicht auftritt.

Nach dem ich sowohl bei Read als auch Write Queue den Timeout gesetzt hatte liefs einwandfrei.
(13.04.2017 12:33 )GerdW schrieb:  Habe auch noch was:

Wenn man die Maxima einfach in einem Array mit zwei Elementen speichert, würde noch dieses Unbundle/IndexArray&Bundle wegfallen…

Hatte da auch schon Varianten ausprobiert, will aber sichergehen dass ich sowohl das Maxima von als auch von P erwische. Ein bisschen falsch verdrahtet und schon kommt das Wertepaar mit maximalen Q.