Einzelnen Beitrag anzeigen

oli_a

Registriert seit: 10. Jul 2008
29 Beiträge
 
#1

Funktionsaufruf aus einer Headerdatei

  Alt 10. Feb 2009, 14:53
Hallo,

ich habe ein Verständnisproblem. Ich habe ein USB-Board, welches ich Delphi mit Hilfe einer DLL und der dazugehörigen Headerdatei ansprechen kann. Nun gibt es vom Hersteller eine neue DLL mit anderen Funktionen, welche ich gern nutzen möchte.
Ich stelle die Frage hier, weil der Hersteller bei Supportfragen leider etwas langsam ist.

Diese sehen laut Beschreibung meist so aus:
Zitat:
function SetDefaultGpifParams(MHz48 : Boolean; Divider : Byte; BitWidth : Byte) : Boolean; stdcall;
Dies ruft man einfach mit den gewünschten Parametern auf und fertig. Bsp.:
SetDefaultGpifParams(True, 12, 16);
Ich weiss leider nicht, wie ich folgende Funktion in Delphi richtig aufrufe.
Zitat:
function SetCallBack(CallBack : TUsbDataCallbackProc) : Boolean; stdcall;

Set a callback function. Calling this function before starting streaming action is mandatory. The callback function needs to have the following signature:

procedure Callbackname(pData : pointer; DatLen : DWord; PcToDevice : Boolean); stdcall;

The callback function receives 3 parameters when beeing called:
pData: Pointer to a data array that needs to be read or written depending on stream direction. This can either be a Byte pointer (when Bitwidth = 8) or a Word pointer (when Bitwidth = 16)
DatLen (indicates how many bytes need to be read or written.
IMPORTANT: When streaming is stopped due to an error or on user-request the callback function gets called one time with the parameter DatLen set to zero).
PcToDevice: Depending of the stream direction that you specified when executing the StartStream function, this value will be set to true (Data transfer from computer to usb device) or false (Data transfer from usb device to computer).
Ich habe es so probiert:
Delphi-Quellcode:
var
schreibwort : Word;
begin
schreibwort := 32;
Callback(@schreibwort, 1, True);
SetCallBack(CallBack); //Initialisierung des USB-Boards
end;
Damit bekomme ich einen Zugriffsverletzung als Fehlermeldung.
  Mit Zitat antworten Zitat