LabVIEWForum.de
Verschachtelte while-Schleifen beenden - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Verschachtelte while-Schleifen beenden (/Thread-Verschachtelte-while-Schleifen-beenden)

Seiten: 1 2


Verschachtelte while-Schleifen beenden - skywalker - 08.05.2007 14:14

Hallo,

ich habe ein Programm, welches drei while-Schleifen besitzt. Die eine befindet sich um das gesamte "Programm" herum,
um es dauerhaft laufen zu lassen.
In dieser befindet sich zwei weitere parallele while-Schleifen.

Wie kann ich nun das Programm mit nur einem Stop-Button stoppen?

Ich bekomm das einfach nicht hin, dass die inneren Schleifen anhalten.
Wo muss ich den Knopf platzieren? In der äußeren (wie bei mir) oder in der inneren Schleife?

Stefan

[attachment=6511]


Verschachtelte while-Schleifen beenden - jg - 08.05.2007 14:44

Hallo,
Stop-Button gehört natürlich in eine der beiden inneren Schleifen (am besten in die, die schneller läuft). Die 2. parallele und die äußere könntest du z.B. über lokale Variablen des Stop-Buttons anhalten.
MfG, Jens


Verschachtelte while-Schleifen beenden - Lucki - 08.05.2007 14:54

Jens was schneller, hier noch das geänderte VI. Beachten: Schaltverhalten das Stop-Buttons ist geändert


Verschachtelte while-Schleifen beenden - skywalker - 08.05.2007 15:19

' schrieb:Hallo,
Stop-Button gehört natürlich in eine der beiden inneren Schleifen (am besten in die, die schneller läuft). Die 2. parallele und die äußere könntest du z.B. über lokale Variablen des Stop-Buttons anhalten.
MfG, Jens

Die zwei inneren Schleifen laufen beide gleich lange, das bedeutet, dass beide gleichzeitig durch einen Knopf gestartet werden und so lange laufen, bis sie durch den Stopp-Button abgebrochen werden. Daher weiss ich nicht, welche länger läuft.

Und das mit den lokalen Variablen hab ich auch schon probiert. Das geht nicht. Da erscheint folgende Meldung in der Fehlerliste: "Boolsche 'Stopp': Schaltverhalten ist mit lokalen Variablen nicht verienbar"


Verschachtelte while-Schleifen beenden - jg - 08.05.2007 15:23

' schrieb:Und das mit den lokalen Variablen hab ich auch schon probiert. Das geht nicht. Da erscheint folgende Meldung in der Fehlerliste: "Boolsche 'Stopp': Schaltverhalten ist mit lokalen Variablen nicht verienbar"
Ich würde sagen, darauf hat Lucki die Antwort gegeben. Das mit lokalen Variablen eines Buttons geht nur, wenn du das Schaltverhalten auf "Switch when..." änderst.
MfG, Jens


Verschachtelte while-Schleifen beenden - skywalker - 08.05.2007 15:31

Uii...sorry.
hab das wohl überlesen. Jedenfalls geht das so jetzt.

Danke.


Verschachtelte while-Schleifen beenden - skywalker - 09.05.2007 06:14

Hallo,

ich bins nochmal. Ich bekomm das einfach nicht zum laufen. Ich stell mal meine VI's in den Anhang.
Ich hoffe, es kann mir wer weiterhelfen.

Ich will die Möglichkeit haben, dass entweder die Schleifen durch den Stopp-Button abgebrochen werden oder nach der definierten verstrichenen Zeit.
Das klappt nicht. Ich vermute mal, dass hängt mit den for-Schleifen und dem SubVi in der oberen inneren while-Schleife zusammen.
Bin mir allerdings nicht sicher.
Kann mir jemand helfen?

Danke
Stefan
[attachment=6523][attachment=6522][attachment=6521]


Verschachtelte while-Schleifen beenden - marker - 09.05.2007 07:17

Hallo Stefan,

das sind grundlegende Probleme.
Jede While-Schleife wird erst nach dem kompletten Durchlauf abgebrochen und es dauert eben bei Deinem Programm etwas länger bis die obere Schleife abgearbeitet ist (siehe die beiden FOR-Schleifen und die 20s Wartezeit).
Um einen schnelleren Abbruch zu realisieren würde ich die FOR-Schleifen durch While-Schleifen ersetzen und jeweils den Laufindex selbst erzeugen, so kannst Du dann auch diese nach jedem Durchlauf und nicht erst nach 511 Durchläufen abbrechen.
Die Wartezeit kannste Du für den Abbruchfall auch noch auf null setzen.
Wird der Abbruch-Button allerdings während der Wartezeit betätigt muß gewartet werden bis die Zeit verstrichen ist.

Gruß,
Marko


Verschachtelte while-Schleifen beenden - skywalker - 09.05.2007 07:48

' schrieb:Hallo Stefan,

das sind grundlegende Probleme.
Jede While-Schleife wird erst nach dem kompletten Durchlauf abgebrochen und es dauert eben bei Deinem Programm etwas länger bis die obere Schleife abgearbeitet ist (siehe die beiden FOR-Schleifen und die 20s Wartezeit).
Um einen schnelleren Abbruch zu realisieren würde ich die FOR-Schleifen durch While-Schleifen ersetzen und jeweils den Laufindex selbst erzeugen, so kannst Du dann auch diese nach jedem Durchlauf und nicht erst nach 511 Durchläufen abbrechen.
Die Wartezeit kannste Du für den Abbruchfall auch noch auf null setzen.
Wird der Abbruch-Button allerdings während der Wartezeit betätigt muß gewartet werden bis die Zeit verstrichen ist.

Gruß,
Marko

So...das klappt eigentlich nun alles. Wie kann jetzt noch den Abbruch nach der definierten Zeit mit einbringen?
Wie muss ich die untere WHILE-Schleife verbinden, damit die ebenfalls stoppt und somit das ganze Programm stoppt, wenn die Zeit abgelaufen ist?
[attachment=6524]


Verschachtelte while-Schleifen beenden - skywalker - 11.05.2007 09:12

Hallo,

leider bin ich noch immer nicht weiter und weiß nicht, wie ich das Programm dazu bekomm, dass es nach der verstrichenen Zeit stoppt.
Hat jemand eine Idee???