LabVIEWForum.de - Abbruch while-Schleife

LabVIEWForum.de

Normale Version: Abbruch while-Schleife
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi,

stehe momentan etwas auf dem Schlauch, ich hoffe ihr könnt mir weiterhelfen.

Problem ist recht einfach: Ich möchte eine while Schleife per Knopfdruck abbrechen.
Dazu habe ich eine Lösung von Achim gefunden (kill_event.vi). Funktioniert auch ohne Probleme.

http://www.labviewforum.de/Thread-Frage-zum-Beenden

Wenn ich das ganze nun in mein Projekt einbaue, löst der Abbruch Button nicht aus!
Was mache ich da anders?

Gruß =)
Du kannst bei der Auswahl der Events für einen Case angeben, ob während seiner Abarbeitung das Frontpanel für Eingaben gesperrt wird. Wenn Du diesen Haken weg machst , funktioniert es.
Hallo Alex,

ohne dein VI gerade öffnen zu können vermute ich, die Whileschleife liegt innerhalb eines Events, dessen Ausführung das Frontpanel sperrt.
Musste mal in den Eigenschaften dieses Events nachsehen.

Gruß, Marko
Hallo alex,

Marios Vorschlag wird funktionieren.

ABER: Eine der Grundregeln beim Einsatz der Eventstruktur lautet, dass die Abarbeitung des Events möglichst schnell und nicht-blockierend durchgeführt werden sollte. Eine Loop, die 5s lang den Eventcase blockiert, gehört aber nciht in diese Kategorie!

Also: Besser ein gutes Programmdesign überlegen…
Wie Marko schon vermutete, liegt das Programm innerhalb des Ereigniscases. Das sollte man nur machen, wenn der betreffende Programmcode keine nennenswerte Zeit in Anspruch nimmt, da während dieser Zeit keine anderen Ereignisse abgearbeitet werden können.
Alternativen sind: In einer parallelen Hauptschleife, in derselben Schleife wie die Ereignisstruktur, im Timeout der Ereignisstruktur. In den letzgenannten Fällen muss aber auch darauf geachtet werden, dass die Hautschleife weiter läuft und nicht z.B durch durch einen zweite innerne Schleife blockiert ist.
Die beste Möglichkeit ist deshalb der erstgenannte Fall - und zwar mit Nachrichten/Datenaustausch über Queues.
Hier Beispiel für Programmbehandlung im Timeout:

[attachment=52010]
Die Welt kann doch so einfach sein.

Danke vielmals!

Das mit den Queues werde ich mir in Zukunft auch noch genauer ansehen. So richtig sauber sieht das bei mir noch nicht aus =)
Referenz-URLs