2011-01-16 28 views
4

私はPNI Corpによって開発されたセンサーで、spacepoint-fusionと呼ばれています。私はこのデバイスとC++でインターフェースをとり、デバイスから新しいデータを連続的に読み込む必要があります。HIDとの対話

デバイスをコンピュータに接続すると、/ dev/hidraw1と/ dev/hidraw2が表示されます。また、/ dev/usb/hiddev0が表示されます。

私の問題は、私はこれらのデバイスをどのように読むのか分かりません。私は、オンラインで事例やドキュメンテーションを見つけることができません。私はこれでどこから始めるべきかも知らない。私は可能な解決策としてlibhidとhiddevを見てきましたが、まだ、これらのライブラリの使い方を理解することはできません。

LinuxマシンでこのヒューマンインタフェースデバイスをC++でどのように読み込むのですか?例は非常に高く評価されるでしょう。おかげさまで システムコールを書き、http://libusb.sourceforge.net/doc/index.html

#include <libusb.h> 

もう一つの方法は/ dev/USB/hiddev0読み取りと同様に、単純なファイル読み込み:

答えて

1

あなたがのlibusbライブラリを使用する必要があります。 参照:man open、man 2 read、man 2 write。

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

あなたは複雑な道を先取りしています。最初に "spacepoint-fusion"に関する情報が必要になります(うまくいけばそれはドキュメンテーションと一緒に来ました)。そのようなプロダクトID /ベンダーIDとして

いくつかの初期値は、端末のコマンドで獲得することができます:

lsusb 

次に、あなたはおそらく、再び使用して見つけることができたエンドポイントを、知っておく必要があります:

lsusb -v 

これにより、デバイス上のどのアドレスに書き込むことができ、どのアドレスを読み込めるか(および場合によっては読み書きバッファのサイズ)を見つけることができます。しかし、これはあなたが適切な文書なしで得ることができる限りです。デバイスに書き込む値と、デバイスから返される値を知る必要があります。

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

私はまた、あなたのデバイスにはないHID準拠であるという仮定を作っています:あなたは、デバイストライへ/から/書き込みを読んで、この例に従うする値を知っていると仮定すると、

まったく同じでなければならない。とにかく、私はあなたのUSB旅であなたをよく願っています。

1

hidrawデバイスでhexdumpを実行し、 'spacepoint-fusion'に入力を作成してみてください。

$ hexdump -C /dev/hidraw1 

あなたには、いくつかの有用なデータを取得する場合、最も簡単な方法は、デバイスからの入力を取得するopen()read()を使用することです。各read()は、デバイスから1パケットの情報を返す必要があります。あなたのデバイスのためのいくつかのドキュメントが必要になるか、パケットの意味をリバースエンジニアリングする準備ができているでしょう。

関連する問題