2016-03-26 17 views
0

Ich muss auf ein USB-Gerät von C++ unter Linux zugreifen und bin völlig neu zu USB-Schnittstelle. Das Gerät, auf das ich zugreife, kommt nicht mit einem Treiber, sondern wird als HID-Gerät angezeigt. Das Gerät ähnelt einer Maschinensteuerung (einfache Kurzbefehle ein/aus). Es ist nicht wie eine Maus/Tastatur - ich bin mir also nicht sicher, ob es als HID-Gerät angezeigt werden sollte.HID USB-Zugriff vs libusb

Von dem, was ich gelesen habe, sind meine Optionen, um es als ein HID-Gerät zugreifen, oder schwarze Liste und Zugriff auf es mit libusb. (Bitte korrigieren Sie mich, wenn ich das falsch verstanden habe). Es scheint, als ob HID-Zugriff der Weg ist - andernfalls muss ich einen Kernel-Treiber für das Gerät schreiben.

Es scheint, dass HID-Zugang vorzuziehen ist. Gibt es ein Beispiel für die Kommunikation mit einem Gerät unter Verwendung von HID unter Linux? Dies ist ein einfaches USB-Gerät mit einer USB-Konfiguration, einem Lese-Endpunkt und einem Schreib-Endpunkt.

Antwort

2

Ich empfehle die Verwendung hidapi. Wenn Ihr Gerät bereits so eingerichtet wurde, dass es als solches funktioniert, ist dies ein besserer Weg als libusb. libusb wird funktionieren, aber Sie müssen wahrscheinlich die HID-Spezifikation sowie das Protokoll für Ihr Gerät implementieren. Wenn Sie nur Hidapi verwenden, sollten Sie nur das Protokoll für das Gerät oben auf der Hidapi-Ebene implementieren. Ich denke, ich erinnere mich, dass Hidapi sowieso auf libusb implementiert ist.

+0

Da ich die Lese-/Schreib-Endpunkte kenne, gibt es ein Beispiel (C++, idealerweise Qt), das mit einem einfachen Gerät von HID spricht? – TSG

+1

Sehen Sie sich den von mir bereitgestellten Link an, er enthält alles, was Sie benötigen sollten, einschließlich einer Beispielverwendung rechts auf der ersten Seite und eines Links zum [github] (https://github.com/signal11/hidapi/blob/master/hidtest) /hidtest.cpp) mit der ganzen Quelle. – Preston