Ich bin daran interessiert, libhid zu verwenden, um auf ein benutzerdefiniertes HID-Gerät zuzugreifen, das wir auf einem PIC-Mikrocontroller entwickeln. Es ist mir gelungen, den test_libhid-Code zum Laufen zu bringen. Die Anweisungen zum Lesen und Schreiben auf Geräte mit dieser Bibliothek sind als Kommentare im test_libhid-Code enthalten.
Ich habe versucht, die dokumentierten Techniken zum Lesen und Schreiben zu befolgen, aber bisher ist es mir nicht gelungen, das Gerät zu lesen oder zu beschreiben. Ich vermute, dass der Grund dafür darin liegt, dass der Berichtsdeskriptor für das Gerät ein 64-Byte-Array sowohl für die Eingangs- als auch für die Ausgangsdatenberichte angibt.
Ich habe die Details im Abschnitt Device Class Definition for HID von usb.org gelesen, und ich denke, dass ich verstehe, wie Deskriptoren im Allgemeinen funktionieren und wie sie in HID-Pfade übersetzt werden, aber meine Versuche, Daten auf dem Gerät zu lesen und zu schreiben, sind fehlgeschlagen.
Ich habe überprüft, dass das Gerät unter Windows funktioniert, also scheint mein Problem auf der Linux-Seite zu liegen. Ich denke nicht, dass es eine Rolle spielen sollte, aber ich sollte anmerken, dass ich derzeit in einer virtuellen VMWare-Maschine arbeite, die mit Ubuntu 8.04 Server
Kann mir jemand sagen, wie ich den HID-Pfad für den folgenden Berichtsdeskriptor (erzeugt von lsusb -vvv) angeben kann?
Report Descriptor: (length is 29)
Item(Global): Usage Page, data= [ 0x00 0xff ] 65280
(null)
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Collection, data= [ 0x01 ] 1
Application
Item(Local ): Usage Minimum, data= [ 0x01 ] 1
(null)
Item(Local ): Usage Maximum, data= [ 0x40 ] 64
(null)
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x40 ] 64
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Local ): Usage Minimum, data= [ 0x01 ] 1
(null)
Item(Local ): Usage Maximum, data= [ 0x40 ] 64
(null)
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Main ): End Collection, data=none
Wenn ich das Programm test_libhid ausführe, wird der Parse-Baum als 64 identische Einträge ausgegeben, die wie folgt aussehen:
path: 0xff000001.0x00000000; type: 0x80
Dies sind vermutlich die Eingaben. Auf diese Liste folgen weitere 64 Einträge, die wie folgt aussehen:
path: 0xff000001.0x00000000; type: 0x90
Ich habe auf der libhid-Mailingliste gepostet, aber dort gab es in letzter Zeit nicht viel Aktivität, also dachte ich, dass ich meine Frage hier stellen würde. Wenn jemand eine Anleitung geben kann, wie der HID-Pfad für diesen Eingabe- und Ausgabebericht angegeben werden sollte, wäre das eine enorme Hilfe.
Merci.