Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi HID Ansteuerung (https://www.delphipraxis.net/87431-hid-ansteuerung.html)

Union 28. Feb 2007 16:55


HID Ansteuerung
 
Ich verwende die Jedi HID Komponente um ein Telefonie-Headset anzusteuern. Ich habe auch erreicht was ich wollte, aber nur durch Herumprobieren.

Ich habe folgende Aufgabenstellungen:

Wird die Verbinden/Auflegen-Taste gedrückt

Im TJvHidDevice.OnData Event erhalte ich 3 Datenblöcke, bei denen jeweils die ersten drei Byte unterschiedlich sind. Beim Anschalten ist dies $80,$00,$01 und beim Ausschalten $81,$01,$00.

Internen Ringer des Headset setzen

Ich sende einen Datenblock an das Gerät. Dabei scheinen nur die ersten zwei Byte relevant. Das erste Byte im Puffer definiert dabei den Report und das erste Datenbyte einen Wert für an/aus.

Leider weiss ich nicht, warum das funktioniert. Gibt es eine Möglichkeit das allgemeingültig und richtig zu machen, nachdem man die HID-Informationen ausgelesen hat? Ich sehe jedenfalls auf den ersten Blick keine Zusammenhänge.


Hier die entsprechenden Daten:
Code:
"Plantronics BT Adapter" VID=$047F PID=$4254
      UsagePage=Consumer ($000C) Usage=Consumer Control ($0001) CollectionType=Application ($01)
         Button Input: UsagePage=FFA0 ($FFA0) Usage=B7 ($00B7)
         Button Input: UsagePage=FFA0 ($FFA0) Usage=B6 ($00B6)
         Button Input: UsagePage=FFA0 ($FFA0) Usage=B5 ($00B5)
         Button Input: UsagePage=FFA0 ($FFA0) Usage=B4 ($00B4)
         Button Input: UsagePage=FFA0 ($FFA0) Usage=B3 ($00B3)
         Button Input: UsagePage=FFA0 ($FFA0) Usage=B2 ($00B2)
         Button Input: UsagePage=FFA0 ($FFA0) Usage=B1 ($00B1)
         Button Input: UsagePage=FFA0 ($FFA0) Usage=A1 ($00A1)
         Button Output: UsagePage=Telephony ($000B) Usage=Ringer ($009E)
         Button Feature: UsagePage=FFA0 ($FFA0) Usage=1 ($0001)
         Button Feature: UsagePage=FFA0 ($FFA0) Usage=B5 ($00B5)
         Button Feature: UsagePage=FFA0 ($FFA0) Usage=A1 ($00A1)
         Value Feature: UsagePage=FFA0 ($FFA0) Usage=9 ($0009)

Robert Marquardt 28. Feb 2007 18:08

Re: HID Ansteuerung
 
Kannst mich doch direkt anschreiben :-)
Ich habe da einen Design-Fehler gemacht. Ich haette im OnData-Event die ReportID nicht vom Rest des Reports abtrennen sollen.
Jetzt ksann man den Puffer nicht direkt in eine von den GetUsageValue-Methoden fuettern.

Prinzipiell funktioniert das HID API so dass man einen Report liest und dann eine Usage extrahiert.
Der HID-Deskriptor beschreibt naemlich genau die Struktur des Reports.
Schick mir mal direkt robert_marquardt att gmx dott de den Output von UsagesDemo und CollectionDemo und dein Programm.
Ich bau dann ein wie man das macht. Ein HID-Geraet das einen Deskriptor hat der wirklich strukturiert ist, ist eher selten, daher werden die Methoden selten nachgefragt.

Ich habe die Idee das man ein Report-Objekt einfuehrt das die ganzen Analysemethoden in Properties umsetzt, aber ich finde einfach keine Zeit das zu realisieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz