欢迎来到天天文库
浏览记录
ID:39548688
大小:28.00 KB
页数:3页
时间:2019-07-06
《串口通信笔记》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、MSComm控件接收数据并存储准备显示:接收数据->转换类型->判断长度->转换成数组->数组转换成字符型->送入临时变量->显示MSComm控件消息处理函数:voidCSDICommView::OnComm(){//TODO:AddyourcontrolnotificationhandlercodehereVARIANTvariant_inp;COleSafeArraysafearray_inp;LONGlen,k;BYTErxdata[2048];//设置BYTE数组CStringstrtemp;CStringstr
2、Disp;//用于显示接收数据if(m_MSComm.GetCommEvent()==2)//启动{variant_inp=m_MSComm.GetInput();//读缓冲区safearray_inp=variant_inp;//VARIANT型变量转换为ColeSafeArray型变量len=safearray_inp.GetOneDimSize();//得到有效数据长度for(k=0;k3、0;kTextOut(200,100,"COM2接收到:"+strDisp);//显示接收到的数据ReleaseDC(pDC);strtemp.Format("OK,'%s'Received",st4、rDisp);m_MSComm.SetOutput(COleVariant(strtemp));//发送数据}}CSerialPort类消息处理函数:LONGCSerialPortTest2View::OnComm(WPARAMch,LPARAMport){if(port==2)//COM2接收到数据{switch(ch){case'$'://开始m_strRXDataCOM2=(char)ch;break;//跳出此次循环,继续进行判断case'*'://结束{m_strRXDataCOM2+=(char)ch;CDC5、*pDC=GetDC();//准备数据显示pDC->TextOut(10,150,"COM2接收到"+m_strRXDataCOM2);//显示数据ReleaseDC(pDC);m_strRXDataCOM2.Replace('$','Y');//COM2发送应答信息m_SerialPort[1].WriteToPort((LPCTSTR)m_strRXDataCOM2);}break;default:m_strRXDataCOM2+=(char)ch;break;}}return0;}MSComm控件初始化串口OnIn6、itDialog()(部分)步骤:选择->设置->打开->清除///////////////////初始化COM2///////////////////m_ctrlMSCommCOM2.SetCommPort(2);//选择COM2m_ctrlMSCommCOM2.SetInputMode(1);//输入方式为二进制方式m_ctrlMSCommCOM2.SetInBufferSize(1024);//设置输入缓冲区大小m_ctrlMSCommCOM2.SetOutBufferSize(512);//设置输出缓冲区大小//7、波特率9600,无校验,8个数据位,1个停止位m_ctrlMSCommCOM2.SetSettings("9600,n,8,1");//参数1表示每当串口接收缓冲区中有多于//或等于1个字符时将引发一个接收数据的OnComm事件m_ctrlMSCommCOM2.SetRThreshold(1);if(!m_ctrlMSCommCOM2.GetPortOpen())m_ctrlMSCommCOM2.SetPortOpen(TRUE);//打开串口m_ctrlMSCommCOM2.SetInputLen(0);//设置当前接8、收区数据长度为0m_ctrlMSCommCOM2.GetInput();//先预读缓冲区以清除残留数据CSerialPort类基于对话框的应用程序打开串口:(含初始化串口)voidCSerialPortTestDlg::OnButtonOpen(){intnPort=m_ctrlComboComPort.GetCur
3、0;kTextOut(200,100,"COM2接收到:"+strDisp);//显示接收到的数据ReleaseDC(pDC);strtemp.Format("OK,'%s'Received",st
4、rDisp);m_MSComm.SetOutput(COleVariant(strtemp));//发送数据}}CSerialPort类消息处理函数:LONGCSerialPortTest2View::OnComm(WPARAMch,LPARAMport){if(port==2)//COM2接收到数据{switch(ch){case'$'://开始m_strRXDataCOM2=(char)ch;break;//跳出此次循环,继续进行判断case'*'://结束{m_strRXDataCOM2+=(char)ch;CDC
5、*pDC=GetDC();//准备数据显示pDC->TextOut(10,150,"COM2接收到"+m_strRXDataCOM2);//显示数据ReleaseDC(pDC);m_strRXDataCOM2.Replace('$','Y');//COM2发送应答信息m_SerialPort[1].WriteToPort((LPCTSTR)m_strRXDataCOM2);}break;default:m_strRXDataCOM2+=(char)ch;break;}}return0;}MSComm控件初始化串口OnIn
6、itDialog()(部分)步骤:选择->设置->打开->清除///////////////////初始化COM2///////////////////m_ctrlMSCommCOM2.SetCommPort(2);//选择COM2m_ctrlMSCommCOM2.SetInputMode(1);//输入方式为二进制方式m_ctrlMSCommCOM2.SetInBufferSize(1024);//设置输入缓冲区大小m_ctrlMSCommCOM2.SetOutBufferSize(512);//设置输出缓冲区大小//
7、波特率9600,无校验,8个数据位,1个停止位m_ctrlMSCommCOM2.SetSettings("9600,n,8,1");//参数1表示每当串口接收缓冲区中有多于//或等于1个字符时将引发一个接收数据的OnComm事件m_ctrlMSCommCOM2.SetRThreshold(1);if(!m_ctrlMSCommCOM2.GetPortOpen())m_ctrlMSCommCOM2.SetPortOpen(TRUE);//打开串口m_ctrlMSCommCOM2.SetInputLen(0);//设置当前接
8、收区数据长度为0m_ctrlMSCommCOM2.GetInput();//先预读缓冲区以清除残留数据CSerialPort类基于对话框的应用程序打开串口:(含初始化串口)voidCSerialPortTestDlg::OnButtonOpen(){intnPort=m_ctrlComboComPort.GetCur
此文档下载收益归作者所有