スレッドを用いた、シリアル通信をしようと思っています。
COMポートは正常にオープンでき、そのハンドルを使ってWriteFileを実行しているのですが、最初だけ、何故か時間が数分かかって送信されます。
それ以降、WriteFileは問題ないようです。
他のスレッドでも、別COMポートに対してWriteFileしていましたが、それはコメントアウトしています。
スレッドをひとつにしての送受信は、全く問題ありません。
スレッド関連のようにも思うのですが、どのあたりを調べればよいでしょうか。
WriteFileはオーバーラップは使用していません。
調べ方がありましたら教えてください。
WIN NT4.0 VC++6.0です。
全く同じ現象では無いのですが、スレッドでRS-232Cの通信プログラムを書いていた時、スレッドを終了させようとして反応が遅くなってうまくゆかないと言う経験があります。
その時は、以下のようにすることでスグに反応が帰ってくるようになりました。
MSG msg;
while (THREADID1(npCommInfo) != 0) {
if (::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
}
今回の問題に直接お役になてないかも知れませんが、ひょっとしてヒントになるかも知れないと思って、コメントしてみました。
ツイート | ![]() |