上位机MFC多线程串口通讯源代码
例程界面如上,
可以对串口参数设置后打开串口,
进行数据的收发。
关键代码可以参考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;
- }
复制代码 源代码下载地址:
上位机VC MFC程序开发精典实例大全源码与视频讲解配套下载408例 经历1年的编程与录制点击进入查看
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料! 
|