4

C++ (できれば) またはJavaを使用して、USB 経由で Wi​​ndows 7 マシンに接続されている Trimble SPS-361 GPS レシーバーからの出力を読み取ろうとしています。人々が同様の質問をしたことは知っていますが、探しているものが見つからないようです. libusbが私の最善の策のように思えますが、本当ですか? もしそうなら、良いチュートリアル/ガイド/サンプルコードは何ですか?

ある種のデバイス固有のドライバーをインストール/作成する必要があるようです。その後、libusb を介して C++ を使用してデバイスからデータを読み取ることができます。それは USB から読み取るための一般的なプロセスですか、それとも混乱していますか?

私が必要だと思うものを要約すると(私はいたるところにいることを知っています):

  1. 一般的な USB との通信方法の説明/チュートリアル
  2. Windows 7 で USB デバイスからデータを読み取る方法のより具体的なチュートリアル/ガイド/サンプル コード
  3. libusb とは正確には何ですか?それは私が探しているものですか?
4

2 に答える 2

5

デバイスからの生データが必要な場合は、USB デバイス リストでそれを見つけて、文字通りファイルのように読み取ることができます。

すべてのデバイスを取得することから始めます。

HDEVINFO hDevInfo = SetupDiGetClassDevs( &HIDWatch::GUID_DEVINTERFACE_HID, 0, 0, DIGCF_DEVICEINTERFACE );

探しているものが見つかるまで、それぞれを列挙します。

SetupDiEnumInterfaceDevice( hDevInfo, NULL, &HIDWatch::GUID_DEVINTERFACE_HID, index++, &InterfaceInfoData )

... を介してデバイスの詳細を取得し、アクセスを介してSetupDiGetInterfaceDeviceDetailデバイス パスへのファイル ハンドルを開きます... を実行して、を使用して製品文字列を取得します。お使いのデバイスでない場合は、ファイルを閉じます。それがあなたのものである場合は、ループ(できればスレッド上)に座って aを実行すると、デバイスから生のレコードを取得できます。CreateFileGENERIC_READDeviceIoControlIOCTL_HID_GET_PRODUCT_STRINGCloseHandleReadFile

それはあなたを動かすはずです...

于 2013-07-11T19:56:01.523 に答える
0

通常、GPS センサーは Windows のシリアル ポートとして公開されます。特定の USB 処理を行う必要はありません。

CreateFile/ReadFile を介してシリアル通信を行い、受信した GPS NMEA データを解析するだけです。

于 2014-01-27T02:19:54.340 に答える