INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Beenden einer while-Schleife



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

13.01.2011, 15:05
Beitrag #1

Herby07 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 54
Registriert seit: Mar 2010

2011
2010
kA


Deutschland
Beenden einer while-Schleife
Hallo,
ich habe eine Frage zur while-Schleife:
In der while-Schleife befindet sich eine Flache Sequenz mit z.B. 5 Rahmen.
Am Bedingungsanschluß der while-Schleife ist ein Stopp-Taster angebracht, so daß die while-Schleife beim Druck auf diesen Taster beendet wird.

Nun meine Frage:
Wenn das Programm sich z.B. gerade im 3.Rahmen befindet und der Stopp-Taster wird gedrückt, wann wird die while-Schleife verlassen ?
Sofort unmittelbar, oder wird erst die gesamte Flache Sequenz abgearbeitet und dann erst wird der Tastdendruck erkannt und die Schleife verlassen ?

Vielen Dank,
Herby
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.01.2011, 15:28
Beitrag #2

Martin Heller Offline
LVF-Stammgast
***


Beiträge: 250
Registriert seit: Feb 2010

2011 SP1
2008
EN

5232
Schweiz
Beenden einer while-Schleife
Erst wenn alles abgearbeitet ist.

Wenn die "Programm-Sequenz" früher abbrechen möchtest, musst du auf eine (zb.) State Machine wechseln.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.01.2011, 15:43
Beitrag #3

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Beenden einer while-Schleife
Wenn du das Terminal des Buttons parallel zur Sequenz hast, kann es sogar sein, dass noch ein weiterer Durchlauf gestartet wird, da der Terminal-Wert schon beim Start der While-Schleife ausgelesen wurde...

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.01.2011, 15:58 (Dieser Beitrag wurde zuletzt bearbeitet: 13.01.2011 16:45 von Lucki.)
Beitrag #4

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Beenden einer while-Schleife
' schrieb:Sofort unmittelbar, oder wird erst die gesamte Flache Sequenz abgearbeitet und dann erst wird der Tastdendruck erkannt und die Schleife verlassen ?
Die Frage hat Martin Heller schon beantwortet, aber das gilt auch nur, wenn das VI wie im rechten Bild ausieht.
Im linken Bild geschieht folgendes: Der Stop-Knopf wird in der Regel, d.h. mit 99.9 %iger Wahscheinlichkeit, zuerst gelesen, und dann erst wird die Sequenzstruktur abgearbeitet.
Wird nun, während der dritte Sequenz abgearbeitet wird, der Stop Knopf gedrückt wird, so führt das am Ende der Sequenz noch nicht zum Abbruch der Schleife: Der Kopf wurde bereits gelesen und als false erkannt. Erst nach einem weiteren vollständigen Schleifendurchlauf wird das Programm beendet.
   
Edit: Ich war langsamer als Jens, weil ich noch das VI gemacht habe. Also, Lucki, kapier das doch mal endlich: Erst den Beitrag mit einem kurzen Satz beantworten und die Priorität sichern, dann in Ruhe alles ausarbeiten und den eigenen Beitrag editierenMellow
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.01.2011, 16:32
Beitrag #5

Herby07 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 54
Registriert seit: Mar 2010

2011
2010
kA


Deutschland
Beenden einer while-Schleife
Hallo Lucki,
vielen Dank, jetzt habe ich es verstanden.

Ich habe aber noch ein anderes Problem, das ich unter Datenkommunikation beschreiben werde
Vielleicht kannst Du mir auch dabei weiter helfen.

Gruß
Herby
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.03.2013, 09:17
Beitrag #6

sportfreund* Offline
LVF-Neueinsteiger


Beiträge: 2
Registriert seit: Mar 2013

2011
2005
DE



RE: Beenden einer while-Schleife
Hallo, ich hab das gleiche Problem wie Herby07 im ersten Post beschrieben (in einer Whileschleife 4 cases). auch wenn schon etwas länger her....
Ich möchte - egal in welcher case sich das programm befindet - die while schleife abbrechen !
hier wurde auch mal auf eine "State-machine" verwießen, was mich aber irgendwie nicht weiterbringt.
Hat jmd einen konkreten lösungsvorschlag für mich ? wäre super !
schon mal danke im voraus an die forum-members und labview-strategen !! ;-)

Gruß Sportfreund
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
22.03.2013, 09:25
Beitrag #7

GerdW Offline
______________
LVF-Team

Beiträge: 17.425
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Beenden einer while-Schleife
Hallo sportfreund,

Herby sprach von einer Sequenz mit mehreren Rahmen, du dagegen von "Cases". Was genau meinst du also: eine Case-Struktur oder eine Sequenz?
Merke: Es ist immer hilfreich, ein VI (oder zumindest ein Bild des BD) anzuhängen...

Wenn deine While-Schleife "sofort" abbrechen soll, musst du das auch entsprechend programmieren. Es gilt nämlich immer "THINK DATAFLOW", d.h. erst wenn alle Knoten innerhalb einer Struktur (Sequenz, Case, Schleife) abgearbeitet sind, kann die Struktur selbst weiter"arbeiten"...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.03.2013, 09:48
Beitrag #8

sportfreund* Offline
LVF-Neueinsteiger


Beiträge: 2
Registriert seit: Mar 2013

2011
2005
DE



RE: Beenden einer while-Schleife
hallo GerdW,
erstmal danke für die schnelle antwort - und sorry für meine falsche beschreibung.
ich meinte natürlich mehrer sequenzen in einer while schleife ! (siehe screenshot)
die while-scheife soll sofort beendet werden bei drücken des "Beenden"-Tasters - egal in welcher sequenz sich das programm befindet.


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.03.2013, 10:00 (Dieser Beitrag wurde zuletzt bearbeitet: 22.03.2013 10:04 von GerdW.)
Beitrag #9

GerdW Offline
______________
LVF-Team

Beiträge: 17.425
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Beenden einer while-Schleife
Hallo sportfreund,

dann lese dich ins Thema Statemachine ein Big Grin

- THINK DATAFLOW: Die Sequenz wird erst beendet, wenn alle Frames abgearbeitet sind! Du müsstest also in jedem Frame den Stopp-Button abfragen und ggf. den Frame (unter Einsatz einer Case-Struktur in jedem Frame!) "überspringen". Da das unnötiger Aufwand ist, macht das keiner (zumindest kein "guter" Programmierer Smile)...

- Rechtsklick auf den Sequenzrahmen -> Ersetzen durch Case-Struktur: Jetzt den Schleifen-Iterator benutzen, um die einzelnen Cases aufzurufen (Frame 0 wird zu Case 0, Frame 3 zu Case 3 usw.). Das ist jetzt schon eine (sehr einfache) Statemachine. Jetzt wird nach jedem Case die Stopp-Bedingung geprüft...

Zitat:sorry für meine falsche beschreibung. ich meinte natürlich mehrer sequenzen in einer while schleife
<pingelig-Modus an>
- Du meinst nicht "mehrere Sequenzen in einer Schleife", sondern "eine Sequenz mit mehreren Rahmen" in einer Schleife...
- Deine Tastatur ist kaputt (zumindest die Hochstelltasten), schaff dir eine neue an!
<pingelig-Modus aus>

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.03.2013, 12:09
Beitrag #10

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Beenden einer while-Schleife
Noch kleine Anmerkung zur "Statemachine":
Dein abgebildetes VI ist mal eines der eher seltenen Beispiele, wo die Realisierung in Labview umständlicher ist als in einer textbasierten Sprache.
Es handelt sich um eine einfache Ablauffolge, und in einer Textsprache würde man die Kommandos einfach hintereinander schreiben - fertig.
In Labview muß man dafür, wenn man keine Datenabhängigkeiten hat, entweder eine Sequenz verwenden, oder aber eine "Statemachine", die allerdings, wie Gerd schon sagte von einfachster Struktur ist. Kein Mensch außer einem "Labview-Programmierer" würde so etwas schon als "Statemaschine" bezeichnen - es ist ja nach wie vor eine reine Ablauffolge. (Wenn man mal von der Stop-Abfrage nach jedem Kommando absieht).

Dein Beispiel hat sowieso einen Hinkefuss: Zwar gibt es keine Datenabhängikeiten zwischen den Codeteilen, aber gerade deshalb ist die Reihenfolge der Abarbeitung egal. Das ganze Gedöns mit Sequenzstruktur oder Statemachne ist überflüssig.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  While-Schleife sofort beenden ? RobertRoth 17 8.122 21.10.2019 11:00
Letzter Beitrag: RobertRoth
  Schleife sofort beenden mprocket 9 5.733 19.01.2018 23:26
Letzter Beitrag: mprocket
  Drei Queues in einer While-Schleife mit case-Struktur EinVolvic 12 11.302 17.05.2017 20:25
Letzter Beitrag: EinVolvic
  Probleme seit einfügen einer For-Schleife JUON 7 5.234 14.02.2017 18:01
Letzter Beitrag: TR61
  Rechenzeit einer Schleife pro runde bekommen aidinnikoo 1 3.338 30.11.2016 13:53
Letzter Beitrag: GerdW
  Dauer einer Schleife berechnen Marius89 3 5.736 31.10.2016 09:24
Letzter Beitrag: jg

Gehe zu: