2011-01-16 6 views
4

Ich habe einen Sensor von der PNI Corp namens SpacePoint-Fusion entwickelt. Ich muss mit diesem Gerät in C++ verbinden und ständig neue Daten vom Gerät lesen.Im Gespräch mit einem HID

Wenn ich das Gerät an meinen Computer anschließe, sehe ich/dev/hidraw1 und/dev/hidraw2 auftauchen. Auch/dev/usb/hiddev0 taucht auf.

Mein Problem ist, dass ich keine Ahnung habe, wie man diese Geräte liest. Ich kann keine Beispiele oder Dokumentationen online finden. Ich weiß nicht einmal, wo ich damit anfangen soll. Ich habe libhid und hiddev als mögliche Lösungen betrachtet, aber bis jetzt kann ich nicht herausfinden, wie man eine dieser Bibliotheken benutzt.

Also, wie lese ich von diesem menschlichen Schnittstelle Gerät in C++ auf einem Linux-Rechner? Beispiele würden sehr geschätzt werden. Danke.

Antwort

1

Sie sollten die libusb-Bibliothek verwenden: http://libusb.sourceforge.net/doc/index.html

#include <libusb.h> 

Ein anderer Weg,/dev/usb/hiddev0 mit Lese als einfache Datei gelesen wird, Systemaufrufe schreiben. Siehe: Mann offen, Mann 2 lesen, Mann 2 schreiben.

#include <fcntl.h> 
    #include <unistd.h> 
1

Sie haben eine komplizierte Straße vor sich. Sie benötigen zunächst Informationen über die "spacepoint-fusion" (hoffentlich kam es mit Dokumentation).

Einige Anfangswerte wie Produktnummer/Vendor-ID kann mit dem Terminalkommando gewonnen werden:

lsusb 

Als nächstes werden Sie wahrscheinlich die Endpunkte müssen wissen, was wiederum gefunden verwenden könnte:

lsusb -v 

Hier finden Sie, auf welche Adressen auf dem Gerät geschrieben werden kann und welche Adressen gelesen werden können (und möglicherweise die Größe der Schreib-/Lesepuffer). Aber das ist soweit, wie Sie ohne geeignete Dokumente erhalten können. Sie müssen wissen, welche Werte auf das Gerät geschrieben werden und welche Werte von dem Gerät erwartet werden.

Wissen Sie, Unter der Annahme, was zu lesen/schreiben Werte von/an das Gerät versuchen und folgen Sie diesem Beispiel:

http://www.lvr.com/code/generic_hid.c

Ich mache auch die Annahme, dass Ihr Gerät konform HID, das nicht der Fall ist muss überhaupt der Fall sein. Trotzdem wünsche ich dir auf deiner USB-Reise alles Gute.

1

Versuchen Sie, hdddump auf den hidraw-Geräten auszuführen und einige Eingaben auf Ihrer 'spacepoint-fusion' zu erstellen.

$ hexdump -C /dev/hidraw1 

Wenn Sie einige nützliche Daten zu erhalten, dann wäre der einfachste Weg, open() und read() zu verwenden, um die Eingabe von dem Gerät zu erhalten. Jeder read() sollte ein Paket mit Informationen von Ihrem Gerät zurückgeben. Sie benötigen eine Dokumentation für Ihr Gerät oder sind bereit, die Pakete zurückzuentwickeln.