2011-12-15 10 views
1

開かれたUSB接続からデータを読み取るには、UsbDeviceConnection bulkTransferメソッドを使用します。USBホストモードでUsbDeviceConnectionから読み取る最善の方法

私は、要求を送信した後に、ルーチンはすべての着信データを読み取る必要があります。これは8バイトまたは300 +バイトであってもかまいません。

問題は、bulkTransferが何らかの理由ですべてのバイトを読み取るのではなく、それ以上のバイトがある間に返されるということです。

データがなくなるか、タイムアウトを増やすか、別の方法があるようになるまで、bulkTransferの回りにループを書く方がよいでしょうか?

これを処理するにはどうすればよいでしょうか?

私はループアプローチを試しましたが、毎回約10-20バイトしか読み込まれず、タイムアウトが1秒であっても驚いています。私は、すでに利用可能なデータがあると確信しています。

多くの例では4096がありますが、これがデータの読み込みにどのように影響しますか?

感謝

答えて

1

デバイスは一度に10のバイトを送信し、300+バイトを終了するように繰り返していた場合、あなたはまだこれらのみ10バイトのチャンクにあなたがバルク転送で読み取るたびに取得します。

つまり、このメソッドはバッファをいっぱいにするのを待っていません。それは何かがあるとすぐに戻ります。したがって、本当に300バイト以上の応答をすべて収集したい場合は、ループする必要があります。

関連する問題