串口接收
DWORD CCommomDlg::ComReceiveProc(LPVOID lpParameter)
HWND hwnd=((RECPARAM *)lpParameter)->hwnd;
CCommomDlg * pDlg=((RECPARAM *)lpParameter)->pDlg;
HANDLE hCom = pDlg->hCom;
OVERLAPPED m_osRead;
memset(&m_osRead,0,sizeof(OVERLAPPED));
m_osRead.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);
COMSTAT ComStat; DWORD dwErrorFlags;
char str[100];
memset(str,'\0',100);
DWORD dwBytesRead=100;
BOOL bReadStat;
ClearCommError(hCom,&dwErrorFlags,&ComStat);
dwBytesRead=min(dwBytesRead,(DWORD)ComStat.cbInQue);
bReadStat=ReadFile(hCom,str,dwBytesRead,&dwBytesRead,&m_osRead);
if(!bReadStat)
{ if(GetLastError()==ERROR_IO_PENDING)
{WaitForSingleObject(m_osRead.hEvent,INFINITE);//*申请无名事件
}
}
上面是我的串口监视的线程函数。hCom是通过this对象传递过来的,是正确的,不知道为什么就
是接收不到数据,串口参数设置没有问题,可以发送数据。
bReadStat这个参数总是有效。一直为真。所以一直进步了if语句。