LabVIEWForum.de
While-Schleife - einmal zuviel? - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: While-Schleife - einmal zuviel? (/Thread-While-Schleife-einmal-zuviel)



While-Schleife - einmal zuviel? - dragonos - 24.07.2007 12:26

Hi,

folgendes ist mir aufgefallen:

Drücke ich in angehängtem VI den Stop-Button will ich, dass die While-Schleife sofort abbricht. Aber anstatt abzubrechen wird sie noch ein einziges Mal ausgeführt und bricht dann ab.

Wie schaffe ich einen sofortigen Abbruch?


Alex

P.S.: das angehängte Beispiel ist eine Vereinfachung aus meinem komplexeren Programm.


While-Schleife - einmal zuviel? - cb - 24.07.2007 12:32

' schrieb:Hi,

folgendes ist mir aufgefallen:

Drücke ich in angehängtem VI den Stop-Button will ich, dass die While-Schleife sofort abbricht. Aber anstatt abzubrechen wird sie noch ein einziges Mal ausgeführt und bricht dann ab.

Wie schaffe ich einen sofortigen Abbruch?
Alex

P.S.: das angehängte Beispiel ist eine Vereinfachung aus meinem komplexeren Programm.

it's no bug, it's a featureSmile

While-Schleifen werden IMMER mindestens einmal ausgeführt.


While-Schleife - einmal zuviel? - eg - 24.07.2007 12:33

Du könntest den Inhalt der While-Schleife zusätzlich in eine Case-Struktur packen und als Bedingung für Case deinen Stop-Button definieren.

Dein Test.VI kann ich mir nicht anschauen, denn ich nur LV8.0 hab.

eg


While-Schleife - einmal zuviel? - dragonos - 24.07.2007 13:03

Das While-Scheifen min. einmal ausgeführt werden ist mir bekannt.
Jedoch wird nach Betätigung des Stopp-Buttons die Schleife ein weiteres Mal ausgeführt.

Mit dem Tipp von eg (CASE-Struktur über Stopp-Button) funktioniert es wenigstens - wenns auch unschön ist ;-)


While-Schleife - einmal zuviel? - eg - 24.07.2007 13:07

' schrieb:Das While-Scheifen min. einmal ausgeführt werden ist mir bekannt.
Jedoch wird nach Betätigung des Stopp-Buttons die Schleife ein weiteres Mal ausgeführt.

Das glaube ich dir nicht. Probiere das mal aus und schau, was Numeric sagt.

eg


While-Schleife - einmal zuviel? - Y-P - 24.07.2007 13:09

Sieht aus, als wolltest Du so' ne Art "State Machine" bauen. Was hast Du denn genau vor?

Gruß Markus

' schrieb:Das While-Scheifen min. einmal ausgeführt werden ist mir bekannt.
Jedoch wird nach Betätigung des Stopp-Buttons die Schleife ein weiteres Mal ausgeführt.

Mit dem Tipp von eg (CASE-Struktur über Stopp-Button) funktioniert es wenigstens - wenns auch unschön ist ;-)



While-Schleife - einmal zuviel? - dragonos - 24.07.2007 18:25

Eine SPS sendet mir per TCP/IP Informationen über durchzuführende Messungen und ich soll die Messung durchführen.


While-Schleife - einmal zuviel? - IchSelbst - 24.07.2007 22:30

' schrieb:Drücke ich in angehängtem VI den Stop-Button will ich, dass die While-Schleife sofort abbricht. Aber anstatt abzubrechen wird sie noch ein einziges Mal ausgeführt und bricht dann ab.
Das liegt an folgendem:

Der Stopp-Button, der die Schleife beenden soll, wird am Anfang der Schleife ausgelesen und dessen Wert an die Schleifenbeendigung weitergeleitet. Wenn du die eine innere Schleife mit dem Stopp-Button beendest, hat dieser Wert des Stopp-Buttons keine Auswirkung auf die Schleifenbeendigung der äußeren Schleife! Ob die beenden soll oder nicht, liegt nämlich schon seit Beginn der Schleife fest. Dein Problem liegt also am Datenflußprinzip. Es ist in deinem Falle nicht so, dass der Stoppbutton abgefragt wird am Ende der (äußeren) Schleife.

Du musst dir also was einfallen lassen, damit der Stopp-Button quasi wie am Ende der Schleife abgefragt wird.

Du könntest z.B. den Stopp-Button für die äußere Schleife sequenzieren mit der Statemachine, sodass der Stoppbutton erst nach jedem Case überprüft wird.


While-Schleife - einmal zuviel? - Lucki - 25.07.2007 09:27

' schrieb:it's no bug, it's a featureSmile

While-Schleifen werden IMMER mindestens einmal ausgeführt.
Was aber Verbesserung am Programm, um dem gewünschten Verhalten zu entsprechen, nicht ausschließt.
Ist-Zustand: Stopp-Knopf wird ganz zuerst gelesen, dann erst wird das was in der Schleife drin ist abgearbeitet. Wenn Du in dieser Zeit den Knopf drückst, wird Dein Abbruchwunsch nicht mehr zu Kenntnis genommen, sondern erst beim nächsten Durchlauf.
Es ist ein leider fast unvermeidlicher Irrtum, so zu denken: Der Abbruchkopf ist in der Schleife rechts unten, und dort habe ich auch den Stopp-Butten platziert. Da wird er wohl erst kurz vor der Entscheidung auf Abbruch gelesen werden. Falsch!!!!!

Richtig ist so:

[attachment=7634]
Edit: Entschuldige Ichselbst, sehe gerade, Du hast ja alles schon vor mir gesagt was zu sagen war...