Schleife wird zu früh beendet... Wie lässt sichs beheben?
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!
Schleife wird zu früh beendet... Wie lässt sichs beheben?
Hallo,
ich hab folgendes Problem: Ich hab eine Schleife, die mir True/False-Wechsel zählen soll. Das funktioniert auch soweit, solange man die Schleife manuell stoppt. Sobald ich aber das Stoppen durch eine weitere True/False-Entscheidung hervorrufe, wird offenbar die Schleife zu früh abgebrochen, sodass mir kein einziger Wechsel angezeigt wird.
Jetzt habe ich schon mal im Forum nach Warteoperationen gesucht, jedoch waren die alle nicht tauglich, bzw. ich hatte nicht den gewünschten Effekt.
Gibt es eine Funktion mit der man ein boolschen Wert verzögern kann? Oder habe ich eine Kleinigkeit im VI übersehn?
Schleife wird zu früh beendet... Wie lässt sichs beheben?
Hallo,
ich denk mal, ich weiss, wo dein Fehler liegt.
Du musst die die True/False-Entscheidung innerhalb der While-Schleife einbauen.
Eine While-Schleife wird nämlich erst ausgeführt, wenn alle Eingänge anliegen. Also, wenn deine Stop-Bedingung für die While-Schleife auch außerhalb der While-Schleife liegt, wird sie nur einmal ausgeführt.
MfG, 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!
Schleife wird zu früh beendet... Wie lässt sichs beheben?
Deine Aussage klang ganz vernünftig und schien mir einleuchtend. Nachdem ich den Vergleichsoperator in die Schleife geschmissen hatte, habe ich dennoch nicht die gewünschten Ergebnisse bekommen. Woran liegts?
Schleife wird zu früh beendet... Wie lässt sichs beheben?
Also hier ist das VI.
Was nicht klappt, ist auf der rechten Seite in der Schleife zu finden. Momentan ist nur die Bedingung in der Schleife, ich hatte jedoch auch mehr in die Schleife gepackt, jedoch ohne Erfolg. Was passt hier nicht? Warum wird die Schleife zu früh beendet?
Schleife wird zu früh beendet... Wie lässt sichs beheben?
Hallo,
zu deinem letzen VI: Die While-Schleife läuft GENAU 1x durch.
Wieso: du vergleichst: Anzahl der Schleifendurchläufe deiner For-Schleife (ergibt sich aus der Zeilenanzahl der 2D-Arrays per Autoindexing) mit der aus Array-Size zurückgegebenen Zeilenanzahl der 2D-Arrays -> du vergleichst also N=N ergibt TRUE. Fertig.
Ich verstehe leider nicht, was deine zusätzliche Abbruchbedingung sein soll, bzw. was willst du eigentlich mit der While-Schleife da am Schluß berechnen?
MfG, 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!
Schleife wird zu früh beendet... Wie lässt sichs beheben?
Versteh ich das richtig, daß du im endeffekt wissen möchtest, wie oft dein grenzwert pro zyklus überschritten wird?
Hinweis: Meine Lösungsvorschläge sind immer mit Vorsicht zu geniessen! Es gibt vermutlich wesentlich elegantere Ansätze. Ich poste dennoch, da ich mir auf diese Weise das entsprechende Feedback erhoffe!
21.05.2007, 12:55 (Dieser Beitrag wurde zuletzt bearbeitet: 21.05.2007 12:58 von Excalibour.)
Schleife wird zu früh beendet... Wie lässt sichs beheben?
Hi,
habe das Problem anders gelöst:
Verglichen wird jetzt nicht N von der for-schleife mit Zeilenzahl des Arrays sondern N von der for-schleife mit i von der While-Schleife. Dann wird die while-Schleife gestoppt, wenn alle Datensätze bearbeitet wurden.
Danke aber trotzdem für alle Ratschläge!
@canix: Ja, eigentlich schon... Hast Du einen besseren Vorschlag als die while-schleife?
Schleife wird zu früh beendet... Wie lässt sichs beheben?
Hallo,
zwei einfachere Ansätze:
1. Nimm statt While-Schleife eine For-Schleife mit Autoindexing deines Boolschen Array oder noch besser:
2. Addiere doch gleich eine Variable in deiner ersten Schleife (innerhalb der Case-Struktur, in der das Boolsche-Array gebaut wird) auf, dann kannst du dir die zweite Schleife komplett sparen!
MfG, 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!
Schleife wird zu früh beendet... Wie lässt sichs beheben?
' schrieb:@canix: Ja, eigentlich schon... Hast Du einen besseren Vorschlag als die while-schleife?
Jou, ich würde das alles in EINEM Schritt in der For-Schleife machen.
Einen neues 2d-Zähler-Array (des sich mit jedem Zyklus erweitert) durchschleifen und in dem Case, wo auf Grenzwertüberschreitung geprüft wird, den entsprechenden Zähler bezüglich Zyklusnummer hochzählen (den Index für das Zähler Array kannst du aus der Modulo-fkt. beziehen). Bei der Umsetzung kannst Du Dich in etwa an dem Zähler orientieren, der bereits vorhanden ist und zählt wieviele Zyklen "gefeuert" werden.
Das Array würde nachher folgendermassen aussen:
Index 0: 3599 3601
Index 1: 120 7080
Index 2: 5000 2200
...
Index 159: 4300 2900
Da du ja mal meintest, Du wolltest zwei Gruppen bilden (Zyklen mit und ohne Grenzwertüberschreitung) würde ich auf die letzte Version aus diesem Beitrag aufbauen: http://www.LabVIEWforum.de/index.php?showtopic=5843#
und zwar 7.1: "versuch mit schleife 5.vi"
komme erst heute abend dazu dir ein beispiel zu posten
gruß
Jens
Hinweis: Meine Lösungsvorschläge sind immer mit Vorsicht zu geniessen! Es gibt vermutlich wesentlich elegantere Ansätze. Ich poste dennoch, da ich mir auf diese Weise das entsprechende Feedback erhoffe!