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!
ich würde gerne eine while-Schleife durch Buttons stoppen und pausieren.
Das Implementieren der Stopfunktion ist einfach (lediglich den Button mit der Schleifenbedingung verbinden). Aber wie schaffe ich es, die Schleife durch einen Pausenbutton anzuhalten, und später wieder genau dort weiter laufen zu lassen (i und alle Schieberegister sollen dabei unverändert bleiben). Es soll einfach nur das Programm pausiert werden.
Im Prinzip macht soetwas der Button Pause der Applikationssteuerung. Aber diese Leiste sollte in meiner Oberfläche ausgeblendet sein.
Ich habe mal versucht, es mit dem VI "Auf Frontpanelaktivität warten" umzusetzen. Allerdings ist es dabei dann egal, welche Aktivität ich auslöse. Es sollte jedoch nur beim erneuten Drücken des Pausebuttons weitergehen.
Events kann ich anscheinend auch nicht verwenden, weil das Programm keine Events auslöst, solange es angehalten ist.
Eine Möglcihkeit wäre, eine Whileschleife in der Whileschleife zu starten, solange bis der Pausebutton wieder auf False steht und jeweils ne kleine Verzögerung einabuen. Aber das belastet doch den Prozessor durchgehen.
Hat jemand eine kluge Idee?
LG
Torsten
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" (Konrad Zuse)
Anzeige
16.02.2009, 10:04 (Dieser Beitrag wurde zuletzt bearbeitet: 16.02.2009 10:13 von eg.)
Wenn du das i-Terminal "selber" machst mit einem Shiftregister und diese uninitialisiert sind, kannst du die Schleife verlassen, und beim nächsten eintretten in die Schleife hast du dieselben Werte wie beim verlassen. Die Schleife wird dabei aber immer ganz abgearbeitet.
Ich kenne das so nicht, das ein Programm angehalten wird, nur das einige Abschnitte übersprungen werden, mit z.Bsp. einer Case-Struktur.
.·´¯)--> Leben ist das, was dir passiert, wenn du eifrig dabei bist andere Pläne zu machen <--(¯`·.
so wie Du geschrieben hast. Es ist keine Mehrbelastung für den Prozessor.
Ein- und Ausschalter liegen aufeinander.
kpa
Bei der Lösung gefällt mir nicht, dass die Reaktion auf den WEITER-Klick unter Umständen erst mit 200ms Verzögerung kommt. Setze ich die Verzögerung auf 0 runter, dann merkt man das Ganze schon erheblich auf der CPU (Auslastung durch LabVIEW steigt von 01 aud 50).
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" (Konrad Zuse)
' schrieb:Kannst es mit dem Timeout und Event-Struktur probieren. Kommt Pause-Event, machst Timeout auf -1, kommt es erneut, machst Timeout auf 0.
Die Lösung scheint ganz gut zu funktionieren. Mal schaun was ich da noch optimieren kann. Im Moment stürzt er noch ab wenn ich im Pausenmodus bin und den Stoppbutton drücke. Aber das bekommt man sicherlich noch hingebogen.
Vielen Dank soweit.
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" (Konrad Zuse)
' schrieb:Wenn du das i-Terminal "selber" machst mit einem Shiftregister und diese uninitialisiert sind, kannst du die Schleife verlassen, und beim nächsten eintretten in die Schleife hast du dieselben Werte wie beim verlassen. Die Schleife wird dabei aber immer ganz abgearbeitet.
Ich kenne das so nicht, das ein Programm angehalten wird, nur das einige Abschnitte übersprungen werden, mit z.Bsp. einer Case-Struktur.
Das müsste ich mir nochmal überlegen, ob ich damit weiter komme. Bin gar nicht auf die Idee gekommen "i" durch nen eigenen Zähler zu ersetzen. Mal sehen was das für Vor und Nachteile mit sich bringt.
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" (Konrad Zuse)