LabVIEWForum.de - Problem Eventschleife

LabVIEWForum.de

Normale Version: Problem Eventschleife
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Experten,

wir steigen grad auf v2013 um und schon hab ich ein Problem.

Ich hab ne Eventschleife, die bei Wertänderung des Schiebereglers eine whileloop ausführt. Bei dem Event ist "limit maximum instances..." auf 1 gesetzt.
Wenn ich den Schieberegler mehrfach ändere, während ich in der while-Schleife hänge werden die events zwar alle mitgeloggt (siehe Eventmanager), beim beenden der while-Schleife werden allerdings alle events bis auf die letzten 2 rausgeschmissen (flushed). bedeutet, daß das event 3x ausgelöst wird...(daß ich die Whileloop 3x beenden muß)

Kann mir da jemand auf die Sprünge helfen, was ich falsch mache?

Danke
Hallo T,

Zitat:was ich falsch mache?
Wozu die While-Loop im Event-Case?
Grundregel bei Events: immer so schnell wie möglich abarbeiten. Das bedeutet u.a., keine Loops mit Wartezeit zu verwenden…
Das hier gezeigte Beispiel ist zur Fehlersuche stark verkürzt.
Im Originalprogramm wird durch änderung des Schiebereglers ein Filter verändert und ein Spektrometer ausgelesen bis der Bediener zufrieden ist mit seiner Änderung (-> Stop While).

Merkwürdige Grundregel....

Hab seit ca. 10 Jahren (gebs Eventschleifen seit v7 oder v8?) meinen Programmcode für das jeweilige event direkt in die Eventschleife gehauen und eigentlich oft mit while-loops darin gearbeitet. Gab bisher keine Probleme....

Grüße
Hallo T,

du willst also jedesmal, wenn der Schieberegler verschoben wird, eine Berechnung erneut durchführen.
Bis hierhin alles schön.

Aber der Einsatz einer While-Loop widerspricht eben diesem Ansatz: bei jedem Schieben wird ein neues ValueChange-Event gefeuert.
Wozu also die While-Loop, wenn der Event-Case doch sowieso erneut aufgerufen wird???

Zitat:eigentlich oft mit while-loops darin gearbeitet. Gab bisher keine Probleme....
- Du musstest dazu aber immer das defaultmäßige UI-Blocking im Event ausschalten!
- Du hattest bisher immer schon das Problem, dass sich dadurch weitere Events aufgestaut hatten, die erst nach Beenden dieses Event-Cases abgearbeitet werden konnten. Das gibt für den unbedarften User sehr unschöne Effekte…
Mir ist schon klar, daß mit jeder Änderung des Schiebereglers ein neuer event ausgelöst wird. Das habe ich gehofft zu verhindern, indem ich bei den Einstellungen des Events die max. Instances auf 1 gesetzt hab. Allerdings macht LV wohl daraus eine 3....

Ich will mit dem event in ein unterprgramm springen (while), in welchem alle 200ms ein Spektrum eingelesen wird und der Bediener diverse Sachen ändern kann (Lichteinkopplung manuell ändern, oder eben den Schieberegler weiter zu/auf machen). Mit dem Stop-Knopf wird die Whileschleife beendet und man kann sich einem anderen Programmpunkt zuwenden...

Weil der benutze.....

Sorry. Danke für die Hilfe!

Beim schreiben isses mir klargeworden. Ich binde das event einfach an einen anderen Knopf, der das unterprogramm zum Sprektrum auslesen startet, in welchem dann der Schieberegler seine Funktion erfüllen kann.

Liegt wohl am Freitag.....werd einfach mal Schluß machen.

Schönes Wochenende!
Referenz-URLs