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 folgendes Problem.
Ich habe ein Subpanel in das ich ein VI lade. Drücke ich nun einen Button im Main-VI soll ein Ereignis im Subpanel-VI ausgelöst werden. Leider ändert sich bei einer Wertänderung über das Main-VI ausschließlich der Wert des Elements - aber leider wird kein Ereignis verarbeitet.
Wie soll das SubVI denn ein Event aus dem überlagerten VI auch mitkriegen? Die entsprechende Eventstruktur ist ja gar nicht im SubVI...Ich hab noch keine SubPanels verwendet, aber man kann auch UserEvents programmatisch verschicken...hab ich auch noch nicht gemacht, gibt aber mindestens ein Beispiel in der Hilfe!
Damit es direkt funktioniert, müsstest du wahrscheinlich deinen Button direkt im Panel des SubVI (=SubPanel) platzieren...
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)
Anscheinend löst kein Event aus wenn ich Elemente eines VI von einem anderen VI aus ändere.
Gibt es eine andere Möglichkeit dies zu tun?
Vorgaben:
Es soll ein Main-VI geben, dass dynamisch VI ins Subpanel lädt.
Sobald ein anderes VI geladen werden soll muss an das zur Zeit geladene VI ein Event geschickt werden, damit z.B. eine ordentliche Terminierung ausgeführt wird (z.B. Dateien schließen, ...) ...
das könnte er nicht nur, das muss er sogar. VIs, die in einem SubPanel laufen müssen über VI Server gestartet werden. Wenn im SubPanel Events verarbeitet werden sollen (von Controls auf dem SubPanel), dann muss in dem SubPanel VI natürlich auch eine Event-Struktur vorhanden sein.
Da ich gerade an einem ähnlichen Problem sitze habe ich mir die Beispiel VIs oben mal angesehen (main.vi und umschalten.vi).
Meine Erklärung des Verhaltens: Beim Setzen des umschalten Buttons des SubVI über den Invoke Node im MainVI springt er im SubVI nicht in den entsprechenden Ereignis-Case da es kein Ereignis im Frontpanel des SubVIs ist.
Was wäre hier die Lösung? Wie kann im Blockdiagramm des MainVI ein Ereignis im SubVI auslösen? Stichwort Dynamische Ereignisregistrierung oder geht das noch einfacher?
Klar geht das. Man will ja letztlich die LED im SubVI umschalten. Das kann man vom MainVI doch ganz direkt machen, ohne dass da im SubVI ein Ereigniscase getriggert werden muss. Damit geht dann allerdings der pädagogische Lehrwert der ganzen Veranstaltung den Bach runter
alternativ könnte man auch komplett auf das Event verzichten und eine Nachricht über Melder, Queues etc. an das Sub-VI oder andere Teilnehmer verschicken.
Ich habe das so in einer größeren Applikation von mir gelöst. Zudem hat es den Vorteil, dass man sich schön strukturiert IDs vergeben kann bzw. in Aktionsnummernkreise unterteilen kann, wenn´s denn irgendwann mal komplexer wird.
Gruß, Marko
04.07.2013, 16:44 (Dieser Beitrag wurde zuletzt bearbeitet: 04.07.2013 17:13 von ash.)
@Lucki: Danke für die VIs, dass das so geht ist mir schon bewusst, jedoch würde ich gerne dass das Ereignis im MainVI (also außerhalb des Subpanel) zu einem Ereignis im SubVI führt.
Analog zu diesem NI Beispiel, nur eben für ein SubVI im Subpanel..also irgendwie über VI-Server: http://digital.ni.com/public.nsf/allkb/A...0D0066B91A
Ich habe es mal so mit dynamischen Ereignissen im SubVI probiert, jedoch wird im SubVI das entsprechende Ereignis Case "okref" nicht angesprungen. Jemand ne Idee?