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!
18.05.2015, 08:51 (Dieser Beitrag wurde zuletzt bearbeitet: 18.05.2015 08:53 von NoWay.)
Aus gegebenen Anlass befasse ich mich mit Subpanels und der Anzeige unterschiedlicher VIs. Dazu habe ich mir zwei kleine Beispiel-VIs erstellt. Die Aufgabe ist einfach: Der Caller soll das "LED" VI im Subpanel aufrufen und wieder schließen können. Das allein ist schnell gelöst und überhaupt kein Thema. Knifflig wird es, wenn ich dem LED VI zusätzliche Parameter mit an die Hand geben will, wie z.B. eine IP Adresse oder dergleichen. Mein Versuch ging dahin, dass ich aus der statischen VI Referenz eine "Strictly typed VI Reference" mache. Labview ist dann aber scheinbar nicht mehr in der Lage das VI im Frontpanel anzuzeigen. Es läuft zwar im Speicher, sehen kann man es aber nicht.
Was mache ich an dem Punkt falsch, bzw. wie kann ich in einem Subpanel VIs aufrufen und diesen Werte im Vorfeld schon mitgeben? Ich würde gerne den Umweg über eine FGV vermeiden.
Edit: Man muss auf die LED klicken um das LED.Vi zu schließen. Das hat funktional keinerlei bedeutung. Mir geht es ausschließlich um die Werteübergabe.
Ah, sehr schön. Danke Jens.
Damit ich richtig verstehe, was da passiert: Statt dem VI einen Wert "mitzugeben" wird das Control des LED.vi über die Referenz angesprochen?
(18.05.2015 09:43 )jg schrieb: In kannst du alternativ auch mit dem VI "Set Control Values by Index" arbeiten:
Hallo Jens,
da muss ich dann aber höllich aufpassen, dass ich aus diesem VI nicht irgendwann mal ein Control lösche und sich so die Indizierung verschiebt, oder?
(Ähnlich wie bei Clusterinhalten)
Zitat:da muss ich dann aber höllich aufpassen, dass ich aus diesem VI nicht irgendwann mal ein Control lösche und sich so die Indizierung verschiebt, oder?
Wieso?
Bevor du diese Funktion nutzt, musst du den "Elementindex" per Propertynode ermitteln. Dies macht man einmalig bei Start des VIs - und man sollte hier nach den "interessanten" (aka benötigten) Controls filtern. Da du dies dynamisch erledigen musst, ist es (an dieser Stelle) egal, ob ein Control gelöscht wurde!
Wichtig dabei ist nur, dass auch die Datenarrays angepasst werden: deshalb erstelle ich mir lieber ein Referenzarray anhand der Label der Controls…
Bei meinem ersten Vorschlag musst du ähnlich genau aufpassen, dass du das Control, welches du per Invoke-Node setzt, nicht löscht oder umbenennst.
Ansonsten siehe Gerds Vorschlag, es gibt Möglichkeiten, das Problem bei Variante 2 zu umschiffen (vgl. LabVIEW Hilfe).
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!