LabVIEWForum.de
Über externen Code Interface Array zurückbekommen? - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: DLL & externer Code (/Forum-DLL-externer-Code)
+---- Thema: Über externen Code Interface Array zurückbekommen? (/Thread-Ueber-externen-Code-Interface-Array-zurueckbekommen)



Über externen Code Interface Array zurückbekommen? - dr.smirnoff - 06.05.2005 10:16

Hallo,
ich bin noch immer nicht so fit in der Programmierung mit LV.
Bin heute schon wieder auf ein Problem gestoßen und hoffe dass ihr mir dabei helfen könnt.
Und zwar habe ich eine C-Code-Funktion die in einer externen dll steht und in LabVIEW aufgerufen wird.
In dieser Funktion bekomme ich mehrer 32 Bit Werte und müsste diese irgendwie an mein LV Programm zurückgeben, um sie dort dann weiter zu verarbeiten zu können.
Wie kann man ein Array aus einer exterenen Dll an LabVIEW übergeben?

Hoffe ich habe mein Problem einigermaßen verständlich erläutert und mir kann jemand helfen.

Vielen Dank
Gruss
Boris


Über externen Code Interface Array zurückbekommen? - oenk - 06.05.2005 11:27

Hallo Boris,

ich hab schon einiges mit CINs gemacht, verstehe aber deine Frage nicht genau....könntest du das ein bisschen präzisieren??

Gruss,
<<oenk>>


Über externen Code Interface Array zurückbekommen? - dr.smirnoff - 06.05.2005 11:57

Also ich werde mal versuchen mein Problem genauer zu definieren.
Ich baue in meiner C-Code-Funktion ein Werte-Array aus 32 Bit Werten auf.
Nachdem die Funktion beendet wurde, möchte ich dieses Array in LabVIEW weiterverarbeiten. Wie kann ich es aus meiner Funktion an LabVIEW übergeben?

Mein zweite Frage ist, wie kann man in LabVIEW Adressen an externe Funktionen übergeben.

Beispiel aus C:


void funktion (unsigned long *adresse)
{
adresse = 1;
}

int main()
{
unsigned long wert;

funktion(&wert);

}

Danach steht in wert 1;

Wie kann ich z.B die Funktion "funktion" aus LabVIEW aufrufen?


Über externen Code Interface Array zurückbekommen? - oenk - 06.05.2005 12:10

Hallo Boris,

wie ich leider feststellen musste hab ich mich zu weit aus dem Fenster gelehnt und kann dir doch nicht helfen....
Ich hab einiges mit dem Code-Interface-Node gemacht und somit reinen c-Code eingebunden aber nix mit DLLs....
Kenn mich damit auch nicht aus...
Ich fand die Beschreibung für CINs von NI gar nicht schlecht....
vielleicht findest du ja darin die Antwort

http://digital.ni.com/manuals.nsf/websearc...6256D2C00624728

viel Erfolg und ein schoenes WE


Über externen Code Interface Array zurückbekommen? - dr.smirnoff - 06.05.2005 13:51

Hallo, danke für dein Hilfeversuch!

Geht es denn überhaupt, aus LabVIEW heraus, die Adresse einer Variablen an eine C-Funktion zu übergeben?


Über externen Code Interface Array zurückbekommen? - Oliver Listing - 09.05.2005 09:14

Hi dr.smirnoff,

wie weit bist du den schon gekommen?
Hast du schon die Funktion Call Library Function Node gefunden?
Einen Doppelclick darauf bietet dir die Möglichkeit externe Libraries einzubinden.
Über Add a Parameter after kannst du einen Parameter hinzufügen.
Unter Type kannst du Array auswählen, fehlt noch der Datentyp, die Dimension und das Array Format.

Gruß
Oliver

Ps: Erst bei komplexen Datenstrukturen bin ich mit Probieren nicht weiter gekommen. Wüsste z.B. gerne, wie ich ein zweidimensionales Array aus Strings übergebe...
Sollte ich vielleicht mal einstellen :?:


Über externen Code Interface Array zurückbekommen? - dr.smirnoff - 12.05.2005 10:43

Hallo Oliver,
ich habe nun die Call libary function node verwendet.
Hat alles super geklappt danke!

Noch ne Frage!

Kann man irgendwie an die Call Libary Function dynamisch den Pfad und den Dateinamen der zu verwendenden DLL übergeben.

Ich bräuchte das, weil ich die "Rohdaten" also nicht die fertige *exe des Programms abgeben muss.
Irgendwie den Pfad aus der Registry lesen, oder so?

Gruss
Boris


Über externen Code Interface Array zurückbekommen? - didierj - 13.05.2005 10:32

dr.smirnoff schrieb:Kann man irgendwie an die Call Libary Function dynamisch den Pfad und den Dateinamen der zu verwendenden DLL übergeben.
NEIN, kann man nicht!
Wenn du eine DLL dynamisch einbinden möchtest, so musst du dies über eine CASE-struktur erledigen, in welcher die einzelnen DLL-Aufrufe erfolgen. Alternativ (wenn später, jedoch jetzt noch nicht definierte Möglichkeiten und DLLs hinzukommen sollten) kannst du die Aufrufe in einzelne VI's packen, und dann die VI's über "VI-Server" aufrufen.

Gruss Didier