LabVIEWForum.de
While Schleife vorzeitig abbrechen - Druckversion

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



While Schleife vorzeitig abbrechen - Moeseph - 05.04.2012 18:46

Hallo liebe LV-Gemeinde!

Ich habe eine technische Frage bezüglich des Abbrechens einer While-Schleife. Ich möchte eine Apparatur betreiben, die periodisch arbeiten soll. Ein Durchlauf durch die Prozedur, in der von LV letztlich I/O Kanäle geschaltet werden sollen, dauert etwa 20 Sekunden. Ich habe mir also eine While-Schleife gebaut, in der jede Menge Kram erledigt wird und die beendet wird, sobald die Abbruchbedingung erreicht ist.

Meine Frage zielt nun dahin, ob es eine Möglichkeit, die While-Schleife direkt abzubrechen, wenn irgendwann im Verlauf der etwa 20 Sekunden dauernden Periode etwas schief geht. Die Schleife soll also nicht erst bis zum Ende des jeweiligen Durchlaufs gehen und dann einfach nicht wieder aufs Neue starten, sondern direkt beendet werden. Ich möchte allerdings nicht das ganze Programm beenden, sondern ausdrücklich nur die Schleife.

Ich habe mir überlegt, den Inhalt der Schleife in ein Sub-VI zu packen, welches dann anstelle des jetzigen Inhalts in der While-Schleife läuft. Dieses Sub-VI will ich dann im Fall der Fälle durch das STOPP-VI beenden und dann dafür sorgen, dass die While-Schleife ebenfalls beendet wird.

Meine eigentliche Frage ist nun, ob dieser Gedanke in diesem Fall tatsächlich das Mittel der Wahl ist, oder ob es elegantere und/oder bessere Methoden gibt.


RE: While Schleife vorzeitig abbrechen - Hook1986 - 06.04.2012 10:06

Hallo Moseph,

wenn ich dich also richtig verstehe, dann willst du dass die While-Schleife durchläuft. Nun tritt irgendwo in den einzelnen Schritten, die in dieser Schleife passieren ein Fehler auf. Wenn dann dieser Fehler da ist, so willst du dass der restliche Code nicht ausgeführt wird und die Loop beendet wird?

Dann geh doch einfach hin und pack die einzelnen Schritte in SubVIs und mach in jedem dieser Schritte einfach eine Case-Struktur, mit der du dann "Fehler" und "Kein Fehler" verwendest. Bei Fehler einfach keinen Code rein und bei "Kein Fehler" den Code rein, den du eugentlich ausführen willst. Und dann am Ende der Schleife musst du nur noch den Feler mit nem Oder an die eigentliche abbruchbedingung ranhauen.

Hoffe, dass das verständlich genug ausgedrückt ist.

MfG Carsten


RE: While Schleife vorzeitig abbrechen - Lucki - 06.04.2012 13:07

(06.04.2012 10:06 )Hook1986 schrieb:  Nun tritt irgendwo in den einzelnen Schritten, die in dieser Schleife passieren ein Fehler auf.
Könnte schon so sein, aber mit geposteten VI von Moeseph wäre man auf Spektulationen überhaupt nicht angewiesen und könnte definitiv eine gute Lösung verschlagen.


RE: While Schleife vorzeitig abbrechen - Moeseph - 08.04.2012 12:09

Hook hat schon recht mit seiner Vermutung. Das Problem mit dem Posten des entsprechenden VIs ist, dass in ihm VIs benutzt werden, die mit dem zu steuernden Gerät mitgeliefert worden sind, das heißt jeder, der das entsprechende Gerät nicht hat, würde also nicht viel zu sehen bekommen.

Ich werde die Methode von Hook mal probieren, das sollte recht leicht zu implementieren sein, da sie Steuer-VIs glücklicherweise einen Fehler ausgeben, wenn einer auftritt. Außer natürlich, jemand kennt eine noch bessere Methode.