INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

CCD Kamera mit externem Trigger über DLL ansteuern



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

20.06.2009, 19:25
Beitrag #5

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
CCD Kamera mit externem Trigger über DLL ansteuern
' schrieb:Aber du übergibst doch schon an den Funktionsaufruf ein Array der passenden Größe (hast du so vordefiniert). Dabei wird in Realität nur die Adresse dieses Speicherbereiches übergeben. Und somit liegt am Ausgang der Funktion das "geänderte" Array vor, aus meiner Sicht besteht kein Bedarf mehr, jetzt noch was per Moveblock zu kopieren. Wobei du sowieso den selben Speicher auf sich selbst kopierst...

Gruß, Jens

Jens die Arrayübergabe an die Funktion ist hier eigentlich falsch, hat aber keine gravierenden Folgen.

SDK_POINTER_API CCDUSB_GetCurrentFrame( int Device, unsigned short* &FramePtr);

Die Syntax is C++ (würde in Standard C einen Compilierfehler geben) und besagt dass der FramePtr ein unsigned short Pointer ist der als Referenz übergeben wird, d.h. es ist ein Pointer auf einen Pointer.
Warum es geht?

Nun die Funktion schreibt in den Arraybuffer an den ersten 4 Bytes (also 2 Words) den Pointer und gibt diesen Pointer auch zurück als Funktionsrückgabewert. Der anschliessende MoveBlock Aufruf kopiert die Daten vom Funktionsrückgabewertpointer in das LabVIEW Array und überschreibt damit einfach die 4 Bytes die von der Funktion zuvor als Pointerwert hineingeschrieben wurden.

Also ein Problem ist es nicht aber eigentlich sollte der zweite Wert der Funktion als ein pointersized Integer definiert werden der als Referenz also den Pointer darauf übergeben wird. Danach kann alternativ der Funktionsrückgabewert oder dieser Pointerwert als erster Parameter für MoveBlock verwendet werden.

Der Prototyp der korrekt konfiguriereten Call Library Node sollte eigentlich so aussehen:

uintptr_t CCDUSB_GetCurrentFrame(int32_t DeviceID, uintptr_t *FramePtr);

Rolf Kalbermatter

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Nachrichten in diesem Thema
CCD Kamera mit externem Trigger über DLL ansteuern - rolfk - 20.06.2009 19:25

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Trinamic TMCM-610 über Wrapper-dll ansteuern matzesl 14 17.403 14.11.2007 09:56
Letzter Beitrag: matzesl
  LabVIEW: Absturz nach externem Code-Aufruf abrissbirne 22 19.607 14.09.2007 07:18
Letzter Beitrag: rolfk

Gehe zu: