如何实现串口自动接收数据!!!!!!
MFC
问题:MCU在进行数据监测,发现数值变化后,就通过串口发送新的数据给PC软件,并显示在对话框。
请问PC方的软件如何判断,MCU已经发给自己数据了?如何接收这些数据?
多多指教!!!!
[解决办法]
1. 先创建线程 m_pThread=AfxBeginThread(CommProc, this, THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED, NULL); // 创建并挂起线程
2. 配置好串口后恢复线程运行 m_pThread->ResumeThread(); //
3. 在 CommProc 中监听事件
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,添加之窗体加入窗体,双击打开接收响应函数在窗体初始化部分将串口打开就可以了。