Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
Delphi 12 Athens
|
wie Hardware (HID) erkennen und via Programm verbinden/trennen?
12. Okt 2010, 07:22
Moin,
via SetupDiEnumDeviceInterfaces kann man ja die "angeschlossenen" HID-Geräte erkennen/auflisten.
"Leider" werden auch alle Geräte erkannt, welche einmal/aktuell in der HID-Verwaltung drinstehn.
Also alle Geräte, welche über "Gerät verbinden" gesucht und verbunden wurden.
Nach einem Neustart von Windows oder wenn die Verbindung zum Gerät andersweitig getrennt wurde, stehen die "verbundenen" Geräte aber nur noch im Leerlauf drin und sind physisch nicht mehr verbunden (stehen aber nich in der Liste der ).
Heißt, man kann sie zwar über SetupDiEnumDeviceInterfaces finden, man kann via CreateFile drauf zugreifen und z.B. über HidD_GetAttributes etwas auslesen,
aber kummunizieren (ReadFile, WriteFile und Co.) kann man mit dem Gerät nicht.
Gibt es da eine Möglichkeit, ohne probehalber über ReadFile/WriteFile drauf zuzugreifen, rauszufinden, ob das Gerät im Leerlauf oder verbunden ist?
Warum nicht über ReadFile und Co. ist recht einfach geklärt.
Ich würde diese Funktionalität gern direkt in meine HID-Verwaltungs-/Basisklassen inegrieren und diese weiß nicht wieviel Byte für eine Übertragung darüber verwendet werden müssen und sie kennt auch das "Protokoll" nicht, um einen "harmlosen" Befehl zum Testen nehmen zu können.
Und kann man das ganze auch irgendwie programmseitig verbinden/trennen?
Also via eigenem Delphi-Programm ein Gerät verbinden, trennen, entfernen oder suchen?
Also wenn ich z.B. bei einem nicht verbundenen WiiControler den SyncModus starte (Button 1+2 oder Sync drücken), dann soll das Programm dieses erfahren und das Gerät automatisch verbinden,
ohne daß man selber in die Bluetooth-Umgebung geht und dieses manuell verbindet.
$2B or not $2B
|