LabVIEWForum.de - Ereignisstruktur mit Initialisierung?

LabVIEWForum.de

Normale Version: Ereignisstruktur mit Initialisierung?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen!

Ich möchte einen bestimmten Code ausführen, wenn sich 2 boolsche Schalterwerte ändern (das geht problemlos mit der Ereignisstruktur). Weiterhin soll der gleiche Code beim Programmstart ausgeführt werden. Dafür konnte ich jedoch kein Ereignis finden.

Lässt sich das irgendwie mit der Ereignisstruktur kombinieren?

Aktuell mache ich es so, dass ich dafür keine Ereignisstruktur nutze, sondern eine einfache While-Schleife. Aber die Ereignisstruktur hat sicher ihre Daseinsberechtigung. Daher vermute ich, dass es sauberer ist, das damit zu lösen als mit einer separaten While-Schleife, die laufend boolsche Werte überprüft und das SubVI "Erster Aufruf" beinhaltet.

Grüße
Das geht z.B. mit einer State-Machine. Hab' Dir schnell was zusammengeklickt.
[attachment=26776]
Lv85_img

Gruß Markus

EDIT: Der entsprechende Case in meinem Bsp. wird ausgeführt, wenn beide Schalter auf True sind oder zu Beginn Deines Programms.
Das Theme war kürzlich erst dran. Aber ehe ich jetzt suche: Ich mache das immer so:
[attachment=26777]
Es handelt sich hier um eine Art Nonsens-Code - es geschieht garantiert keine Wertänderung. Aber das ist egal, denn bei jeder Zuweisung an den Eigenschaftsknoten "Wert(SGL)", egal ob es sich um den alten oder einen neuen Wert handelt, wird das Ereignis ausgelöst.
Ein ganz kleine Nachteil dieser Variante ist, daß der Schalter wegen der Erstellung von lokalen Variablen kein Latch-Verhalten mehr haben darf. Man muß ihn also im Eventcase mit einer weiteren lokalen Variablen rücksetzen.

Anmerkung zu den Beispielen von Markus:
State machine: Das ist nicht das was Du wolltest. Bei der Initialisierung wird das Ereignis gar nicht ausgeführt.
Dynamisches Event: Das ist die echte Alternative zu meinem Beispiel. Es ist etwas aufwändiger, aber für alle, die ihren Programmierer-Stolz darein setzen, keine lokalen Variablen verwendet zu haben, goldrichtig.
Dynamisches Event 2: Hier wurden unnötig beim Stop-Knopf lokale Variable verwendet. Besser: Stop als Latch, den Knopf in der unteren Schleife anschließen, in der oberen Schleife im Event den Anschluß "Neuer Wert" verwenden.
Alternativ zu Lucki's Vorschlag (wenn Du in Deinem Programm keine State-Machine verwendest) geht es mit einem dynamischen Event:
[attachment=26778]
Lv85_img

Ein dynamisches Event ist ähnlich wie das "Value Signaling". Da kannst Du jederzeit ein Event programmatisch erzwingen.

Gruß Markus

EDIT: Hier ein erweitertes Bsp. zum Verständnis:
[attachment=26779]
Lv85_img
Dankesehr!

Ich setze nun einfach einen der boolschen Werte zu Beginn über "Wert signalisierend" auf den Standardwert.

Grüße
Referenz-URLs