|
RS-232 통신 프로그램을 짜던중에 의문사항이 생겼습니다.
우선 대략적인 루틴을 말하자면 포트를 열때는 Overlapped로 열었고
Thread내에서 WaitCommEvent()를 사용하여 RXCHAR 이벤트를 기다립니다.
//---------------------------------------------------
WaitCommEvent(hComm, &dwEventMask, &os);
... 생략
GetOverlappedResult(hComm, &os, &dwNumber, TRUE);
//---------------------------------------------------
대충 이런식으로 짰는데 Windows2000이나 XP의 경우에 RX Event가 발생안해도
Event가 발생했다고 알려주는 경우가 생깁니다.
ClearCommError()를 이용하여 cbInque값을 조사하여 보면 버퍼사이즈는 0으로 나옵니다.
이럴경우 Read 행정으로 넘어가지 않고 그냥 건너띄도록해서 일단 정상적으로 작동은
가능하도록 해 놓았는데, 왜 이런 현상이 일어나는지가 궁금합니다.
아무리 찾아봐도 원인을 알수가 없네요.. 아시는분은 꼭좀 알려주세요~
|