シリアルポートの通信内容によって処理を分岐したいと思っています。
void WaitResponse(char *str){
DWORD dwErrors;
COMSTAT ComStat;
char* rdBuf;
DWORD dwRead;
ClearCommError(hComm, &dwErrors, &ComStat);
ReadFile(hComm, str, ComStat.cbInQue, &dwRead, NULL);
return;
}
この関数を文字列の取得に用いていますが、どうやら受信前に通過してしまい文字列を正しく受け取れていないようです。入力バッファに文字が入った時点まで待つにはどうしたら良いでしょう?
ちなみに受信用のスレッドは用意していません。<=あまり複雑にしたくない。
SetCommMask( hComm, 0 );
dwMask = 0;
while(1){
WaitCommEvent( hComm, EV_RXCHAR, NULL );
if( dwMask & EV_RXCHAR ){
break;
}
}
とすると、無限ループに入ってしまったようで反応しなくなりました。イマイチ正しい使い方がわかりません。
したいことは、文字列受信完了まで待て。ただそれだけです。
何か良い方法はありませんでしょうか?