zufluk
zufluk

Reputation: 63

WaitCommEvent Hangs

I am using non overlapped WaitCommEvent to read the file data. I would like to provide a piece of code as follows...

SetCommMask (io_ptr->comPortHandles->hComPort, EV_RXCHAR|EV_TXEMPTY);
WaitCommEvent (io_ptr->comPortHandles->hComPort, &dwMask, 0);

if (dwMask &= EV_RXCHAR) {
  // Loop getting data.

  // Need to loop because our buffer is only 1024 bytes
  while (TRUE)
  {
    ClearCommError( io_ptr->comPortHandles->hComPort, &dwError, &comstat);

    if (!comstat.cbInQue) continue;
    else 
    {
      if(comstat.cbInQue > 0)
        ReceiveInterrupt(io_ptr, comstat);
    }
    // Loop around and check for more data
    // In case additional byte has arrived while reading.
  }
}

Upvotes: 1

Views: 3464

Answers (1)

bkausbk
bkausbk

Reputation: 2790

WaitCommEvent is blocking if the file handle was not open with overlapped flag.In you case it will wait until either a char received or last char has been sent.

MSDN about WaitCommEvent:

If hFile was not opened with FILE_FLAG_OVERLAPPED, WaitCommEvent does not return until one of the specified events or an error occurs.

Upvotes: 2

Related Questions