WinAPI Funktionen - Problem mit der FTD2xx.dll ?!
Hallo,
ich versuche ein USB Oszilloskop anzusteuern. MEphisto Scope Dort gibt es auch Programmierbeispiele für C++ und Delphi. Der C++ Code funktioniert. Der für Delphi leider nicht. Bisher klappt es soweit: Das Device kann geöffnet werden ("FT_Open") Ich kann darauf schreiben ("FT_Write") Bei der Funktion "FT_Read" allerdings hängt sich das Programm auf und es passiert nichts weiter. Die Funktionen sind folgendermaßen deklariert:
Delphi-Quellcode:
*edit: FT_DLL_name ist 'FTD2XX.dll'
function FT_Open(PVDevice:Integer; ftHandle:Pointer ) : FT_Result ; stdcall ; External FT_DLL_Name name 'FT_Open';
function FT_Write(ftHandle:Dword; FTOutBuf : Pointer; BufferSize : LongInt; ResultPtr : Pointer ) : FT_Result ; stdcall ; External FT_DLL_Name name 'FT_Write'; function FT_Read(ftHandle:Dword; FTInBuf : Pointer; BufferSize : LongInt; ResultPtr : Pointer ) : FT_Result ; stdcall ; External FT_DLL_Name name 'FT_Read'; in C++ sieht das ganze so aus:
Code:
Hat jemand eine Idee woran das liegen könnte? Ich hab offen gestanden keinen blassen Schimmer.
#ifdef __cplusplus
extern "C" { #endif ... FTD2XX_API FT_STATUS WINAPI FT_Read( FT_HANDLE ftHandle, LPVOID lpBuffer, DWORD nBufferSize, LPDWORD lpBytesReturned ); FTD2XX_API FT_STATUS WINAPI FT_Write( FT_HANDLE ftHandle, LPVOID lpBuffer, DWORD nBufferSize, LPDWORD lpBytesWritten ); ... } Ich hab keine Ahnung was der C Compiler daraus macht (im Vergleich zum Delphi oder C++ Kompiler) Bin für jede Hilfe dankbar MfG Julian |
Re: WinAPI Funktionen - Problem mit der FTD2xx.dll ?!
versuch's mal so:
Delphi-Quellcode:
const
FT_DLL_NAME = 'FTD2XX.dll'; type FT_Result: Integer; // ? function FT_Read(ftHandle: DWORD; FTInBuf: Pointer; BufferSize: DWORD; ResultPtr: LPDWORD): FT_Result; cdecl; External FT_DLL_NAME name 'FT_Read'; function FT_Write //... |
Re: WinAPI Funktionen - Problem mit der FTD2xx.dll ?!
Hey Matti,
hat leider nichts geholfen. Bleibt immer noch hängen. Wenn ich z.B. FT_Open mit der "Calling Convention" ( - wie ich eben nachgeschaut habe ;-)) cdecl aufrufe gibts auch nen exception raise (von wegen Zugriffsverletzung ..) Gäbe es als Alternative die Möglichkeit irgendwie den C Code einzubinden? (diesen nochmal in eine .dll auszulagern o.ä.) ?! soweit schonmal vielen Dank für die Bemühungen Julian |
Re: WinAPI Funktionen - Problem mit der FTD2xx.dll ?!
Mit dem FTDI chip arbeite ich auch. Ich schau mal eben in meine Unit rein, editier dann gleich meinen Beitrag.
Delphi-Quellcode:
So ist FT_Read hier deklariert und funktioniert. Wichtig ist halt, dass ResultPtr ein Pointer auf die Variable für die Rückgabe ist. Der Rest ist eigentlich unkritisch.
Function FT_Read(ftHandle : Dword; FTInBuf : Pointer; BufferSize : Longint; ResultPtr : Pointer) : FT_Result; STDCALL; EXTERNAL FT_DLL_Name NAME 'FT_Read';
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz