2016年01月18日

Boost AsioでSerialのレスポンスが妙に遅い(その上それがばらつく)とき

Boost AsioでSerialのレスポンスが妙に遅い(その上それがばらつく)とき。
例えば、ループバックで1バイト送って帰ってくるのに、16ms〜70msとかかかるとき。
特に、再起動直後重かったりする場合。

大抵、Readに時間がかかっています。
そして、Windows APIで直接COMポートを叩いたり、Boost Asioを使う場合でも
固定長のデータをやり取りする場合は早かったりします。

解決方法
1.読み込み時のバッファ変数を小さくする
2.transfer_at_leastを使わないでReadする。

これだけで、応答が1ms以下になったりしますが、これでも解決しない場合。

USBシリアル変換器を使っていませんか?
その場合は、デバイスマネージャの当該機器の詳細設定の「レイテンシタイマー」を
適切な値(環境によりますが、1ms〜6msの間くらい)で設定してあげると、早くなります。
posted by gpsnmeajp at 21:43| Comment(0) | TrackBack(0) | 未分類
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/181155320
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック