LabVIEWForum.de
Eine Art Methode eines VIs erstellen? - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Eine Art Methode eines VIs erstellen? (/Thread-Eine-Art-Methode-eines-VIs-erstellen)



Eine Art Methode eines VIs erstellen? - Anlassfarbe - 23.02.2010 17:48

Hallo liebe Mitstreiter,

programmiere seit ein paar Wochen mit LabVIEW an einer einigermaßen komplexen Anwendung. Darin gibt es ähnliche Funktionalitäten auf verschiedenen Reitern eines Tab-Controls, die teilweise durch Kopieren entstanden sind und teilweise durch Event-Cases zentralisiert wurden.

Nun möchte ich einen neuen Reiter zufügen, der eine Funktionalität nutzt, die an anderer Stelle recht umfangreich gelöst ist und dort den Inhalt zahlreicher, auf verschiedenen Reitern verteilter Controls nutzt.

Um diesen umfangreichen G-Code nicht erneut zu kopieren (da sträuben sich alle meine Programmierer-Instinkte gegen), möchte ich den Code wiederverwendbar und damit pflegbar machen. Stichwort SubVI - ist schwierig, weil viel zuviele Controls des Hauptpanels verwendet werden.

Bei der Verwendung globaler Variablen müsste ich alle Zugriffe im bestehenden Code auf diese Variablen umbiegen - da scheue ich mich vor.

Was ich brauche ist wie eine Methode des Objektes Hauptpanel. Habe mir die LabVIEW-Klassen angeguckt, aber das Konzept scheint sich auf Datenstrukturen zu beziehen und scheint ungeeignet.

Habt Ihr Tipps für mich?

Grüße - eure Anlassfarbe


Eine Art Methode eines VIs erstellen? - IchSelbst - 23.02.2010 21:32

' schrieb:Nun möchte ich einen neuen Reiter zufügen, der eine Funktionalität nutzt, die an anderer Stelle recht umfangreich gelöst ist und dort den Inhalt zahlreicher, auf verschiedenen Reitern verteilter Controls nutzt.
Zitat:Um diesen umfangreichen G-Code nicht erneut zu kopieren (da sträuben sich alle meine Programmierer-Instinkte gegen), möchte ich den Code wiederverwendbar und damit pflegbar machen. Stichwort SubVI - ist schwierig, weil viel zuviele Controls des Hauptpanels verwendet werden.
Ich verwende folgendes Verfahren:
In einer funktionalen, globalen Variablen (kurz FGV) befindet sind ein Datensatz (also eine Ansammlung mehrerer Daten). Die FGV ist in der Lage, diesen Datensatz wie mit Methoden und Propertys einer C++-Klasse zu bearbeiten. Dazu hat die FGV, die ein SubVI ist, einen Enumarator- und einen Variant-Eingang. Als einziger Ausgang hat sie den Datensatz. Man kann der FGV auch (per "Property") Referenzen mitteilen, an die sie diverse Daten schreiben soll - die dann am FP erscheinen.
Maßgebend ist also der Datensatz in der FGV. Ob diese Daten nun angezeigt werden oder in einer Messung verwendet werden, spielt für die FGV keine Rolle.

Zitat:Was ich brauche ist wie eine Methode des Objektes Hauptpanel.
Wäre schön, ist mit LabVIEW aber nicht praktikabel.
In LV sind Frontpanelelemente (also bestimmte Felder eine Klasse) nur und nur in dem VI verfügbar, in dem sich das FP befindet. Zwar kann man eine Referenz des FPs an ein SubVI übergeben, sodass auch das SubVI per Referenz Zugriff auf das FP des MainVIs hat. Nur: Man kann ein spezielles Element (z.B. Button STOPP) nicht direkt per Namen ansprechen. Man muss eine spezielle Liste (Panel->Elemente[]) verwendet: Diese Liste muss man durchsuchen nach dem Namen des zu bearbeitenden FP-Elementes (String-Vergleich!). Dann hat man auch schon die Referenz auf das FP-Element.

Von der Verwendung globaler Variablen rate ich ab.