. 

3.高精度時間計測 ( Accurate Interval Timer )
 

 連続発生させたパルスをゲートが開いた時間だけカウントできれば、その時間を計測することができます。キャラクタコード 0x55 を連続送出し ておき、受信した 0x55 の数 X 5 + 末尾コード相当分(1〜4)でカウント値が得られます。これとボーレートからゲート時間が得られます。
 

 Windows NT 以降は OSのタスク切り替えによって、 clock() などによる計時では十分な精度が得にくくなっています。特別なハードウェアなしで計測できますので、ぜひ試してください。
 シリアル送受信では、オーバーラッピングの動作やマルチスレッド下での応答が、Win 98/Me と NT/2000 ではかなり違うようです。サンプルではそれぞれ別のコーディングをしていますので、双方をみて改良してください。送信パルス列が途切れる場合は、送出 処理を輻輳させるなど工夫してください。また、チャッタリングが多い場合は、受信パルス列の前後を適宜処理してください。
 ボーレートを高くすればより高精度の計測が可能ですが、パソコンで生成されるボーレートは必ずしも正確でないので、あらかじめ正確な時計、周波数カウンタなどで校正しておいたほうがよいでしょう。