2017-04-20 27 views
1

私はのWinUSBを使用してアイソクロナスUSB転送の実験をしてきた、そしてそれはのWinUSBは常に可能な限り迅速にデータを送ることが判明:におけるようにUSB(のWinUSB)アイソクロナス帯域幅管理

WinUsb_WriteIsochPipeは、転送バッファをパケット各インターバルで、ホストはインターバルごとに許容される最大バイトを送信できます。 kernel driversためしかし

あなたは明らかに短いパケットを送信することができます

MaximumPacketSize値は、アイソクロナスパケットの最大許容サイズを示します。クライアントドライバは、各アイソクロナスパケットのサイズをMaximumPacketSize値未満の任意の値に設定できます。

私はUSBオーディオがこれをどのように処理するのかと考えました。私がこの仕様で見ることができるところでは、インターフェイスのための2つの代替設定 - ゼロ帯域幅1とゼロ以外の帯域幅の構成 - があります。エンドポイントがフルサイズのパケットを必要とするかどうかを示すフラグがあります。

だから私の質問は以下のとおりです。

a)は、フルスピードデータ未満の送信を処理するための最良の方法は何ですか。別の最大パケットサイズを持つ代替構成の配列全体を持つべきですか?

b)最大パケットよりも短いパケットを送信できると思っていますか?もしそうなら、なぜWinUsbはこれを許可しないのですか?

答えて

0

送信したいパケットごとにWinUsb_WriteIsochPipeを1回呼び出す必要があります。非同期I/Oを使用するようにして、数十から数百のリクエストを先にキューに入れることができます。

+0

いいえ、この関数は、最大パケットサイズを使用するフレームの整数でなければならない転送を開始します。 – Timmmm

関連する問題