0

できればWindows 7で、シリアルポートで文字イベント間の時間を測定する必要があります。さまざまな場所で、「 Windowsは10msよりも大きな解像度を提供しません
」などのステートメントを読みましたが、それが何であるかを見つけることができませんでした本当に意味します。 OSがより正確にイベントを配信しないという問題ですか、それとも(測定用の)タイミング機能がそれほど「貧弱」だったということですか?(私はGetTickCountを考えています)

後者の場合、十分な測定のために QueryPerformanceCounter のようなものを使用できるはずですが、イベントが同様の精度で配信されない場合、それは明らかに役に立ちません。

4

2 に答える 2

1

10ミリ秒の時間は、タスクの切り替えによるものだと思います。タイミング アプリケーションが実行中の唯一のユーザー タスクである場合でも、切り替えられる可能性のあるシステム タスクが多数存在します。

その上、ポートで文字を受信して​​からイベント (または必要なソフトウェア通知) を受信するまでの時間DataReceived非常に変動すると思います。UART チップは、CPU がそのように感じるまで (通常は FIFO がいっぱいになるか、何らかのタイムアウトが発生するまで) CPU に割り込まないことがあります。その後、カーネルは、その割り込み情報をアプリケーションに送信する前に、しばらく時間がかかると判断する場合があります。そのため、ソフトウェアで高解像度のタイマーを使用できたとしても、おそらくハードウェア/カーネル レベルの可変性に翻弄されることになるでしょう。

于 2010-03-02T16:29:27.930 に答える