>VC++6.0では、文字抜けは無いとのことですが、通信速度はいくらだったで
>しょうか?
はっきり記憶にあるのは19200bps,100ms間隔で数10バイト受信です。
受信スレッドを起動した場合38400までは実験したように記憶があります。
115200bpsならCOMタイムアウトの設定もそれなりの値を設定してやる
必要が有るかと思います。
//------------- タイムアウト値設定 100ms 間隔
::GetCommTimeouts(hSerialPort, &CommTimeouts);
// 受信文字間タイムアウト[ms]
CommTimeouts.ReadIntervalTimeout= 20;大きすぎ以下同じ
// 受信文字数比例タイムアウト [ms] * 文字数
CommTimeouts.ReadTotalTimeoutMultiplier= 5;
// 受信基底タイムアウト値
CommTimeouts.ReadTotalTimeoutConstant= 20;
// 送信文字数比例タイムアウト値[ms] * 文字数
CommTimeouts.WriteTotalTimeoutMultiplier= 2;
// 送信基底タイムアウト値[ms]
CommTimeouts.WriteTotalTimeoutConstant= 50;大きすぎ
::SetCommTimeouts(hSerialPort, &CommTimeouts);
後、115200bps,1ms間隔,12バイトだと1msを超えるので、
10ms間隔ぐらいでないとうまくいかないと思います。
それか送受信フロー制御で送信側を待たせるかです。
投稿日時 - 2009-10-26 15:13:27