LabVIEWForum.de - Eventstructure friert ein, hängt sich auf

LabVIEWForum.de

Normale Version: Eventstructure friert ein, hängt sich auf
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Abend,

ich möchte ein VI schreiben um ein Messgerät zu steuern. Ein nötige Funktion ist dabei das erhöhen/erniedrigen einer Spannung.
Da der zur Verfügung stehende Rechner sehr langsam ist und es nach meinem bescheidenen LabVIEW Wissen die sauberere Art ist wollte
ich die Eventstruktur verwenden.

Im Highlighting Modus und auch wenn man ein WAIT in das EVENTCASE einbaut hängt sich das VI auf wenn man zu oft auf den Button zum erhöhen bzw erniedriegen
drückt.

Frage: Wie erreiche ich das der EventBuffer ausgestellt wird ? Der scheint mir das Prob zu sein.

Es kommt durchaus vor das man besagte Buttons 10 mal pro Sekunde drückt, angenommen das ausführen des Events dauert eine Sekunde. Klickt der Nutzer
dann ohne es zu wissen immer mehr den Buffer voll bis es abschmiert ?


Vielen Dank

Lv71_img
kann es sein das man trotz eventstructur noch immer die while loop aussenrum braucht ?
es scheint dann zu gehen, auch wenn es nervig ist das der EVENT BUFFER an ist. Wenn die Ausführung eines Events lange dauert
schiesst man so mit seinen Befehlen übers Ziel hinaus.

finde das total doof an LabVIEW immer so eine false loop drum zu basteln, geht das auch anders ?


Danke
' schrieb:kann es sein das man trotz eventstructur noch immer die while loop aussenrum braucht ?
Richtig erkannt. Sonst läuft das VI nur einmal, bis das Event abgearbeitet wurde.
' schrieb:es scheint dann zu gehen, auch wenn es nervig ist das der EVENT BUFFER an ist. Wenn die Ausführung eines Events lange dauert
schiesst man so mit seinen Befehlen übers Ziel hinaus.
Abarbeitungen, die lange dauern, programmiert man im Normalfall auch nicht IN den Fall einer Eventstruktur.
' schrieb:finde das total doof an LabVIEW immer so eine false loop drum zu basteln, geht das auch anders ?
2. Beitrag hier, und schon LabVIEW doof schimpfen?Noe

Gruß, Jens

Offtopic2
P.S.: Deine Tastatur hat doch eine Shift-Taste? Bitte auch sinnvoll verwenden (vgl. LVF-Regeln, letzter Abschnitt).
Die While-Loop ist dann auch sinnvollerweise mit einem Button verknüpft, das einen Namen wie Stopp oder Ende oder... trägt.
Natürlich benötigt der Stopp-Button einen eigenen Event-Fall, in dem der Knopf gelesen wird und sein Wert an das Stopp-Terminal übergibt.
Vielleicht ist das Programm auch wegen des 2-Sekunden Wartens so träge?Hmm
Ich weiss nicht ob es bereits Queues in LabVIEW 7.1 gibt, jedoch würde dir diese Art der Producer/Consumer Architektur dein Problem wahrscheinlich lösen Wink
Hier mal ein Screenshot, da ich nicht auf 7.1 runterspeichern kann Dry

[attachment=22987]

Hoffe das hilft dir weiter
' schrieb:Ich weiss nicht ob es bereits Queues in LabVIEW 7.1 gibt, jedoch würde dir diese Art der Producer/Consumer Architektur dein Problem wahrscheinlich lösen Wink
Hier mal ein Screenshot, da ich nicht auf 7.1 runterspeichern kann Dry
Queues und Notifier gibt es schon ewig.

Offtopic2
@unicorn:
' schrieb:Vielleicht ist das Programm auch wegen des 2-Sekunden Wartens so träge?Hmm
Bitte lieber eigenen Beitrag nochmals editieren als im 2-Minuten Rhythmus 2 Nachrichten schreiben.Wink(s. auch LVF-Regeln).

Gruß, Jens
Vielen Dank für die vielen Antworten, tolles Forum hier.


Zu meiner Verteidigung :

Die Regeln habe ich gelesen, aber meine LabVIEW version steht im Profil, aber sehe schon den Nutzen und werde sie immer mit angeben ab sofort.

Die 2 Sekunden Wartezeit hatte ich deshalb ins VI geschrieben weil die Spannung an meiner Probe nicht in beliebig grossen Schritten geändert werden darf.
Gibt der Nutzer beispielsweise eine Erhöhung um 2 V ein so braucht die VI Ausführung vielleicht länger als der Geduldsfaden der
Nutzer ist (durch das Programm wird die Spannung in 0,05 V Schritten mit Pausen dazwischen geändert ), die klicken nochmal und am Ende habe ich vielleicht 4 , 8 oder mehr Spannung auf der Probe.

Ich brauch also einen Button der anzeigt das die Ausführung noch läuft (dadurch das er eingedrückt ist) und während dieser Zeit keine Befehle akzeptiert/ Events generiert.

Die Antwort von Nussbaumer verstehe ich leider nicht , aber werde mir das mal anschauen. jedenfalls scheint es ein Lösung ohne Eventstructur zu sein (Wollte gerne Event benutzen weil ich dachte das wäre ein gutes Konzept, so spart man sich lauter leere Case Fälle).

Darum vielleicht nochmal die Frage:
Wie werde ich den Event Buffer los oder ist EventStructur wie von Jens geäußert nicht geeignet ?
Bei einer while Schleife könnte man ja die Button disabeln , nur das EventStructur scheint mir eben die Buttons in gewisser Weise zu ignorieren.
Die Buttons dienen bei einer Eventstructur eher dazu das der Benutzer was drücken kann statt der Steuerung des Programms.

Danke
Habe dir mal ein Beispiel gemacht, das nur alle 2 Sek. ein Event verarbeitet.
Denn "langsamen Prozess" (im Bsp. die 2 Sek. warten) würde ich so machen wie Nussbaumer gezeigt hat.
Somit fasse ich also nochmal zusammen was ich bisher dabei gelernt habe:


- Den EventStructur Buffer kann man nicht ausschalten


- Selber Quese benutzen wenn man Angst hat Befehle im Buffer könnten Probleme breiten (Lsg von Nussbaumer)
Referenz-URLs