LabVIEWForum.de - Zwei While Schleifen Parallel eine Bedingung zur Beendung

LabVIEWForum.de

Normale Version: Zwei While Schleifen Parallel eine Bedingung zur Beendung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Hallo,
ich hätte gern folgendes realisiert, ich habe zwei While Schleifen, die Parallel abgearbeitet werden, diese beiden Schleifen hätte ich gern über eine Bedingung beendet, hat jemand einen Lösungsansatz für mich?
Beste Grüße
Moin!

Beenden kannst du die auf jeden Fall über eine globale Variable, auch wenn das mit Sicherheit nicht die beste Lösung ist.
Für eine bessere Lösung müsstes du genauere Informationen liefern.

Gruß, Kai
Ich verwende zur Zeit häufiger einen Melder um das zu realisieren!
Ich nutze ebenfalls Melder, außer der Stopp-Button soll die Schleifen beenden. Dann verwende ich lokale Variablen. Und hier darf man diese meiner Meinung nach auch getrost verwenden.

Bei den Meldern hat man nämlich ein weiteres Problem:
Angenommen der Melder wird vor Schleife 1 erstellt und nach Verlassen von Schleife 1 beendet. Er meldet Schleife 2, dass diese beendet werden soll. Nun kann es sein, dass Schleife 1 vor Schleife 2 endet und der Melder freigegeben wird. In Schleife 2 erhältst du dann einen Fehler aufgrund der ungültigen Melder-Referenz beim Versuch den Melder auszulesen.

Diese Fehler müsstest du dann noch abfangen/ignorieren oder einen 2. Melder verwenden, der an Schleife 1 meldet, dass Schleife 2 beendet wurde und dann erst Schleife 1 verlassen wird (und anschließend beide Melder freigibt).
Du siehst, das kann recht kompliziert werden.

Natürlich kann man auch hergehen und die Schleife 2 beenden, wenn am VI-Ausgang des Melden-Lesen-VIs ein Fehler auftritt. Nur ganz ordentlich ist dieses Vorgehen nicht.
' schrieb:Bei den Meldern hat man nämlich ein weiteres Problem:
Angenommen der Melder wird vor Schleife 1 erstellt und nach Verlassen von Schleife 1 beendet. Er meldet Schleife 2, dass diese beendet werden soll. Nun kann es sein, dass Schleife 1 vor Schleife 2 endet und der Melder freigegeben wird. In Schleife 2 erhältst du dann einen Fehler aufgrund der ungültigen Melder-Referenz beim Versuch den Melder auszulesen.

Ich habe üblicherweise eine Schleife die alle Events über Melder an alle parallelen Schleifen weiter verteilt. Auch das Event "StoppButton-Wertänderung". Um das zitierte Problem zu beheben verwende ich Rendevouz. Erst wenn alle Schleifen beendet wurden, wir der Melder geschlossen.

Grüße,
Totti
Wenn man eine Ereignisstruktur nutzt, dann ist das ok. Da muss man jedoch nicht über Melder gehen, sondern könnte auch benutzerdefinierte Ereignisse auslösen.Wink

Nur ohne Ereignisstruktur entsteht das von mir angesprochene Problem.
Die bisher gegebenden Antworten passen mehr auf die Frage, wie man parallel laufende VIs beendet. Dazu kann man Melder oder globae Variablen verwenden. In Bezug aus Deine Frage aber - man ein VI mit parallel laufenden Schleifen beendet - hieße beides mit Kanonen auf Spatzen schießen.

Die Frage kommt periodisch jeden Monat, und immer wieder ist die einfache Antwort diese
Ähm, genau das gleiche wurde hier doch genannt oder nicht (neben den Meldern)?Unsure
@Lucki:
da muss ich dir recht geben!

@Mechatronik-Ingenieur:
Spatzensalve:Lv09_img2[attachment=30671]
Grüße,
Totti
' schrieb:Ähm, genau das gleiche wurde hier doch genannt oder nicht (neben den Meldern)?Unsure
Ne, Lucki hat Lokale Variablen verwendet und keine globalen!
Seiten: 1 2 3
Referenz-URLs