16,466
社区成员
发帖
与我相关
我的任务
分享
//监视线程实现函数
DWORD ThreadProc(LPVOID lpParameter)
{
OVERLAPPED OverLapped;
memset(&OverLapped,0,sizeof(OVERLAPPED));
DWORD dwEventMask=0;
CZhc618Dlg dlg;
while (dlg.m_bThreadFlag)
{
WaitCommEvent(dlg.hCom,&dwEventMask,&OverLapped);
if ((dwEventMask&EV_RXCHAR)==EV_RXCHAR)
{
COMSTAT Comstat;
DWORD dwBytesRead;
DWORD dwCommError;
unsigned char pData[1024];
memset(pData,0,1024);
ClearCommError(dlg.hCom,&dwCommError,&Comstat);
if (Comstat.cbInQue>0)
{
if (!(ReadFile(dlg.hCom,pData,Comstat.cbInQue,&dwBytesRead,&OverLapped)))
{
if (ERROR_IO_PENDING==GetLastError())
{
while(!GetOverlappedResult (dlg.hCom,&OverLapped,&dwBytesRead,TRUE))
{
if(ERROR_IO_INCOMPLETE==GetLastError())
continue;
}
}
}
//通知主线程进行数据处理...
}
}
}
return 0;
}
if (!abRet )
{
abContinue = FALSE;
break;
}
while(!GetOverlappedResult (dlg.hCom,&OverLapped,&dwBytesRead,TRUE))
{
if(ERROR_IO_INCOMPLETE==GetLastError())
continue;
}