Einzelnen Beitrag anzeigen

hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Event für Funktion in einer "fremden" DLL

  Alt 26. Feb 2008, 08:33
Wird auch so gemacht. Wenn eine Weile lang (500 ms) nichts empfangen wird, geht der Thread in einen langsamen Modus, schläft also mehr oder weniger nur und wacht dann auf, wenn wieder viele Daten kommen.

Allerdings habe ich gerade gesehen, dass bereits ein neuer Treiber, welchem man beibringen kann, eine bestimmte Funktion im Programm aufzurufen.

Allerdings verstehe ich noch nicht ganz wie man diese benutzt, deshalb hier ein Paar Zeilen Beschreibung:

int setReceiveCallBack( CANHANDLE h, LPFNDLL_RECEIVE_CALLBACK cbfn )

With this method one can define a function that will receive all incoming messages. Note
that canusb_Read will not work after this call. You can make it work again by calling
this method and set cbfn equal to NULL.

The callback function should be defined as

void fn( CANMsg *pMsg );

Note: that the channel has to be open to be able to set a callback function.

---

Ich definiere nun also eine Methode, welcher ein Pointer auf CANMsg übergeben werden kann:

procedure OnReceiveMessage(var MsgBuf: CANMsg); Dann eine Funtion, mit welcher ich der Treiber DLL angeben kann, welche Methode in meinem Programm sie aufrufen solle:

  function canusb_setReceiveCallBack(h: DWord; LPFNDLL_RECEIVE_CALLBACK: Pointer) : CANUSB_Result; stdcall ; External 'canusbdrv.dllname 'canusb_setReceiveCallBack'; Hier bin ich mir schon nicht mehr sicher, ob dieses LPFNDLL_RECEIVE_CALLBACK nun ein Pointer oder was auch immer sein soll, werde es wohl oder übel noch irgendwie herausfinden müssen...ausser es sagt jemand, dass das ganz einfach sei und mir sogar noch ein Paar Tipps liefert -.-
inde deus abest
  Mit Zitat antworten Zitat