Frontpanel und Blockdiagramm zur Laufzeit anpassen
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!
Frontpanel und Blockdiagramm zur Laufzeit anpassen
Hallo LaView'er,
habe hier ein Problem, bei dem ich nicht weiterkomme:
Ich möchte, dass sich mein Frontpanel und mein Blockdiagramm individuell anpassen lassen.
Das heißt (hier am Beispiel einer kameraeinbindung innerhalb eines großen Programms) :
Ich habe innerhalb meines Hauptprogramms ein Teilprogramm, das sich nur mit dem Darstellen eines Kamerabildes beschäftigt. Manch einer hat aber kein NI-iMaq-DX und auch keine Kamera. Ergo: Er bekommt Fehlermeldungen über fehlende VIs und so weiter.
Nun soll er zu Beginn des ersten Programmaufrufs auswählen können, ob er überhaupt eine Kamera hat. Verneint er dies, sollen alle mit der Kamera zusammenhängenden Bedien- und Anzeigeelemente deaktiviert und ausgegraut werden.
Das geht ja über Eigenschaftsknoten (siehe Beispiel-VI im Anhang). Aber wie kann ich denn viele Referenzen zusammenfassen? Geht das? Oder muss ich für jedes Bedienfeld, das ausgegraut werden soll, einen neuen Knoten machen?
Dann soll natürlich auch das Blockdiagramm dieses Teilprogramms (siehe wieder Anhang) komplett deaktiviert werden. Das heißt, letztenendes soll das Programm quasi gar nichts mehr von diesem Teilprogramm im Blockdiagramm wissen - GEHT DAS??
Denn die Fehlermeldungen nerven und soweit ich weiß, kann man das Programm dann auch nicht ausführen, wenn die SubVIs von NI-iMaq-DX nicht vorliegen.
Danke Euch schon mal für die Hilfe!!!
Fabian
Anzeige
20.06.2012, 13:21 (Dieser Beitrag wurde zuletzt bearbeitet: 20.06.2012 13:22 von fabqu.)
RE: Frontpanel und Blockdiagramm zur Laufzeit anpassen
Ich habe nun - wie mir empfohlen wurde - die gesamte Kamerasteuerung in ein SubVI gesteckt und binde dieses nun dynamisch ein (siehe Screenshot im Anhang).
Das hat zwar den gewünschten Effekt, jedoch geht nun die Performance flöten, das Kamerabild wird nur noch etwa 3 Mal pro Sekunde erneuert.
Außerdem bleibt das alte Problem, dass ich noch nicht weiß, wie ich mehrere Ein- und Ausgabeobjekte im Frontpanel auf einmal ausgrauen und deaktivieren kann.
RE: Frontpanel und Blockdiagramm zur Laufzeit anpassen
Nur n Schuss ins Blaue:
Wird innerhalb des SubVIs die Kamera immer wieder neu initialisiert? Das würde den Performance-Verlust erklären. Initialisiere sie vor der While-Schleife.
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
RE: Frontpanel und Blockdiagramm zur Laufzeit anpassen
Pack' sie doch in ein Array (oder Cluster) und graue das aus.
Gruß Markus
(20.06.2012 13:21 )fabqu schrieb: Außerdem bleibt das alte Problem, dass ich noch nicht weiß, wie ich mehrere Ein- und Ausgabeobjekte im Frontpanel auf einmal ausgrauen und deaktivieren kann.
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
RE: Frontpanel und Blockdiagramm zur Laufzeit anpassen
(20.06.2012 13:21 )fabqu schrieb: Außerdem bleibt das alte Problem, dass ich noch nicht weiß, wie ich mehrere Ein- und Ausgabeobjekte im Frontpanel auf einmal ausgrauen und deaktivieren kann.
Du kannst z.B. die relevanten Referenzen in einem Array sammeln. Dann brauchst du die PropertyNode nur einmal:
Beste Grüße,
NWO
9 von 10 Stimmen in meinem Kopf sagen: Ich bin nicht verrückt,
die andere summt die Melodie von Tetris.
NI schrieb:To use the abort button is like using a tree to stop a car!
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
RE: Frontpanel und Blockdiagramm zur Laufzeit anpassen
Yes..... Da war ich ein paar Millisekunden schneller (OK, ohne Bsp.).
Gruß Markus
(20.06.2012 13:57 )NWOmason schrieb:
(20.06.2012 13:21 )fabqu schrieb: Außerdem bleibt das alte Problem, dass ich noch nicht weiß, wie ich mehrere Ein- und Ausgabeobjekte im Frontpanel auf einmal ausgrauen und deaktivieren kann.
Du kannst z.B. die relevanten Referenzen in einem Array sammeln. Dann brauchst du die PropertyNode nur einmal:
Beste Grüße,
NWO
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
RE: Frontpanel und Blockdiagramm zur Laufzeit anpassen
Ah ja Nicht schlecht! Danke!
Werde ich machen
Zum Performance-Problem: Ich initialisiere die Cam nur beim ersten Start - siehe Screenshot. Beim ersten Aufruf wird in meiner While-Schleife im Hauptprogramm ein Schieberegister mit 0 initialisiert, was die Initialisierung der Cam im SubVi bewirkt. Danach wird das Schieberegister mit einer 1 besetzt.
Bin mir aber ehrlich gesagt nicht 100%ig sicher, ob das hinhaut.
RE: Frontpanel und Blockdiagramm zur Laufzeit anpassen
Zwecks Performance, probier mal Referenz auf das entsprechende VI nur 1x (irgendwann beim Programmstart) zu öffnen, Schließen natürlich nur bei Programmende, und dann nur der SubVI-Aufruf an Hand der schon geöffneten Referenz.
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!
RE: Frontpanel und Blockdiagramm zur Laufzeit anpassen
Oha, danke dir!
Das wars natürlich. Hab schon mal so nen Fehler gemacht beim Öffnen/Initialisieren einer COM-Schnittstelle - und da sagt man, aus Fehlern würde man lernen
Danke dir! Fehler behoben, alle Probleme beseitigt!
RE: Frontpanel und Blockdiagramm zur Laufzeit anpassen
mal noch ne Verständnisfrage / Anregung zu weiterer Optimierung:
Wäre es nicht nur die Referenz auf das SubVI sondern das ganze SubVI nur einmal aufzurufen und dann vom Hauptprogram Fernzusteuerung? (über Queues o.ä.)
Weis nicht ob das bei Verwendung von IMAQdx wirklich sinnvoll ist, aber ich meine da wird ja für das Image eine Referenz verwendet, so lange man die hat müsste die also auch im Hauptprogram das Bild aktualisieren (ohne weiteren Aufwand)?
So würde man sich zumindest auch noch das ständige neu Initialisieren der Cam im SubVI sparen.
Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)