In message: <[EMAIL PROTECTED]>
            [EMAIL PROTECTED] (Kouichi Hirabayashi) writes:
> 
> 6. 他に気になる点、注意点について。
> 
> このデバイスは、IN と OUT の2つの端点があって、IN をコマンドの応答、
> OUT をコマンドの送出に使う設計と思われます。コマンド、データのいずれ
> も、CR をデリミタとする ASCII 文字列で、基本的には、「デジタルフォー
> スゲージ取扱説明書」に記載された、RS232 の「コマンド表」と同じと思わ
> れますが、出力データがないか、間に合わない時は、"Dummy\r" の文字列を
> 常時多量に連続出力するという悪い設計で、単発データはコマンド送出の後、
> 適当な遅延を入れて "Dummy\r" を読み捨てれば、何とかなりますが、多量の
> 連続データを取得する場合は、ugen(4) ドライバにバッファリング機能を追
> 加しないと、データの脱落が起きます。Solaris の ugen にはバッファリン
> グの機能があるようですが、このようなケースにも対応できるようにするに
> は、NetBSD/FreeBSD でも、ugen にもバッファリング機能を追加すべきでは
> ないかと思います。

ふと思ったのですがこれがバルク転送ならバッファは ugen.c に
UGEN_BBSIZE として 1024 バイトは用意されているので
USB_SET_SHORT_XFER にして USB_SET_TIMEOUT を適宜設定して
UGEN_BBSIZE サイズで read(2) をフル回転(*1)させれば取りこぼ
すこともなさそうに感じました.

仮にそうだとしても read(2) するたび Dummy\r で埋め尽くされそ
うなのでこれを出さなくなってくれると助かるのかなと思いました.

そんなに甘くない or ぜんぜん間違っていたらごめんなさい.

(*1) バルク転送の場合 poll/select は意味なさそうなので.

齊藤@湖西市

メールによる返信