25.01.2009, 20:17
' schrieb:ich hab mal ein analoges beispiel programmiert und beigefügt, gestartet wird es über die Hauptwhileschleife. außerdem wäre es schön, wenn es eine möglichkeit gäbe dass sie gleichzeitig loslaufen. wäre tolle wenn mir jemand weiterhelfen könnte..
Habe den Thread hier gelesen, der so gelaufen ist: Du hast eine kompliziert aussehende Antwort erhalten, da hat Dich der Mut verlassen, so daß sich Deine weitern Fragen dann nur noch darauf richten, wie man LabVIEW lernt.
Deine Frage bezieht sich nicht nur auf das Stoppen, sondern auch auf die Synchronisierung der 3 Programme, und hierzu möchte ich etwas sagen.
Wenn man die in den Sub-Vi erzeugten Daten nicht mit globalen Veriablen, sondern mit Meldern zum Haupt-VI überträgt, dann synchronisieren sich die beiden Vis von selbst. Der Meldeempfänger (Im Haup-VI) wartet bei jedem Schleifendurchlauf, bis neue Daten vorliegen. Man braucht dort keine Waits.
Allerdings ist es dann immer so, daß der Datenerzeuger den Datenempfänger synchronisiert, also in Deinem Fall die Sub-Vis das Haup-VI bzw. die entsprechenden while-Schleifen im Haup-VI.
In umgekehrter Richtung, oder wenn wie in Deinem Fall alle freilaufenden SUB-VIs mit dem Haupt-VI synchronisiert werden solle, wirds schwieriger. (Stichwort: Rendezvous). Das möchte ich Dir erst mal ersparen.
Gewissermassen als Abfallprodukt eines solchen Erzeuger-Verbraucher-Konstruktion, also ohne jeden zusätzlichen Programmaufwand, funktioniert der Stopp aller VIs: Beim Stop im Haup-Vi zerstört man einfach den Melder. Das wird in den anderen VIs bemerkt, es kommt zu Fehlermeldung, die man dort an die Stoppknöpfe in den while-Schleifen anschließt.
Tipp: Hier im Forum suchen nach Erzeuger-Verbraucher-Struktur, es gibt da einfache Beispiele.
Hier Deine VIs ein bisschen geändert: