发布网友 发布时间:2022-04-24 13:25
共1个回答
热心网友 时间:2023-10-14 09:05
2. 配置好串口后恢复线程运行 m_pThread->ResumeThread(); //
3. 在 CommProc 中监听事件
C/C++ code 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 { [color=#FF0000]if (dwMask&EV_RXCHAR){ WaitForSingleObject(m_hPostMsgEvent, INFINITE); /* 收到字符,可以通过PostMessage等方法通知主程序*/ 在这里添加代码 }[/color] if (dwMask&EV_TXEMPTY) { WaitForSingleObject(m_hPostMsgEvent, INFINITE); /* 发送字符完毕*/ 在这里添加代码 } } } CloseHandle(os.hEvent); return 0; }
------解决方案--------------------------------------------------------用微软串口控件MSCOMM32.OCX,添加之窗体加入窗体,双击打开接收响应函数在窗体初始化部分将串口打开就可以了。