LabVIEWForum.de - Event durch ein anderes Event triggern

LabVIEWForum.de

Normale Version: Event durch ein anderes Event triggern
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hiho,

ich habe eine zentrale event-struktur fürs user-interface.. es kommt aber ab und zu mal vor, dass ein event genau das gleiche macht wie ein anderes event, nur mit irgendeinem kleinen zusatz.. durch subvis lässt sich das nur umständlich lösen, weil viel auf inputs und outputs zugegriffen wird, die man alle durchschleifen müsste..
jedenfalls würde es sich doch anbieten, in ein bestimmtes event folgendes zu schreiben: "tu das und das, danach triggere event nr. x" - nur machts LabVIEW da einem nicht so einfachWink.. alle variablenänderungen o.ä., die man in einem event vornimmt, "vergisst" LabVIEW wieder, sobald das event ausgeführt ist - auf diese weise kann man also nicht anschließend (oder gar rekursiv) ein anderes event triggern..
also, gibts da eine möglichkeit oder muss ich subvis bzw. c&p machen?
Ich würde so ein Problem ja in weitem Bogen umgehen, indem ich eine Queued-State-Machine verwende. Guck mal in die Vorlagne unter File -> New.

' schrieb:alle variablenänderungen o.ä., die man in einem event vornimmt, "vergisst" LabVIEW wieder, sobald das event ausgeführt ist -

Bahn
' schrieb:jedenfalls würde es sich doch anbieten, in ein bestimmtes event folgendes zu schreiben: "tu das und das, danach triggere event nr. x" -
Dann setzt du PropertyNode "ValueSignaling", und schon springst du in ein anderes ValueChange Event deiner Event-Structure. Oder benutzerdefinierte Events, die kannst du jederzeit selber auslösen.
' schrieb:nur machts LabVIEW da einem nicht so einfachWink.. alle variablenänderungen o.ä., die man in einem event vornimmt, "vergisst" LabVIEW wieder, sobald das event ausgeführt ist -
Das verstehe ich jetzt nicht, wenn du etwas neu setzt, dann wird das doch nicht "vergessen"?
' schrieb:auf diese weise kann man also nicht anschließend (oder gar rekursiv) ein anderes event triggern..
also, gibts da eine möglichkeit oder muss ich subvis bzw. c&p machen?
s.o.

Oder halt noch besser, schrotti's Vorschlag.

Gruß, Jens
Ich mache auch gelegentlich, und zwar so:
Angnommen, der Eventcase, den Du nach einem anderen Eventcase noch aktivieren willst, ist "Element1, Wertänderung". Dann kommt in den betreffenden Ereigniscase einfach noch das hinein:
[attachment=20891]
Es findet zwar reale keine Wertänderung statt (die wäre ja auch nicht erwünscht), aber das Ereignis wird trotzdem aktiviert.
Gruß Ludwig
Edit: Jens war schneller..
' schrieb:Ich mache auch gelegentlich, und zwar so:
Angnommen, der Eventcase, den Du nach einem anderen Eventcase noch aktivieren willst, ist "Element1, Wertänderung". Dann kommt in den betreffenden Ereigniscase einfach noch das hinein:
[attachment=48942:wertaenderung.png]
Es findet zwar reale keine Wertänderung statt (die wäre ja auch nicht erwünscht), aber das Ereignis wird trotzdem aktiviert.
Gruß Ludwig
Edit: Jens war schneller..

Hi,

genau das geht bei mir nicht - oder ich geh da falsch ran.. hier ein kleines beispiel:

LV 8.5.1: [attachment=20898]

es werden 2 event cases behandelt - der erste event fügt nur eine zeile mit der uhrzeit an, der zweite event schaltet das lämpchen an/aus, soll aber ebenfalls den ersten event triggern und die aktuelle uhrzeit ausgeben..
getriggert wird der erste event durch den entsprechenden boolean button (value change), im zweiten event hab ich wie in deinem beispiel die wertzuweisung für den ersten button eingebaut (property -> value), das wird aber von LabVIEW ignoriert! auch wenn der wert wirklich geändert wird (z.b. mit einem "not" dazwischen), sieht man nur, dass der trigger 1 knopf (mit-)gedrückt wird, aber es wird nicht als event erkannt für den nächsten schleifendurchlauf!

das ist es auch was ich mit dem "vergessen" gemeint habe (etwas unglücklich ausgedrückt) - wenn man in einem event irgendeine variable verändert, die als trigger für ein anderes event benutzt wird, wird diese änderung nicht als event für den nächsten durchlauf hergenommen! (der geänderte wert bleibt natürlich)..
Am besten machst du dir ein SubVI, das in allen ähnlichen Events aufgerufen wird (der Speicherplatz bleibt ja gleich), bei diesem SubVI machst du alles was bei diesen ähnlichen Events gleich ist (du hast ja geschrieben, dass die fast das gleiche machen sollen). Und den Rest (das was bei den Events unterschiedlich ist) machst du im jeweiligen Event ausserhalb dieses SubVIs.
Hast du Lucki's und meinen Beitrag genau angeschaut und durchgelesen? Offenbar nicht.

Du musst schon die richtige PropertyNode auswählen:
[attachment=20900]

Value(Signaling), nicht Value. Das (Signaling) bedeutet, das diese Ausführung der PropertyNode als Event im Frontpanel interpretiert wird und somit den entsprechenden Fall in der Event-Structure auslöst.

Dass bei anderen Wertänderungen, z.B. bei Setzen einer lokalen Variablen aus dem Programm heraus KEIN Event ausgelöst wird, ist gut und richtig.

Gruß, Jens
ach, signaling.. ok, alles klar, läuftWink

@eq: natürlich würde das auch mit subVIs gehen, ist allerdings aufwendiger, weil man alle inputs und outputs durchschleifen müsste - teilweise wird auch auf irgendwelche frontpanel-properties zugegriffen, was aus subVIs heraus zumindest schwierig wird.. so hab ich ein event-case als "funktion", die ich von überall triggern kann.. jetzt weiß ich ja auch endlich wieBig Grin
Referenz-URLs