![]() |
Problem mit dem IO-Warrior und IR
Ich habe eine Platine entwickelt mit einem grafischem USB-Display und dem IO Warriror 24. Das funktioniert alles auch wunderbar. Nun wollte ich ein Plugin für Winamp schreiben, was auch ohne Probleme funktioniert. Nur leider habe ich keinen Plan wie man die IR Funktion im IO-Warrior in einer DLL benutzt. In einem normalen Programm ist das alles kein Problem, nur halt in einer DLL ebend dann doch. In den Sourcebeispielen ist ein Beispiel wie man den IO-Warrior halt benutzt. Wenn ich dieses Beispiel als Grundlage nehme und dann I2C, LCD und IR aktiviere, kann ich auf dem I2C Bus arbeiten, ich kann auf das Display schreibn. Aber kein IR-Signal kommt an. Vieleicht hat jemand ja eine Idee, mein Hilferuf im CodeMercs Forum war vieleich ein wenig ungeschickt formuliert. Im Stillen hoffen ich ja das Robert den Beitrag liest, denn wer könnte besser helfen
:-)) CU rage |
Re: Problem mit dem IO-Warrior und IR
Frag doch zur Sicherheit nochmal im CodeMercs Forum
![]() Da ich die HID Komponente gemacht habe und jetzt bei Code Mercenaries arbeite werde ich spaetestens Montag antworten. Ansonsten hole dir die HID Komponente von ![]() |
Re: Problem mit dem IO-Warrior und IR
Hi Robert
Ich wollte Dich nur mal an die Antwort (sofern möglich) erinnern. Im IO-Warrior Forum gabs leider auch keine. Sorry, das ich drängle, aber mir sitz das Problem im Nacken, oder besser am Telefon .-). cu und Danke rage |
Re: Problem mit dem IO-Warrior und IR
Sorry, ich habe deine Frage im CodeMercs Forum nicht gesehen.
Hier eine Beispiel DLL in Delphi:
Delphi-Quellcode:
Das haengt wahrscheinlich damit zusammen das die DLL einen eigenen Memory-Manager hat.
library HIDinDLL;
uses Windows, Messages, SysUtils, Classes, Dialogs, Forms, DBT, JvHidControllerClass; {$R *.res} type // just an object to carry the methods TMethodObject = class(TObject) public procedure DLLDeviceChange(Sender: TObject); function EventPipe(var Msg: TMessage): Boolean; end; var // the HID controller in a DLL HidCtl: TJvHidDeviceController; // an object to carry methods DLLHelperObject: TMethodObject; // assigned to HidCtl.OnDeviceChange procedure TMethodObject.DLLDeviceChange(Sender: TObject); begin // just show that it works ShowMessage('DeviceChange happened'); end; // this method is registered with Application.HookMainWindow and // drives HidCtl externally function TMethodObject.EventPipe(var Msg: TMessage): Boolean; begin Result := False; // sort out WM_DEVICECHANGE : DBT_DEVNODES_CHANGED if (Msg.Msg = WM_DEVICECHANGE) and (TWMDeviceChange(Msg).Event = DBT_DEVNODES_CHANGED) then HidCtl.DeviceChange; end; procedure StartHID(hWnd: HWND); stdcall; begin // assigns the Application object of the *DLL* a window to get messages from Application.Handle := hWnd; // create the HID controller HidCtl := TJvHidDeviceController.Create(nil); // create the helper object DLLHelperObject := TMethodObject.Create; // hook in the DLL Application.HookMainWindow(DLLHelperObject.EventPipe); // now the HID component works and can be used HidCtl.OnDeviceChange := DLLHelperObject.DLLDeviceChange; end; procedure StopHID; stdcall; begin // clean up Application.UnhookMainWindow(DLLHelperObject.EventPipe); HidCtl.Free; DLLHelperObject.Free; end; exports StartHID, StopHID; begin end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz