欢迎来到天天文库
浏览记录
ID:37848772
大小:124.50 KB
页数:5页
时间:2019-06-01
《Modbus串口编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、{charlstr,hstr=str[i];if(hstr==''){i++;continue;}i++;if(i>=len)break;lstr=str[i];hexdata=ConvertHexChar(hstr);lowhexdata=ConvertHexChar(lstr);if((hexdata==16)
2、
3、(lowhexdata==16))break;elsehexdata=hexdata*16+lowhexdata;i++;senddata[hexdatalen]=(char)hexdata;hexdatalen++;}senddata.
4、SetSize(hexdatalen);returnhexdatalen;}charCModbusDlg::ConvertHexChar(charch){if((ch>='0')&&(ch<='9'))returnch-0x30;elseif((ch>='A')&&(ch<='F'))returnch-'A'+10;elseif((ch>='a')&&(ch<='f'))returnch-'a'+10;elsereturn(-1);}然后接在(3)的后面写——//发送数据CStringstr="12FA";CByteArrayhexdata;intle
5、n=String2Hex(str,hexdata);//len用于计算发送了多少个十六进制数m_MSComm.SetOutput((COleVariant)hexdata);//发送十六进制数据Sleep(1000);(5)接收数据:在MFC的类向导中,为MSComm控件添加一个成员函数OnOnCommMscomm1(),然后编辑代码:voidCModbusDlg::OnOnCommMscomm1(){//TODO:Addyourcontrolnotificationhandlercodehere//接收数据VARIANTvariant_inp;COl
6、eSafeArraysafearray_inp;LONGlen,k;BYTErxdata[2048];//设置BYTE数组CStringstrtemp,str;BYTEbt;intresEvent;resEvent=m_MSComm.GetCommEvent();if(resEvent==2){variant_inp=m_MSComm.GetInput();//读缓冲区safearray_inp=variant_inp;//VARIANT型转为ColeSafeArray型len=safearray_inp.GetOneDimSize();//得到有效数
7、据长度for(k=0;k8、Comm控件打开“Project->AddToProject->ComponentsandControls->RegisteredActivexControls”,然后选择控件:MicrosoftCommunicationsControl,version6.0插入到当前的工程中。这样就将类CMSComm的相关文件mscomm.cpp和mscomm.h一并加入到了工程中。再将控件对话中的MSComm控件拖至你的应用对话框中,用MFC类向导给其添加变量m_MSComm。(3)串口初始化:在CModbusDlg::OnInitDialog()函数中//TOD9、O:Addextrainitializationhereif(m_MSComm.GetPortOpen())//如果串口是打开的,则先关闭串口{m_MSComm.SetPortOpen(FALSE);}m_MSComm.SetCommPort(4);//选择COM4m_MSComm.SetInBufferSize(1024);//接收缓冲区m_MSComm.SetOutBufferSize(1024);//发送缓冲区m_MSComm.SetInputLen(0);//设置当前接收区长度为0,表示全部读取m_MSComm.SetInputMode(1);10、//以二进制方式读写数据m_MSComm.SetRThreshold(1);//接收缓冲区有1
8、Comm控件打开“Project->AddToProject->ComponentsandControls->RegisteredActivexControls”,然后选择控件:MicrosoftCommunicationsControl,version6.0插入到当前的工程中。这样就将类CMSComm的相关文件mscomm.cpp和mscomm.h一并加入到了工程中。再将控件对话中的MSComm控件拖至你的应用对话框中,用MFC类向导给其添加变量m_MSComm。(3)串口初始化:在CModbusDlg::OnInitDialog()函数中//TOD
9、O:Addextrainitializationhereif(m_MSComm.GetPortOpen())//如果串口是打开的,则先关闭串口{m_MSComm.SetPortOpen(FALSE);}m_MSComm.SetCommPort(4);//选择COM4m_MSComm.SetInBufferSize(1024);//接收缓冲区m_MSComm.SetOutBufferSize(1024);//发送缓冲区m_MSComm.SetInputLen(0);//设置当前接收区长度为0,表示全部读取m_MSComm.SetInputMode(1);
10、//以二进制方式读写数据m_MSComm.SetRThreshold(1);//接收缓冲区有1
此文档下载收益归作者所有