Stoppen einer For-Schlaufe wenn Case-Schlaufe nicht mehr erfuellt
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!
Stoppen einer For-Schlaufe wenn Case-Schlaufe nicht mehr erfuellt
So, nach dem das eine Erledigt waere, hab ich einen Fehler entdeckt, an den ich gar nicht dachte.
Wie kann ich es erreichen, dass ich wenn ich eine For-Scheife in einer Case-Abfrage habe, die For-Schleife nicht mehr ablaeuft wenn der Case nicht mehr erfuellt ist. Denn sitze ich da erst mal drin, dann arbeitet der die ab und schaut danach erst ob die Bedingung noch erfuellt ist.
Danke,
Boris
Anzeige
27.10.2006, 11:12 (Dieser Beitrag wurde zuletzt bearbeitet: 27.10.2006 11:15 von Achim.)
Stoppen einer For-Schlaufe wenn Case-Schlaufe nicht mehr erfuellt
Hi,
du musst auf ne While-Schleife umschwenken, ne FOR-Schleife kannst du definitv nicht abbrechen...Aber: Wie soll das überhaupt gehen: Wenn du wie du schreibst die FOR in nem Case hast, dann wird der Case ja ohnehin nicht mehr abgefragt, eben weil du schon drin bist! Das ist doch rein logisch unmöglich...beschreib mal, was du eigentlich vorhast...
Gruss
Achim
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Stoppen einer For-Schlaufe wenn Case-Schlaufe nicht mehr erfuellt
' schrieb:So, nach dem das eine Erledigt waere, hab ich einen Fehler entdeckt, an den ich gar nicht dachte.
Wie kann ich es erreichen, dass ich wenn ich eine For-Scheife in einer Case-Abfrage habe, die For-Schleife nicht mehr ablaeuft wenn der Case nicht mehr erfuellt ist. Denn sitze ich da erst mal drin, dann arbeitet der die ab und schaut danach erst ob die Bedingung noch erfuellt ist.
Danke,
Boris
For Schleien kann man nicht stoppen. Du musst stattdessen eine While-Schleife verwenden:
Stoppen einer For-Schlaufe wenn Case-Schlaufe nicht mehr erfuellt
In der For-Schleife werden meine Messstellen abgefragt und gemessen, berechnet ... Jedoch muss ich den Durckscanner von Hand weiter schalten, dazu zeigt mir ein Laempchen an, dass ich ihn umschalten soll und dann geb ich mit einem Taster auf der Frontpanal das Signal, dass es weiter machen kann. Das heisst ich muss quasi jeden For-Schleifen Schritt bestaetigen.
Hmmm, mit ne While-schleife.... muss mal schauen wie das klappen soll.
Wenn einer ein Tip hat, waere ich dankbar, hab nicht mehr viel Zeit.
Danke,
Boris
Hab gerade darueber nachgedacht. Aber das kann gar nicht gehen. Wenn ich die While-Schleife in der For-Schleife habe, dann macht die For schleife trotzdem weiter bis sie fertig ist, auch wenn die Aktionen in der While-Schleife nicht ausgefuehrt werden weil ich nicht bestaetige.
Wenn ich die While schleife vor die For-schleife mache, dann faengt diese ja immer wieder von neuem an zu zaehlen und das will ich auch nicht, da er ja nur einmal 48 Messstellen abfragen soll und nicht immer wieder von neuem.
Gibt es da nicht was, was auf ein Signal vom Benutzer wartet? Sowas wie ein "Wait on Input" durch einen Taster. Und wie sieht das auch, wie verdrahte ich das.
Stoppen einer For-Schlaufe wenn Case-Schlaufe nicht mehr erfuellt
Die Vorschleife lässt sich vielleicht nicht abbrechen -aber wenn man den ganzen Inhalt der Forschleife in ein Case packt und die Casebedingung in einem Schieberegister der umfassenden Forschleife hat, kann man sie faktisch auch von innen deaktivieren.
Allerdings rate ich aus Übersichtsgründen auch zur StateMachine.
Stoppen einer For-Schlaufe wenn Case-Schlaufe nicht mehr erfuellt
Hi,
wenn ich melph richtig verstanden habe, wird aber die FOR-Schleife trotzdem bis zum Ende durchgearbeitet, allerdings wird darin dann immer ein leerer Case angesprungen...nicht sehr effektiv! Das hatte ich mir als Workaround auch schon gedacht, wollte aber so nen Mist (...tschuldigung...) gar nicht erst erwähnen!
Gruss
Achim
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Stoppen einer For-Schlaufe wenn Case-Schlaufe nicht mehr erfuellt
' schrieb:Hi,
wenn ich melph richtig verstanden habe, wird aber die FOR-Schleife trotzdem bis zum Ende durchgearbeitet, allerdings wird darin dann immer ein leerer Case angesprungen...nicht sehr effektiv! Das hatte ich mir als Workaround auch schon gedacht, wollte aber so nen Mist (...tschuldigung...) gar nicht erst erwähnen!
Gruss
Achim
Sieht schlecht aus -stimmt.
Tatsächlich ist es kompilerabhängig, ob deaktivierte Forschleifen weitergeführt werden. Ist im (privaten)Falsecase nur eine Belegung der Casevariable mit False vorhanden wird ein optimierender Compiler das als Einbahnstrasse erkennen und entsprechend umsetzen. Wie stark LabVIEW vorkompiliert weiß wohl nur NI. Wahrscheinlich wird LabVIEW die leere Forschleife nur ganz durchzählen, wenn man ihm auf die Finger schaut (quasi Schrödingers <strike>Katze</strike> VI).
Und selbst wenn nicht: dann investiert man halt ein paar Prozessorschritte pro überflüssigen Schleifendurchlauf -das merkt man unter LabVIEW eh nicht (bzw nur im Embedded Bereich). Als "mach-mal-schnell"-Lösung ist das ok -bei mehr Zeit sollte man das schon aus ästhetischen Gründen als Statemachine umsetzen(die im übrigen aber auch nicht viel anders arbeitet).
Stoppen einer For-Schlaufe wenn Case-Schlaufe nicht mehr erfuellt
Hmm also vielleicht hab ich ja irgendetwas komplett falsch verstanden.
Du hast also eine For Schleife, die deine Messstände abfrägt. Du musst jedoch jeden einzelnen Schritt bestätigen?
Also brauchst du im Prinzip eine For Schleife, die mit ihren Iterationen wartet, bis du einen Knopf drückst. Richtig?
Das kann man doch ganz einfach mit einer While Schleife in der For Schleife lösen.
Erstell wie gehabt deine For Schleife und pack dann zusätlich eine leere While Schleife (mit einem Wait und einem Stop Button) hinzu.
Dann wird eine Iteration von der For Schleife abgearbeitet und dann steht das Programm so lange, bis du die While Schleife per Stop Button beendest. Das gleiche dann für die nächste Iteration usw.
edit: Hmm habe gerade gesehen, du hast ja einen 2. Thread mit dem selben Problem erstellt und dort wurde anscheinend schon geholfen.
A few weeks of developement and testing can save a WHOLE afternoon in the library!