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 habe ein Problem. Eine Kollege und ich arbeiten an einem mittelgroßen Programm was sich mit auslesen von Messdaten beschäftigt. Unsere Oberfläche ist eine Registerkarte und diese steuern wir mit einer Ereignisstruktur an. Da die Messdaten kontinuierlich ausgelesen und angezeigt werden sollen, lies sich meiner Meinung nach eine Whileschleife innerhalb eines Ereignisses nicht vermeiden. (Auch wenn ich hier gelesen habe, dass das keine gute Lösung ist Whileschleifen in Ereignisstrukturen einzubauen)
Nun ist das Problem, dass bei einem Messablauf das Frontpanel nicht mehr reagiert, also sich unser Anhalt-Button nicht drücken lässt. Das Häckchen bei "Frontpanel bis zum Ausführungsende des Ereignis-Case sperren" ist schon raus, also daran liegt es schon einmal nicht. Der Button der die Messung anhalten soll, ist per Referenz->Eigenschaftsknoten in die Whileschleife eingebaut. Das kuriose ist, dass es schon einmal funktioniert hat, also es nicht unmöglich sein kann, es so zu lösen. Nur leider geht es jetzt nicht mehr und die zwei zu vergleichenden Backupdateien beinhalten einen ganzen Tag arbeit und ich finde einfach die Änderung nicht, die diesen Effekt ausgelöst haben könnte.
Für Anregungen wäre ich sehr dankbar, da ich nun schon mehrere Stunden in die Fehlersuche investiert habe.
Ich habe ein Problem. Eine Kollege und ich arbeiten an einem mittelgroßen Programm was sich mit auslesen von Messdaten beschäftigt. Unsere Oberfläche ist eine Registerkarte und diese steuern wir mit einer Ereignisstruktur an. Da die Messdaten kontinuierlich ausgelesen und angezeigt werden sollen, lies sich meiner Meinung nach eine Whileschleife innerhalb eines Ereignisses nicht vermeiden. (Auch wenn ich hier gelesen habe, dass das keine gute Lösung ist Whileschleifen in Ereignisstrukturen einzubauen)
Nun ist das Problem, dass bei einem Messablauf das Frontpanel nicht mehr reagiert, also sich unser Anhalt-Button nicht drücken lässt. Das Häckchen bei "Frontpanel bis zum Ausführungsende des Ereignis-Case sperren" ist schon raus, also daran liegt es schon einmal nicht. Der Button der die Messung anhalten soll, ist per Referenz->Eigenschaftsknoten in die Whileschleife eingebaut. Das kuriose ist, dass es schon einmal funktioniert hat, also es nicht unmöglich sein kann, es so zu lösen. Nur leider geht es jetzt nicht mehr und die zwei zu vergleichenden Backupdateien beinhalten einen ganzen Tag arbeit und ich finde einfach die Änderung nicht, die diesen Effekt ausgelöst haben könnte.
Für Anregungen wäre ich sehr dankbar, da ich nun schon mehrere Stunden in die Fehlersuche investiert habe.
MfG
Tholo
Nur ne Idee..
kannst du nicht "Auslesen" und "Haltbutton" in zwei seperate While schleifen legen die parallel abgearbeitet werden?
Du solltest dann mit dem Haltebutton einen Eigenschaftsknoten einrichten, der auch die Whileschleife des Messvorgangs beendet.
' schrieb:(Auch wenn ich hier gelesen habe, dass das keine gute Lösung ist Whileschleifen in Ereignisstrukturen einzubauen)
Stimmt. Ist nicht nur keine gute, sondern auch eine schlechte.
Probier' mal eine Wartezeit von 1ms (schöner natürlich 25ms) in der While-Schleife.
Mach' dir lieber ein Flag im Event und poll' das in einer extra While-Schleife (die an einer geeigneten Stelle sitzt). Ist zwar auch nicht gut, aber auch nicht so schlecht.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Irgendwie hat ein Häckchen in einem anderen Ereignis wohl Einfluss genommen auf meinen Mess-Case und damit das Panel gesperrt. Hab jetzt für alle Cases das Häckchen rausgenommen und es funktioniert. Jetzt mach ich erstmal Feierabend und morgen schau ich dann welcher Case das Problem war.
Würde mich mal interessieren, ob es in LV ein "Vergleichstool" gibt...
Hallo!
Welche Operation führt denn der Stopp-Button aus? Latch? A ne! hast ja nen Eigenschaftsknoten gemacht...Hmmm.
Poste doch mal den relevanten Teil!
Prinzipiell würde ich aber tatsächlich die Messung in eine parallele Schleife stecken, und diese von der Ereignisstruktur aus "triggern". Dann hast Du auch dieses Problem nicht!
Gruß
Mit einem freundlichen Wort und etwas Gewalt erreicht man viel mehr als nur mit einem freundlichen Wort. [...Marcus zu Lennier, B5]
Das Vergleichstool hab ich schon benutzt gehabt, nur der Nachteil ist, dass LabVIEW es nicht zulässt verschiedene gleichnamige SubVIs gleichzeitig zu öffnen. Außerdem waren über 1340 Änderungen eingetragen und das hätte ewig gedauert.
Ansonsten würde mich mal noch interessieren, wie man einen kontinuierlichen Messablauf sauber programmieren kann ohne eine ungeliebte While-Schleife in die Ereignisstruktur zu packen bzw. auch was so schlimm daran ist?
Auf horizonterweiternde Antworten würde ich mich freuen.
' schrieb:Ansonsten würde mich mal noch interessieren, wie man einen kontinuierlichen Messablauf sauber programmieren kann ohne eine ungeliebte While-Schleife in die Ereignisstruktur zu packen bzw. auch was so schlimm daran ist?
Stichwort: State Machine
Die While-Schleife ist nicht ungeliebt. Sie ist sogar "lebensnotwendig" für ein LV-Programm...Nur ist ein Event im Normalfall ein kurzzeitiges Auftreten einer Bedingung, die etwas anderes anstößt, z.b. nen Zustandswechsel. Ein fortdauernder Vorgang (kontinuierliches Datenlesen) im Eventcase ist einfach schlechter Programmierstil! Man kann das Eventcase ja auch "winzig klein" machen und die Datenerfassung daneben in der gleichen Schleife machen...das ist auf jeden Fall besser und sauberer.
Mir fehlt jetzt grad ein bisschen die Zeit...
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)