Such code work
Such code sometimes don't work:Code:DWORD dwRead = 0; while (!dwRead) { ClearCommError(h, &Err, &ComStat); dwRead = ComStat.cbInQue; Sleep(10); } DWORD dwRead2=0; while (dwRead != dwRead2) { dwRead2 = dwRead; ClearCommError(h, &Err, &ComStat); dwRead = ComStat.cbInQue; Sleep(10); } hb->b = true; return;
And is it correctly to use first snippet?Code:WaitCommEvent(h, &Mask, ReadOL); DWORD Signaled = WaitForSingleObject(ReadOL->hEvent, INFINITE); if (Signaled == WAIT_OBJECT_0) { DWORD BytesTrans; if (GetOverlappedResult(h, ReadOL, &BytesTrans, false)) { if (Mask & EV_RXCHAR) { hb->ReadOL = ReadOL; hb->b = true; ReadFile(hComPort, buff_read, min(dwRead, 256), &tmpBytesRead, ReadOL)// Or // NULL also don't work // correctly... CloseHandle(ReadOL->hEvent); } } }




Reply With Quote