WinUsb_ControlTransferについて質問です
WinUsb_ControlTransferを使用したAPIを使っているのですが、
処理時間を大まかにはかったところ、WinUsb_ControlTransferに約1.5ミリほどかかるのですが、
これは正常なのでしょうか?
すみません、内容を端折りすぎたので追加します。
開発環境は visual studio 2008
MFCを使ったアプリケーションです。
システム開発ボードを使用しており、
(http://www.prime-sys.co.jp/products/cxusb2.htm)※この商品
これを制御するために用意されたAPIを使用しています。
(http://www.prime-sys.co.jp/DownLoad/RefApp7/software/spec_SUP64_API_r4.pdf)これです
このAPIはWINUSBのラッパー関数なのですが、その中で
WinUsb_ControlTransferを使用している部分で時間がかかっています。
時間計測にはQueryPerformanceCounterを使用しました。
USBの知識が乏しいのでAPIを利用しているのですが、これぐらい時間がかかる物なんでしょうか?
以上、お願い致します。
コントロール転送ってそんなものだと思われる。
コントロール転送は setup + data(n) + status という3ステージ構成になっていて、
通常各ステージは別フレームに乗るものだから。
# USB 1frame=1msec なので 1msec*3frame = 3msec かかってもおかしくない。
速度が要求されるならコントロール転送は避けるべきで、そのためのバルク転送。
tetrapod さん回答ありがとうございます。
なるほどそうなんですね、
仕方ないのでバルク転送で開発してみようと思いますが、
WinUsb_ReadPipe function というのを使うとできる様です。
そこでまた質問なんですが、このWinUsb_ReadPipe functionの第二引数の
PipeIDが調べてもどのような情報を入れるのかいまいち分かりません。
どなたか教えて頂けますか?
リンク先の内容は正直追いかけてないけど
bulk と control はそもそもの目的が違うので
・本来 control 転送であるべき通信を bulk 転送で行うことは無理
・本来 bulk 転送であるべき通信を control 転送で行うことは無理
だから
> 仕方ないのでバルク転送で開発してみようと思いますが、
なんてことはそもそもありえない話。
なんだか前提条件からして間違っていたりしない?
その辺の整理をしないで質疑応答しても無駄なので、まずはそっちから。
ツイート | ![]() |