工控编程吧
标题:
上位机MFC多线程串口通讯源代码
[打印本页]
作者:
qq263946146
时间:
2019-10-8 09:44
标题:
上位机MFC多线程串口通讯源代码
(, 下载次数: 0)
上传
点击文件名下载附件
例程界面如上,
可以对串口参数设置后打开串口,
进行数据的收发。
关键代码可以参考CCMSCOM集成类的线程函数:
// -----------工作者线程,负责监视串行口---------------
UINT CommProc(LPVOID pParam)//222
{
OVERLAPPED os;
DWORD dwMask, dwTrans;
COMSTAT ComStat;
DWORD dwErrorFlags;
CCMscom *pDoc=(CCMscom*)pParam;
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(pDoc->m_bConnected)
{
ClearCommError(pDoc->m_hCom,&dwErrorFlags,&ComStat);
if(ComStat.cbInQue)
{
// 无限等待WM_COMMNOTIFY消息被处理完
WaitForSingleObject(pDoc->m_hPostMsgEvent, INFINITE);
ResetEvent(pDoc->m_hPostMsgEvent);
// 通知视图
// PostMessage(pDoc->m_hTermWnd, WM_COMMNOTIFY, EV_RXCHAR, 0);
continue;
}
dwMask=0;
if(!WaitCommEvent(pDoc->m_hCom, &dwMask, &os)) // 重叠操作
{
if(GetLastError()==ERROR_IO_PENDING)
{ // ---------------------------------无限等待重叠操作结果
GetOverlappedResult(pDoc->m_hCom, &os, &dwTrans, TRUE);
}
else
{
CloseHandle(os.hEvent);
return (UINT)-1;
}
}
AfxMessageBox("122");
}
CloseHandle(os.hEvent);
return 0;
}
复制代码
源代码下载地址:
(, 下载次数: 2)
上传
点击文件名下载附件
[halcon]1[/halcon]
[MFC408]1[/MFC408]
[weixinlianxi]1[/weixinlianxi]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4