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

LabVIEWForum.de

Normale Version: Über externen Code Interface Array zurückbekommen?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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
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>>
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?
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
Hallo, danke für dein Hilfeversuch!

Geht es denn überhaupt, aus LabVIEW heraus, die Adresse einer Variablen an eine C-Funktion zu übergeben?
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 :?:
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
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
Referenz-URLs