2,640
社区成员
发帖
与我相关
我的任务
分享
UINT CommProc(LPVOID pParam)
{
OVERLAPPED os;
DWORD dwMask, dwTrans;
memset(&os, 0, sizeof(OVERLAPPED));
os.hEvent=CreateEvent(NULL, TRUE, FALSE, NULL);
if(os.hEvent==NULL)
{
AfxMessageBox("Can't create event object!");
return (UINT)-1;
}
while(m_bConnected)
{
dwMask=0;
if(WaitCommEvent(m_hCom, &dwMask, &os)) // 重叠操作
{
if(GetLastError()==ERROR_IO_PENDING)
// 无限等待重叠操作结果
GetOverlappedResult(m_hCom, &os, &dwTrans, TRUE);
else
{
CloseHandle(os.hEvent);
return (UINT)-1;
}
}
else
{
if (dwMask&EV_RXCHAR){
WaitForSingleObject(m_hPostMsgEvent, INFINITE);
/* 收到字符,可以通过PostMessage等方法通知主程序*/
在这里添加代码
}
if (dwMask&EV_TXEMPTY) {
WaitForSingleObject(m_hPostMsgEvent, INFINITE);
/* 发送字符完毕*/
在这里添加代码
}
}
}
CloseHandle(os.hEvent);
return 0;
}