Seit 'ner Weile erstelle ich mir ja 'ne kleine HID-Komponente. (Human Interface Devices /
Hardware Interface Device)
Ja, es gibt z.B. eine nette Komponente in den
JEDI (damals noch von Robert Marquard),
aber ich bastel gern und abgesehn davon nutze ich z.B. einen anderen Input-Kanal.
Die Komponente sollte aktuell unter dem Windows Bluetooth-Stacks und auch mit denen von z.B. BlueSoleil funktionieren.
(leider unterstützen Beide jeweils nur eine der möglichen Schnittstellen WriteFile/HidD_SetOutputReport, obwohl angeblich Beides gehn soll )
Der Input wird synchron über WM_INPUT (RawInputDevices) geholt.
Dagegen bei den JEDIs über Threads und asynchronen ReadFile, je Device.
Wobei manuelle ReadFile/HidD_GetInputReport auch unterstützt werden.
Gerade hab ich die HID-Komponente auch aufgeteils, da alles in einem langsam zuviel wurde, vorallem da demnächst noch 'ne Bluetooth-Verwaltung mit rein soll.
Es gibt also:
(die Controller sind als Programmglobale[EXE] Singleton ausgelegt)
* den TMessageController, welcher die Windows Messages verwaltet
* den TRawInputController, welcher für WM_INPUT und Co. verantwortlich ist,
* demnächst noch (hoffentlich) den TBluetoothController,
* den THIDController, über wo alles zusammenläuft und wo die HI
D-Devices verwalter werden,
* man kann sich einige THIDDevice vom Controller besorgen, welche jeweils ein HI
D-Device kapseln,
* und das THIDDeviceEx, welches auch als
VCL-Komponente nutzbar ist.
Bei diesem bestellt man quasi ein THIDDevice (wird intern verwalter), hat schonmal die selbe Schnittstelle und wenn ein passendes Device verfügbar ist, dann wird es intern verbunden und eine Weiterleitung zum THIDDeviceEx eingerichtet.
Ein THIDDevice ist halt nur gültig, mit einem existierenden/registrierten Gerät dahinter.
Das Ganze ist noch nicht ganz fertig, da ich die Conroler nun aufgeteilt hab, muß so Einiges nochmal geprüft und vorallem die Callbacks neu verbunden werden.
Vorallem die Callbacks des HIDControllers, der HIDDevices und der Demoanwendung sind davon betroffen. (den Rest hab ich jetzt hoffentlich fertig)
Warum ich das jetzt aber nun doch schon veröffentliche:
- erstmal hab ich das Ganze komplett vom Wiimote-Projekt abgetrennt und kann es nun als Einzelprojekt fortführen
- dann wollte ich mal fragen, ob die Schnittstellen so OK sind
- und vorallem brauch ich ein bissl Hilfe (aktuell beim Bluetooth)
Könnte mal bitte jemand prüfen,
> ob alle HID-Devices erkannt werden, wie z.B. der WiiController, normale USB-Game-Controller, einige Mäuse/Tastaturen mit Sonderfunktionen usw.
> ob die Infos zu den Devices halbwegs korrekt sind
- die IndexedString (HIDInfo > Strings/Languages) wurden deaktiviert, da sie gerne mal zu einem BlueScreen führen, vorallem unter BlueSoleil
> Eventuell auch mal in "TopLevelCollection (Feature) / In- && Output" schauen, ob da was reinkommt.
> und ganz Wichtig, werden alle BlueToothgeräte in dem rosa Memo aufgelistet und wenn ja wo?
- leider gibt es kaum Informationen und vorallem Codes/Erfahrungsberichte zu den Bluetooth-APIs, aber ich hoffe mal, daß unter "BluetoothFindFirstDevice
15" alle auftauchen,
so daß ich diese Einstellung nutzen kann und dann "nur" noch rausbekommen muß, wie ich eine Verbindung zum zugehörigen HI
D-Device.
[add] ja, das Controler wird demnächst in Controller umbenannt.