Boost AsioでSerialのレスポンスが妙に遅い(その上それがばらつく)とき。
例えば、ループバックで1バイト送って帰ってくるのに、16ms〜70msとかかかるとき。
特に、再起動直後重かったりする場合。
大抵、Readに時間がかかっています。
そして、Windows APIで直接COMポートを叩いたり、Boost Asioを使う場合でも
固定長のデータをやり取りする場合は早かったりします。
解決方法
1.読み込み時のバッファ変数を小さくする
2.transfer_at_leastを使わないでReadする。
これだけで、応答が1ms以下になったりしますが、これでも解決しない場合。
USBシリアル変換器を使っていませんか?
その場合は、デバイスマネージャの当該機器の詳細設定の「レイテンシタイマー」を
適切な値(環境によりますが、1ms〜6msの間くらい)で設定してあげると、早くなります。
2016年01月18日
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/181155320
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック
http://blog.sakura.ne.jp/tb/181155320
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック