12

XOOM が USB-シリアル ケーブル経由で組み込みデバイスと通信できるように Java コードを記述しようとしています。

このコードのチャンクを使用しました:

connection.controlTransfer(0x21, 34, 0, 0, null, 0, 0);
connection.controlTransfer(0x21, 32, 0, 0, new byte[] { (byte) 0x80,
                                0x25, 0x00, 0x00, 0x00, 0x00, 0x08 }, 7, 0);

これは、セットアップ要求を USB デバイスに送信することです。なぜ requestType が 0x21 なのか、なぜ requestID が 32、34 なのか、などはわかりません。

ここの仕様によると: http://www.beyondlogic.org/usbnutshell/usb6.shtml#SetupPacket、標準デバイス リクエスト、標準インターフェイス リクエスト、および標準エンドポイント リクエストでは、requestType はいずれも 0x21 ではなく、requestID はいずれも 0x21 ではありません。 32または34.送信された日付バッファを含むこれらのパラメータについて説明はありますか??

4

1 に答える 1

23

セットアップ パケットの最初のバイト (bmRequestType) は、3 つのフィールドで構成されます。最初の (最下位) 5 ビットは受信者、次の 2 ビットはタイプ、最後のビットは方向です。

値が 0x21 の場合、これは 100001 のバイナリ表現を持ちます。個々のフィールドに分割すると、これは 0 01 00001 になり、方向についてはホストからデバイス、クラス、およびインターフェイスに対応します。それぞれタイプと受信者フィールド。

したがって、これは特定のインターフェイスに送信される制御メッセージであり、標準の USB クラスによって定義されます。

これは USB からシリアルへのアダプターと通信するためのものだとおっしゃっていたので、通信デバイスの USB クラス定義に従って、これはおそらく通信インターフェイスに送信されていると思います。

そのドキュメントによると、34 (0x22) の bRequest 値は SET_CONTROL_LINE_STATE メッセージに対応し、32 (0x20) は SET_LINE_CODING メッセージ (51 ページと 53 ページ) に対応し、シリアルのセットアップ/初期化の一部として意味があるようです。デバイス。

これらの各メッセージの詳細は、さらに下の 57 ページと 58 ページで定義されています。

于 2012-05-06T05:08:19.290 に答える