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!
28.08.2009, 15:49 (Dieser Beitrag wurde zuletzt bearbeitet: 28.08.2009 15:50 von Novgorod.)
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 einfach.. 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?
28.08.2009, 15:55 (Dieser Beitrag wurde zuletzt bearbeitet: 28.08.2009 15:57 von schrotti.)
' 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 einfach.. 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
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
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:
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..
28.08.2009, 19:43 (Dieser Beitrag wurde zuletzt bearbeitet: 28.08.2009 19:43 von Novgorod.)
' 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:
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)..
28.08.2009, 19:48 (Dieser Beitrag wurde zuletzt bearbeitet: 28.08.2009 19:49 von eg.)
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:
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
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
@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 wie