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 

while Schleife mit warte Funktion sofort beenden



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!

17.11.2011, 12:08
Beitrag #1

wernerIBN Offline
Datenflussumgeher
**


Beiträge: 124
Registriert seit: Sep 2009

8.6 und 2011
2000
DE

52425
Deutschland
while Schleife mit warte Funktion sofort beenden
Hallo,
ich habe eine while Schleife, in der eine "Bis zum nächsten Vielfachen von ms warten Funktion" verwendet wird. Es kann sein, dass ich hier lange, z.B.: 100 Sekunden, warte, weil ich nur alle 100 Sekunden einen Messwert benötige.     lv11_img Wenn ich mein Programm beende, dann kann es sein, das diese while Schleife dann noch mehr als eine Minute läuft, und solange geht es nicht zu. Gibt es einen Weg, die while sofort zu beenden ? Wie unten zu sehen ist, benutze ich den Queue-Status, der eben einen Fehler auswirft, wenn die Queue zerstört wurde, was ich absichtlich beim Programmende mache. Mit dem Fehler stoppe ich dann die while... aber die stoppt erst, wenn der Timer abgelaufen ist. Ich habe keine Idee, wie ich den laufenden Timer ändern/stoppen kann...

Werner

Erfahrung ist die Summe der gemachten Fehler
KISS - Keep it simple and stupid
Walking on water and developing software from a specification are easy if both are frozen. – Edward V Berard
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
17.11.2011, 12:12
Beitrag #2

M@rRy Offline
LVF-Padawan
***


Beiträge: 273
Registriert seit: Aug 2011

7.1
2011
EN


Deutschland
RE: while Schleife mit warte Funktion sofort beenden
Mahlzeit,

mach doch einfach um den Timer eine switch die auf den Status deiner Queue reagiert. Wenn da alles ok is soll gewartet werden und wenn nicht wird kein Timer ausgeführt und die Schleife beendet.

Gruß
Daniel

Nur wer neugierig ist, lernt ständig dazu.

Mythos:
Mit LabView lassen sich gut Programme leichter entwickeln

Realität:
Mit LabView lassen sich gut und schlechte Programme leichter enwickeln!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.11.2011, 12:16
Beitrag #3

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: while Schleife mit warte Funktion sofort beenden
(17.11.2011 12:12 )M@rRy schrieb:  Mahlzeit,

mach doch einfach um den Timer eine switch die auf den Status deiner Queue reagiert. Wenn da alles ok is soll gewartet werden und wenn nicht wird kein Timer ausgeführt und die Schleife beendet.

Gruß
Daniel
@Daniel: Das haut nicht hin. Wenn alles ok, dann wird wieder 100 Sekunden gewartet, in denen keine Abbruch möglich ist.

@Werner:
Mglw. Ideen:
- Du unterteilst in kleinere Warteintervalle, und führst dann die Messwerterfassung nur z.B. jeden 100. Schleifendurchlauf durch.
- Verwende die Timeout-Funktionalität des "Warte-Queue" als Timer. Wenn Timeout nach 100 Sekunden, dann MW erfassen, wenn Fehler, dann Programm-Abbruch.

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
17.11.2011, 13:28
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
RE: while Schleife mit warte Funktion sofort beenden
So würde es funktionieren. (Siehe Jens letzter Punkt) Allerdings würden dann neue Werte nicht mehr im Rhythmus des Timers gebildet, sondern immer dann wenn das Haupt-VI über den Melder einen neuen Wert sendet. Das Timing der Werte müßte also vom Haupt-VI aus erfolgen.
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.11.2011, 14:33
Beitrag #5

wernerIBN Offline
Datenflussumgeher
**


Beiträge: 124
Registriert seit: Sep 2009

8.6 und 2011
2000
DE

52425
Deutschland
RE: while Schleife mit warte Funktion sofort beenden
(17.11.2011 13:28 )Lucki schrieb:  So würde es funktionieren. (Siehe Jens letzter Punkt) Allerdings würden dann neue Werte nicht mehr im Rhythmus des Timers gebildet, sondern immer dann wenn das Haupt-VI über den Melder einen neuen Wert sendet. Das Timing der Werte müßte also vom Haupt-VI aus erfolgen.
Vielen Dank an alle. Ich habe mir die von mir bisher übersehenen Melder einmal angesehen... interessant. Es ist leider so, dass ich im Programm die Wartezeit einstellbar machen möchte, und bei Änderung der Wartezeit sich die ( ich nenne es malSmile Schleifenwartezeit SOFORT ändern soll.

Der Ansatz mit Meldern und Timeout ist interessant, aber verlagert das Problem in die Meldererzeugung. Da wäre dann praktisch wieder ein Ansatz gemäß Jens: "Du unterteilst in kleinere Warteintervalle, und führst dann die Messwerterfassung nur z.B. jeden 100. Schleifendurchlauf durch." nötig.

Diesen Ansatz kann ich dann genausogut direkt in meiner While-Schleife einsetzen. Genau das mache ich jetzt.

Zwischenzeitlich habe ich noch mit einer zeitgesteuerten While-Schleife probiert, weil laut Doku: "Zeitgesteuerte Schleifen sind für die Entwicklung von VIs geeignet, bei denen ... dynamisch änderbare Zeitvorgaben ... erforderlich sind." Also dachte ich, ich könnte zur Laufzeit das dt verändern und die zeitgesteuerten While-Schleife machts direkt. Das ist mir nicht gelungen, weil ich nämlich gar nichts gefunden habe, womit ich bei einer bereits laufenden zeitgesteuerten While-Schleife das Timing verändern kann. Ich halte den Spruch in der Doku für unwahr... würde mich aber sehr gerne von euch eines besseren belehren lassen....

Werner

Erfahrung ist die Summe der gemachten Fehler
KISS - Keep it simple and stupid
Walking on water and developing software from a specification are easy if both are frozen. – Edward V Berard
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.11.2011, 15:17
Beitrag #6

unicorn Offline
LVF-Freak
****


Beiträge: 680
Registriert seit: Jul 2009

8.6.1, 2010 - 2012
1994
EN

10xxx
Deutschland
RE: while Schleife mit warte Funktion sofort beenden
einfach dt in der Schleife anknüpfen


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.11.2011, 16:13
Beitrag #7

wernerIBN Offline
Datenflussumgeher
**


Beiträge: 124
Registriert seit: Sep 2009

8.6 und 2011
2000
DE

52425
Deutschland
RE: while Schleife mit warte Funktion sofort beenden
(17.11.2011 15:17 )unicorn schrieb:  einfach dt in der Schleife anknüpfen

Hallo unicorn,
auch das funktioniert nicht so, wie ich möchte. Nehmen wir mal an, du hast an dt deine 100000ms, und die Schleife läuft bereits, und änderst dann dein dt per Bedienelement auf 1000, so wie hier:     lv11_img , dann muss man trotzdem noch 99 Sekunden warten, nämlich bis die alte 100 Sekunden Schleife komplett abgelaufen ist, bis die neue 1 Sekunde übernommen werden.

Ich möchte aber SOFORT erzwingen, dass die Schleife mit 1 Sekunde weiterläuft.

Trotzdem Danke, das rechte dt hatte ich nicht gekannt.

Werner

Erfahrung ist die Summe der gemachten Fehler
KISS - Keep it simple and stupid
Walking on water and developing software from a specification are easy if both are frozen. – Edward V Berard
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.11.2011, 16:28
Beitrag #8

unicorn Offline
LVF-Freak
****


Beiträge: 680
Registriert seit: Jul 2009

8.6.1, 2010 - 2012
1994
EN

10xxx
Deutschland
RE: while Schleife mit warte Funktion sofort beenden
Ok, alles klar. Entschuldigung, ich hatte Deinen Post nicht aufmerksam genug gelesen und dachte, dass Du nur darauf abzielst, dass es Dir nicht gelungen ist das dt zu ändern.

Dass man das Ende des alten Intervall abwarten muss hatte ich jetzt hier als gegeben hingenommen. Das halte ich kompatibel mit der Doku.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.11.2011, 09:23 (Dieser Beitrag wurde zuletzt bearbeitet: 18.11.2011 09:26 von rasta.)
Beitrag #9

rasta Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 245
Registriert seit: Oct 2006

LabVIEW 2009-2017
2006
EN

53909
Deutschland
RE: while Schleife mit warte Funktion sofort beenden
Hallo Werner,
http://www.labviewforum.de/Thread-LEDs-m...2#pid68942

Schau Dir mal das Beispiel "Timed_Synch2.vi" an.

Gruß
Ralf

Edit:Link korrigiert
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.11.2011, 09:46
Beitrag #10

wernerIBN Offline
Datenflussumgeher
**


Beiträge: 124
Registriert seit: Sep 2009

8.6 und 2011
2000
DE

52425
Deutschland
RE: while Schleife mit warte Funktion sofort beenden
(18.11.2011 09:23 )rasta schrieb:  Hallo Werner,
http://www.labviewforum.de/Thread-LEDs-m...2#pid68942
Schau Dir mal das Beispiel "Timed_Synch2.vi" an.

Ralf,
vielen Dank 2hands . Wahnsinns guter Hinweis - echt elegantes Konzept.

Werner

Erfahrung ist die Summe der gemachten Fehler
KISS - Keep it simple and stupid
Walking on water and developing software from a specification are easy if both are frozen. – Edward V Berard
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Asynchrone VIs mit Event Struktur sofort beenden Kiesch 4 105 Heute 10:29
Letzter Beitrag: Kiesch
  Case Struktur 2 Schleifendurchläufe verzögert True setzen aber sofort auf False bachatero18 4 4.591 07.11.2020 14:08
Letzter Beitrag: Martin.Henz
  While-Schleife sofort beenden ? RobertRoth 17 8.178 21.10.2019 11:00
Letzter Beitrag: RobertRoth
  Beenden der Funktion Zeratul 7 4.874 08.11.2018 14:58
Letzter Beitrag: Zeratul
  Schleife sofort beenden mprocket 9 5.763 19.01.2018 23:26
Letzter Beitrag: mprocket
  While Schleife durchläuft ein zweites mal nach beenden p4tti 5 4.367 15.09.2016 10:34
Letzter Beitrag: jg

Gehe zu: