2013-06-21 22 views
11

libusbを正しく接続してUSBデバイスと通信するにはどうすればよいですか?libusbを正しく接続して接続されたUSBデバイスと通信するには?

具体的には、私はUSBデバイスにデータを転送しますどのように、デバイスから情報を受信、彼らはストレージを持っている場合は、接続されたデバイスの名前を見つけるなど

具体的には、私はこれを実行しますMacの場合  OS   Xマシンなので、Windowsヘッダファイルを使うことはできません。

libusbとUSBデバイスについての説明があれば、それも参考になります。私はここのlibusb-1.0を使用してに関するテキストのHOWTOを発見した

答えて

6

Hereはあなたに役に立つかもしれない同様の問題についての投稿です。私はたくさんのリンクを含んでいます。

しかし、あなたはむしろここでそれを見るでしょう。その場合、ここに行く!

Libusbでは、特定のVendor/Product ID(V/P Id)に基づいてデバイスを列挙して、必要なデバイスを選択することができます。あなたがこれを知らず、製品の説明でオンラインで見つけることができない場合、簡単に見つけることができます。

オンラインでない場合は、Linuxでlsusbと同様のアプリを使用する必要があります。 (私はそれがMac上にあるとは思わない)lsusbを実行すると、接続されているデバイスとそのV/P Idが一覧表示されます。簡単にデバイスを見つけるには、プラグを抜いて、lsusbを実行し、デバイスを差し込み直して比較します。それは朝飯前だ。 lsusbのように、Mac上のusbリストアプリにV/P IDが表示されたらうれしいです。

このV/P IDを取得すると、libusb(0.1を使用する場合)を使用してすべてのデバイスを列挙し、そのIDと一致するデバイスを検索します。 (私はlibusbxを使用して、V/P idに基づいた単一のデバイス検索機能を使用することをサポートしています - 実際、libusbxは全般的に簡潔です)

デバイスを選択すると、機能レポートまたは出力レポート。送信するパケットは、私が信じる個々のデバイスに依存するため、これは最も複雑な部分です。これは8バイトのデータで、そのうちの1つのみがusbデバイスに送信したい単一の文字です。 (8文字を送信したい場合は、文字の配列をループして文字を送信するか、文字を送信する必要があります)

例として、特定の端末を参照してください。example 2つのLEDを制御します。それが役に立つなら、素晴らしい! libusbxとlibusb-0.1の例が含まれています。

こちらがお役に立てば幸いです。

+0

lsusbの代わりに、マッキントッシュ(関係するorigiral post)が、system_profiler SPUSBDataTypeを使ってベンダーIDとプロダクトIDを取得できます。 –

+0

私はこれが日付だと知っていますが、複数のデバイスの場合はどうしますか?言い換えれば、同じタイプとメーカーの2つのRFIDリーダーが接続されているとしますか? – audiFanatic

1

あなたが続くことができるプロセスは次のとおりです。

  1. は、VIDを取得し、あなたがlsusb
  2. を使用して通信するデバイスのPIDは、場合、デバイスを開き、デバイスディスクリプタ
  3. を読むようにしてくださいデバイス使用文字列記述子の名前を取得するには
  4. カーネルドライバが接続されているかどうかを確認します。そうであれば、それを切り離して、未処理のデータ転送を行います。
  5. 応答を再度取得した後、ドライバを再接続します。