LabVIEWForum.de
Array aus DLL zurückgeben - 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: Array aus DLL zurückgeben (/Thread-Array-aus-DLL-zurueckgeben)



Array aus DLL zurückgeben - DarthZiu - 20.04.2006 13:50

Ich grüße euch.

Seit 3 Wochen beschäftige ich mich intensiv mit LabVIEW und bin jetzt an ner großen Hürde angekommen, bei der ich nicht weiter weiß.

Gibt es irgendeine Möglichkeit aus einer C/C++ dll ein gefülltes Array an LabVIEW zurückzugeben?

Hintergrund: Ich lese mit einer C dll ein Bild einer Kamera aus und will die Werte (Array mit 640x480 (307200) Werten) in LabVIEW zurückgeben. Ich weiß, dass diese Vorgehensweise nicht optimal ist.
Aber mich interessiert, ob daß überhaupt geht.

Gruß,
Ziu


Array aus DLL zurückgeben - oppossom - 20.04.2006 13:54

Hi!

Als Rückgabewert direkt geht es nicht (zumindest bis LV7.0). Aber als Pointer in den Parametern sollte es funtkionieren.

Lg Stefan


Array aus DLL zurückgeben - DarthZiu - 20.04.2006 14:00

Das hab ich schon probiert, auf allen Wegen dir mir eingefallen sind.


Array aus DLL zurückgeben - oppossom - 20.04.2006 14:11

Kannst du die Syntax, die die dll erwartet mal posten?


Array aus DLL zurückgeben - DarthZiu - 20.04.2006 14:22

Code:
_declspec (dllexport) long getMarlinImage(long *imageData)

{ }

Der Rückgabewert soll den Fehlercode enthalten und in imageData will ich die Werte schreiben, die ich von meiner Kamera bekomme.

Hab es jetzt schon hinbekommen ein Array zu füllen, allerdings ist es statisch, also die Größe muss schon vor dem dll-Aufruf feststehen. Ich hätt es aber gern dynamisch.


Array aus DLL zurückgeben - oppossom - 20.04.2006 14:31

ich dachte die Array-Größe ist von der dll (Bildgröße) ohnehin fix vorgegeben?
schau dir mal diesen thread an, da wird gerade diskutiert dass in LV Arrays prinzipiell variable Größe haben


Array aus DLL zurückgeben - Martin.Henz - 20.04.2006 18:53

DarthZiu schrieb:
Code:
_declspec (dllexport) long getMarlinImage(long *imageData)

{ }

Der Rückgabewert soll den Fehlercode enthalten und in imageData will ich die Werte schreiben, die ich von meiner Kamera bekomme.

Hab es jetzt schon hinbekommen ein Array zu füllen, allerdings ist es statisch, also die Größe muss schon vor dem dll-Aufruf feststehen. Ich hätt es aber gern dynamisch.

Wenn ich dich bisher richtig verstehe, dann schreibst du auch den C-Code?

In dem Fall kann deine C-Funktion jeden beliebigen LabVIEW Datentyp zurückliefern und Array's in beliebiger Größe (solange genug Speicher vorhanden ist). Du musst dich "nur" damit befassen, wie LabVIEW die Daten intern abbildet. Den Speicher musst du natürlich dann mit Hilfe des LabVIEW Speichermanagers reservieren.