WaitCommEvent時のCPU使用率

[戻る]
DT 2006/03/08(水) 13:50:44
こんにちは。

現在、シリアル通信制御で非同期処理によるデータ送受信をしています。
実際にCOMポートからデータを受信する際にReadFile関数を使用しているのですが、その
処理に入る前にWaitCommEvent関数を使ってComポートにデータが来たかどうかを監視する
ようにしています。

現状、ステップ実行でWaitCommEventの処理を通るとCPU使用率が100%になり、ポートに対
してデータが入ると処理から抜け、CPUも落ち着いているのですが、WaitCommEvent処理時
にCPU使用率が100%になるのは仕方ないのでしょうか?

ご教授よろしくお願いします。

ITO 2006/03/08(水) 22:48:30
非同期通信しているんですよね。
1.「OVERLAPPED」構造体の設定で「HEVENT」 のハンドルを設定していますか?
2.ステータスが「ERROR_IO_PENDING」だと無限に待つような構造になっていませんか?
3.OSがWindows2000かWindowsXPじゃないとうまくいかない場合があります。
4.「WaitForSingleObject]で待つようにしていますよね。
  OVERLAPPEDで設定した「HEVENT」を使います。
5.繰返しループで待つ場合は、Sleep(1)(約10mS)ウエイトを入れたほうがいいです。

古いスレッドには追加発言できません。