通知
すべてクリア
Topic starter
2006年3月8日 1:50 PM
こんにちは。
現在、シリアル通信制御で非同期処理によるデータ送受信をしています。
実際にCOMポートからデータを受信する際にReadFile関数を使用しているのですが、その
処理に入る前にWaitCommEvent関数を使ってComポートにデータが来たかどうかを監視する
ようにしています。
現状、ステップ実行でWaitCommEventの処理を通るとCPU使用率が100%になり、ポートに対
してデータが入ると処理から抜け、CPUも落ち着いているのですが、WaitCommEvent処理時
にCPU使用率が100%になるのは仕方ないのでしょうか?
ご教授よろしくお願いします。
2006年3月8日 10:48 PM
非同期通信しているんですよね。
1.「OVERLAPPED」構造体の設定で「HEVENT」 のハンドルを設定していますか?
2.ステータスが「ERROR_IO_PENDING」だと無限に待つような構造になっていませんか?
3.OSがWindows2000かWindowsXPじゃないとうまくいかない場合があります。
4.「WaitForSingleObject]で待つようにしていますよね。
OVERLAPPEDで設定した「HEVENT」を使います。
5.繰返しループで待つ場合は、Sleep(1)(約10mS)ウエイトを入れたほうがいいです。