SerialPort,该怎么处理
SerialPort
我模仿串口助手将里面的OnCommunication函数放到我的程序里面,我点击按钮发送一个16进制数之后,我的显示在一直接受数据
比如我发送02 之后在串口助手接收到的是00 0A,但是我的程序里面会接受到00 0A,之后会一直接受OA OA OA OA,请求援助,谢谢大家!
------解决方案--------------------
PurgeComm(hCom,PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
接收完数据要清空缓冲区
------解决方案--------------------
楼主给的代码看不出什么问题。
我模仿串口助手将里面的OnCommunication函数放到我的程序里面,我点击按钮发送一个16进制数之后,我的显示在一直接受数据
- C/C++ code
DDX_Text(pDX,IDC_EDIT1,m_ReceiveData); DDX_Control(pDX,IDC_EDIT1,m_ctrlReceiveData); LONG CComTestDlg::OnCommunication(WPARAM ch, LPARAM port) { if (port <= 0 || port > 4) return -1; //如果选择了"十六进制显示",则显示十六进制值 CString str; str.Format("%02X ",ch); int nLen=m_ctrlReceiveData.GetWindowTextLength(); m_ctrlReceiveData.SetSel(nLen, nLen); m_ctrlReceiveData.ReplaceSel(str); nLen+=str.GetLength(); m_ReceiveData+=str; return 0; } void CComTestDlg::OnButton2() { // TODO: Add your control notification handler code here if(m_Port.m_hComm==NULL) { AfxMessageBox("串口没有打开,请打开串口"); return; } else { char data[2]; CString m_strSendData="02"; int len=Str2Hex(m_strSendData,data); m_Port.WriteToPort(data,len); } }
比如我发送02 之后在串口助手接收到的是00 0A,但是我的程序里面会接受到00 0A,之后会一直接受OA OA OA OA,请求援助,谢谢大家!
------解决方案--------------------
PurgeComm(hCom,PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
接收完数据要清空缓冲区
------解决方案--------------------
楼主给的代码看不出什么问题。