5

私はスペースポイントフュージョンと呼ばれる PNI Corp が開発したセンサーを持っています。C++ でこのデバイスとやり取りし、デバイスから新しいデータを継続的に読み取る必要があります。

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

私の問題は、これらのデバイスの読み方がわからないことです。オンラインで例やドキュメントが見つかりません。どこから始めればいいのかさえわかりません。私は可能な解決策として libhid と hiddev を検討してきましたが、今のところ、これらのライブラリのいずれかを使用する方法がわかりません。

では、Linux マシンの C++ でこのヒューマン インターフェイス デバイスから読み取るにはどうすればよいでしょうか。例をいただければ幸いです。ありがとう。

4

3 に答える 3

2

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

$ hexdump -C /dev/hidraw1

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

于 2012-01-01T20:21:59.400 に答える
1

あなたの前には複雑な道が待っています。最初に「spacepoint-fusion」に関する情報が必要になります (ドキュメントが付属していることを願っています)。

製品 ID/ベンダー ID などの一部の初期値は、端末コマンドで取得できます。

lsusb

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

lsusb -v

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

デバイスとの間で読み取り/書き込みを行う値がわかっている場合は、次の例に従ってください。

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

また、お使いのデバイスは HID に準拠していると仮定していますが、必ずしもそうである必要はありません。とにかく、あなたの USB の旅がうまくいくことを祈っています。

于 2011-11-06T14:04:54.900 に答える
1

libusb ライブラリを使用する必要があります: http://libusb.sourceforge.net/doc/index.html

   #include <libusb.h>

もう 1 つの方法は、/dev/usb/hiddev0 を読み取り、書き込みシステム コールで単純なファイルとして読み取ることです。次を参照してください: man open、man 2 read、man 2 write。

   #include <fcntl.h>
   #include <unistd.h>
于 2011-01-16T19:28:30.713 に答える