.netアプリケーションから通信できる必要があるUSBデバイスがあります。このデバイスは標準のHIDデバイスではありません。それを初期化するために、別のタイプのマシンでそれを初期化するときに使用されるパケットのために、USBプロトコルアナライザー/スニファーからパケットのトレースを与えられました。デバイスを初期化するために私の.netアプリケーションからこのパケットシーケンスを複製する必要があります。ControlTransfer命令がLibUsbDotNetのセットアップパケットの値のパラメータを送信しない
私は特定のコントロール転送パケット/クラスタイプ要求に達するまで、すべてうまくいきます。
私は私が発行する必要がある状態を与えてきたトレース:
Control Transfer Class Type Request
21 0A 00 00 00 00 00 00
Result stall (intentional)
Control Transfer Class Tyoe Request
A1 01 01 03 00 00 40 00
Result will initiate a 64 byte transfer of data from the device to the host.
これは私がこれを行うに使用しているコードです:
// Transcation 6
UsbSetupPacket setup = new UsbSetupPacket(0x21, 0x0A, 0, 0, 0);
bool result = MyUsbDevice.ControlTransfer(ref setup, buffer, 0, out transferred);
Console.WriteLine("Result = {0}", result);
// Transcation 7
setup = new UsbSetupPacket(0xA1, 0x01, 0x0301, 0x0000, 0x0040);
result = MyUsbDevice.ControlTransfer(ref setup, buffer, 64, out transferred);
Console.WriteLine("Result = {0}, {1}", result, transferred);
を、これは私は微量でありますこのデバイス用のUSBデータトラフィックを盗聴されてBusHoundから受け取っ:
Device Phase Data Description Cmd.Phase.Ofs(rep)
------ ----- ------------------------ ---------------- ------------------
46.0 CTL 21 0a 00 00 00 00 00 00 SET IDLE 20.1.0
46.0 USTS c0000004 stall pid 20.2.0
46.0 CTL a1 01 01 03 00 00 00 00 GET REPORT 21.1.0
46.1 USTS c0000004 stall pid 22.1.0
あなたは0x0040が値のparamを見ることができるように私が設定しているにもかかわらず、セットアップパケット内のeterがそれを作り出していません。私はUSBと.net/LibUsbDotNetには比較的新しいので、私が間違っていることはよく分かりません。誰かが私に試して何かを提案できるのだろうか?
注、私は、Visual Studioを使用してWindows 7 64ビットマシン上で開発しています2008年
おかげで、 リッチ