Frage

Ich habe Interesse an mit libhid ein benutzerdefinierten HID-Gerät zuzugreifen, die wir auf einem PIC-Mikrocontroller entwickeln. Ich konnte erfolgreich den test_libhid Code erhalten zu laufen. Die Anweisungen zum Lesen und Schreiben auf Geräte diese Bibliothek nutzen, werden als Kommentare in dem test_libhid Code zur Verfügung gestellt.

Ich habe versucht, die dokumentierten Techniken zum Lesen und Schreiben zu folgen, aber bisher habe ich nicht auf das Gerät, um erfolgreich zu lesen oder schreiben gewesen. Ich vermute, dass der Grund dafür sein kann, dass der Bericht Descriptor für das Gerät eine 64-Byte-Array spezifiziert sowohl für die Eingangs- und Ausgangsdaten Berichte.

Ich habe die Angaben in der Geräteklasse Definition für HID-Abschnitt von usb.org enthaltenen gelesen, und ich denke, dass ich verstehe, wie Deskriptoren im Allgemeinen funktionieren und wie sie übersetzen Pfade HID, aber meine Versuche, Daten zu lesen und schreiben das Gerät ausgefallen ist.

Ich habe festgestellt, dass das Gerät in Windows funktioniert, so dass mein Problem scheint auf der Linux-Seite zu liegen. Ich glaube nicht, dass es egal ist, aber ich sollte anmerken, dass ich zur Zeit in einer virtuellen VMware-Maschine arbeiten, beladen mit Ubuntu 8.04 Server

Kann jemand einige Hinweise geben, wie er für den folgenden Bericht Descriptor HID-Pfad (erzeugt von lsusb -vvv):

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

Auch wenn ich das test_libhid Programm ausführen, es Dumps den Parsing-Baum als 64 identische Einträge, die wie folgt aussehen:

path: 0xff000001.0x00000000; type: 0x80

Diese sind vermutlich die Eingänge. Diese Liste wird von weiteren 64 Einträge gefolgt, die wie folgt aussehen:

path: 0xff000001.0x00000000; type: 0x90

Ich habe die libhid Mailing-Liste geschrieben, aber es hat sich nicht viel Aktivität vor kurzem dort gewesen, so dass ich dachte, dass ich hier meine Frage bringen würde. Wenn jemand Hinweise, wie der HID-Pfad für diesen Ein- und Ausgabe Bericht liefern kann, sollte festgelegt werden, wäre es eine große Hilfe sein.

Danke.

War es hilfreich?

Lösung

Nach viel Versuch und Irrtum, ich war nie in der Lage libhid zu erhalten mit dem Bericht Descriptor für meine Zielgerät zu arbeiten. Ich fand, dass die HID-Device Interface (hiddev) funktionierte sehr gut und war eigentlich sehr einfach zu verstehen. Es gibt eine gute PDF Referenz für hiddev , die ich sehr empfehlen kann. Auch die Include-Datei hiddev.h in / usr / include / linux war auch sehr hilfreich. In Ubuntu 8.04 arbeitete die hiddev Schnittstelle "out of the box" ohne zusätzliche Konfiguration erforderlich.

Hoffentlich wird dies an die nächste Person eine Hilfe sein, die Schnittstellenprobleme ihre HID-Gerät auf einem Linux-Host hat.

Hinweis: Der Link, den ich oben für die PDF-Datei zur Verfügung gestellt scheint verschwunden zu sein. Ich schrieb eine Kopie der PDF-Datei hier . Es ist ein kostenloser File-Sharing-Dienst, deshalb brauchen Sie ein paar Anzeigen, um zu überleben, sie herunterzuladen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top