01.12.2010, 16:10
Beitrag #1
|
woiddale
LVF-Neueinsteiger
Beiträge: 9
Registriert seit: Aug 2009
2009
2008
kA
86
Deutschland
|
Wiederverwendbarer Code / VI
Hallo zusammen,
ich habe da mal eine grundsätzliche Frage zu Labview.
Wie binde ich am besten wiederverwendbare VI´s in Projekte die zu EXE - Dateien kompiliert werden ein. Diese EXE - Dateien laufen dann auf Systeme, die nur die Laufzeitumgebung von Labview installiert haben.
Folgendes Szenario:
Ich habe ein Haupt - VI das aus vielen SubVI´s besteht. In diese Haupt - VI wird dann projektabhängiger Code in Form von SubVI´s oder direkt ins Haupt - VI eingegeben. Am Ende des Projekts wird das Projekt zu eine EXE - Datei kompiliert.
Wenn ich jetzt aber in einem der SubVI´s des Haupt - VI´s einen Fehler entdecke und diesen entferne, müsste ich ja alle Projekte wieder neu kompilieren, damit dieser Fehler in allen Projekte beseitigt ist. Wie wäre das grundsätzliche Vorgehen, um dieses "aktualisieren" der Projekte zu verhindern bzw. den Arbeitsaufwand so gering wie möglich zu halten.
Dachte dabei an so Sachen wie:
Dynamisches Laden von SubVI´s
DLL aus Sub - VI´s erstellen und diese DLL wieder in Labview verwenden
Automatisiertes erzeugen von EXE - Dateien durch eine Arte "makefile"
Was wäre eurer Meinung nach der richtige Weg?
Vielen Dank im voraus für eure Hilfe
woiddale
|
|
|
01.12.2010, 16:38
Beitrag #2
|
|
|
02.12.2010, 21:25
Beitrag #3
|
|
|
02.12.2010, 21:44
Beitrag #4
|
|
|
03.12.2010, 10:56
Beitrag #6
|
unicorn
LVF-Freak
Beiträge: 680
Registriert seit: Jul 2009
8.6.1, 2010 - 2012
1994
EN
10xxx
Deutschland
|
Wiederverwendbarer Code / VI
Auf der Cluster-Palette gibt es ein VI mit dem man einen Pfad in ein Klasseobjekt "verwandeln" kann und man bekommt zur Laufzeit die gewünschte Klasse, Die neue Klasse muss natürlich ihre Eigenschaften von einer Basisklasse, mit der das Hauptprogramm kompiliert wurde, geerbt haben.
Bei NI gibt's dazu folgendes Beispiel: Factory Pattern (@abrissbirne: Du meinst wohl dieses Beispiel, oder?)
|
|
|
03.12.2010, 11:28
(Dieser Beitrag wurde zuletzt bearbeitet: 03.12.2010 13:36 von abrissbirne.)
Beitrag #7
|
abrissbirne
LVF-Stammgast
Beiträge: 480
Registriert seit: Aug 2007
LV2009, LV2010
2007
EN
66123
Deutschland
|
Wiederverwendbarer Code / VI
' schrieb:Auf der Cluster-Palette gibt es ein VI mit dem man einen Pfad in ein Klasseobjekt "verwandeln" kann und man bekommt zur Laufzeit die gewünschte Klasse, Die neue Klasse muss natürlich ihre Eigenschaften von einer Basisklasse, mit der das Hauptprogramm kompiliert wurde, geerbt haben.
Bei NI gibt's dazu folgendes Beispiel: Factory Pattern (@abrissbirne: Du meinst wohl dieses Beispiel, oder?)
Die Factory ist Beispielsweise ein Vertreter für das dynamische Laden und vor allem mit Preprocessing dem initialisieren von Objekten (Konstruktor Ersatz). Hier ist ein Bsp. das sich auf Plugins bezieht: Extending LabVIEW-built applications with LVOOP plugins
Du kannst dir Bspw. ein OOP Framework bauen indem direkt alles enthalten ist (Queue Handling, Error Handling...).
Edit:
Hier das einfache Bsp.: Plugin DEMO
|
|
|
03.12.2010, 19:52
Beitrag #8
|
woiddale
LVF-Neueinsteiger
Beiträge: 9
Registriert seit: Aug 2009
2009
2008
kA
86
Deutschland
|
Wiederverwendbarer Code / VI
Hallo,
so wie ich das sehe, ist das mit den LLB´s an besten für das geeignet, was ich beschrieben habe. Plugins und LVOOP sind bestimmt sehr gute Mittel, wenn ich ein Programm erstellen will und es dann ohne große Probleme erweitern will, ohne die EXE neu kompilieren zu müssen. Mir geht es aber eigentlich ja nur darum, fehlerhaften Code einfach austauschen zu können ohne jedes mal die EXE neu kompilieren zu müssen.
Wenn ich jetzt z.B.: 20 Programme habe, die alle einige VI´s der LLB nutzen und ich in dieser LLB einen Fehler feststelle, kann ich einfach den Fehler beheben, die LLB neu erstellen und dann die LLB wieder verteilen, bzw. irgendwie automatisiert an die Rechner verteilen, auf denen diese 20 Programme laufen. Und schon ist der Fehler in den 20 Programmen behoben. Einzige Voraussetzung dafür ist dass die VI´s aus der LLB, die ich direkt in meiner EXE - Datei benutze, dynamisch geladen werden.
Oder sehe ich das irgendwas falsch?
Gruß
woiddale
|
|
|
07.12.2010, 21:16
Beitrag #9
|
woiddale
LVF-Neueinsteiger
Beiträge: 9
Registriert seit: Aug 2009
2009
2008
kA
86
Deutschland
|
Wiederverwendbarer Code / VI
Hallo zusammen,
habe da jetzt mal was versucht. Leider funktioniert es aber nicht ganz so wie gedacht.
Wenn ich folgendes main.vi habe:
und das folgende VI dynamisch lade,
funktioniert es im Editor genauso wie als EXE.
wenn ich dann aber die Diagrammdeaktivierungsstruktur um das "Fehler löschen" entferne,
funktioniert es im Editor schon noch, als EXE erhalte ich aber folgenden Fehler:
Warum geht es nicht? Bzw. wie muss ich es machen, damit es funktioniert. Dachte immer Labview würde seine eigenen VI´s immer finden. Muss ich der EXE irgendwie den Suchpfad mit teilen oder warum findet sie das "Fehler löschen" nicht?
Hier mal das ganze Projekt als Zip - Datei.
bespiel.zip (Größe: 146,82 KB / Downloads: 165)
Vielen Dank für eure Hilfe
woiddale
|
|
|
| |