LabVIEWForum.de
Pointer auslesen - 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: Pointer auslesen (/Thread-Pointer-auslesen)

Seiten: 1 2


Pointer auslesen - Pfogde - 24.04.2007 12:27

Hallo Leutz,

Hätte mal eine kurze Frage bzgl. Pointer und LabVIEW.
Habe schon im Tutorial gelesen, dass das nicht ganz verträglich ist.

Möchte ein Probeprogramm schreiben, das ich nicht unbedingt brauche, und möchte vorher abchecken ob das einfach zu machen ist, oder ob ich mir das spare.

Folgendes:

In meiner DLL-Beschreibung ist ein Parameter angegeben, der einen Pointer darstellt:

Pointer to the image buffer.

diese DLL soll einen Snapshot einer Kamera auslösen und ich vermute, dass der Pointer auf den Speicherplatz verweist.

Meine Frage ist nun, ob meine Vermutung richtig ist und wenn ja, kann ich das Bild/Image irgendwie einlesen bzw. anzeigen.

Gruß Daniel


Pointer auslesen - IchSelbst - 24.04.2007 13:42

' schrieb:In meiner DLL-Beschreibung ist ein Parameter angegeben, der einen Pointer darstellt:

Pointer to the image buffer.

diese DLL soll einen Snapshot einer Kamera auslösen und ich vermute, dass der Pointer auf den Speicherplatz verweist.

Meine Frage ist nun, ob meine Vermutung richtig ist und wenn ja, kann ich das Bild/Image irgendwie einlesen bzw. anzeigen.
Das sollte gehen.

Dein Image, das die DLL erstellt, hat ja ein bestimmtes Format. Ich sag mal so: "Array of Byte" oder "Array of word" oder ähnlich. Also braucht die DLL einen Pointer auf einen ebensolchen Bereich. Das geht so: An den Eingang eines DLL-Knotens legst du ein entsprechend großes Array diesen Typs an. An den korrespondieren Ausgang schließt du einen Draht an - an dem dein Image herauskommt. Dieses ganz ordinäre Array of "IntTyp" müsstest du dann nur noch in ein LV-Image umwandeln. Du kannst auch mal versuchen, anstelle eines Arrays den entsprechenden Datentyp eines Images zu nehmen, dann sparst du dir die Wandlung Int-Array nach Image.


Pointer auslesen - Pfogde - 25.04.2007 07:13

Danke schon mal IchSelbst,

Das heißt kurz gesagt, dass ich ein Array/Image-Typ am Eingang der DLL anlege um damit dem Pointer einen Speicherplatz zu "zeigen". Wenn ich nun an den Ausgang der DLL ein Anzeigeelemenz z.B. anschließe, wird mir das Bild angezeigt?
Wie wandle ich denn dann ein Array of "IntTyp" in ein LabVIEW-Image?
Mit dem "IntTyp" ist doch der Array-Typ gemeint, nehme ich an.

MfG Daniel


Pointer auslesen - Pfogde - 25.04.2007 10:26

Habe jetzt versucht ein Image mit IMAQCreate anzulegen an den Pointer, aber dies fkt. nicht, da dies verschiedene Datentypen sind.
Hab ich da was falsch verstanden?
Wenn es in der DLL ein Pointer ist, muss ich dann im Aufrufknoten beim entsprechenden Parameter Pass = Value oder Pointer wählen?


Pointer auslesen - IchSelbst - 25.04.2007 18:50

' schrieb:Das heißt kurz gesagt, dass ich ein Array/Image-Typ am Eingang der DLL anlege um damit dem Pointer einen Speicherplatz zu "zeigen".
So soll es sein.
Zitat:Wenn ich nun an den Ausgang der DLL ein Anzeigeelemenz z.B. anschließe, wird mir das Bild angezeigt?
So soll es sein.

Zitat:Wie wandle ich denn dann ein Array of "IntTyp" in ein LabVIEW-Image?
Ohne die Hilfe gelesen zu haben, habe ich keine Ahnung. :PIch hab ja auch nur das prinzipielle Vorgehen beschrieben.

Zitat:Mit dem "IntTyp" ist doch der Array-Typ gemeint, nehme ich an.
Jawohl.


(Und ein posting weiter)

Zitat:aber dies fkt. nicht, da dies verschiedene Datentypen sind.
Wenn es verschiedene Datentypen sind, wird es nicht funktionieren.

Zitat:Hab ich da was falsch verstanden?
Wohl noch nicht.
Du musst zuerst kucken, was für einen Pointer die DLL erwarten: Pointer auf Char? Pointer auf UI16, UI32? Ich tippe mal auf Char. Danach erst kannst du dir Gedanken machen, was du am DLL-Knoten anschließen musst. Ich glaube mich grob entsinnen zu können, dass man ein Arry of char in ein Image wandeln kann.


Zitat:Wenn es in der DLL ein Pointer ist, muss ich dann im Aufrufknoten beim entsprechenden Parameter Pass = Value oder Pointer wählen?
Natürlich Pointer. Wichtiger als das ist aber der Typ der Daten, auf die der Pointer zeigt!


Pointer auslesen - Pfogde - 26.04.2007 11:00

Danke nochmals IchSelbst,

denke auch mal im Sinne der anderen, denn wenn ich die posts so ansehe, fällt mir immer dein Nick ins Auge.

Jetzt hab ich nur das mit dem Pointer immer noch nicht ganz verstanden.

Am Aufruf-Knoten der DLL muss ich als Pass-Parameter "Pointer to Value" setzen, wenn in der Beschreibung der DLL der Parameter als Pointer beschrieben wird!?

MfG Daniel


Pointer auslesen - IchSelbst - 26.04.2007 17:51

' schrieb:Am Aufruf-Knoten der DLL muss ich als Pass-Parameter "Pointer to Value" setzen, wenn in der Beschreibung der DLL der Parameter als Pointer beschrieben wird!?
Jawohl, genau so musst du es machen.

Und weiter: In deinem Falle ist die Auswahl "numeric" bei "Type" wohl falsch. Da gehört Array hin. Und dann bei "pass" eben "Array auf Daten".


Pointer auslesen - Pfogde - 27.04.2007 07:19

Dankeschön,

das mit dem Bild war nur zur Ansicht, welchen Parameter ich meinte.
Also müsste ich jetzt noch herausfinden was für ein Array-Typ mein Image ist und das dann unter Data Type zuordnen,
was muss ich dann unter Array-Data einstellen?

Mal ne andere Frage:

Der Name des Funktionsparameter in der DLL beschrieben, muss nicht mit meinem festgelegten Namen in dem Funktinsprototyp übereinstimmen, wohl aber der Typ, der Aufruf und die Stelle in der Funktion?

MfG Daniel


Pointer auslesen - IchSelbst - 27.04.2007 07:59

' schrieb:Also müsste ich jetzt noch herausfinden was für ein Array-Typ mein Image ist und das dann unter Data Type zuordnen,
Jawohl.

Zitat:was muss ich dann unter Array-Data einstellen?
Genau das, was du im Bild angegeben hast.
Bei Minimum Size musst du nichts angeben, wenn du am Eingang des DLL-Knotens ein Array anlegst. Willst du nichts anlegen, dann kannst du hier eine Länge eintragen.

Zitat:Der Name des Funktionsparameter in der DLL beschrieben, muss nicht mit meinem festgelegten Namen in dem Funktinsprototyp übereinstimmen, wohl aber der Typ, der Aufruf und die Stelle in der Funktion?
Jawaohl, alle viel Punkte sind richtig.


Pointer auslesen - Pfogde - 27.04.2007 08:09

Entschuldige,

ich meinte was ich unter Array-Format eingeben muss.