全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
char lstr,hstr=stri;if(hstr= )i+;continue;i+;if(i=len)break;lstr=stri;hexdata=ConvertHexChar(hstr);lowhexdata=ConvertHexChar(lstr);if(hexdata=16)|(lowhexdata=16)break;elsehexdata=hexdata*16+lowhexdata;i+;senddatahexdatalen=(char)hexdata;hexdatalen+;senddata.SetSize(hexdatalen);return hexdatalen;char CModbusDlg:ConvertHexChar(char ch)if(ch=0)&(ch=A)&(ch=a)&(ch=f)return ch-a+10;else return (-1);然后接在(3)的后面写/发送数据 CString str=12 FA;CByteArray hexdata;int len=String2Hex(str,hexdata); /len用于计算发送了多少个十六进制数m_MSComm.SetOutput(COleVariant)hexdata); /发送十六进制数据Sleep(1000);(5)接收数据:在MFC的类向导中,为MSComm控件添加一个成员函数OnOnCommMscomm1(),然后编辑代码:void CModbusDlg:OnOnCommMscomm1()/ TODO: Add your control notification handler code here/接收数据VARIANT variant_inp; COleSafeArray safearray_inp; LONG len,k; BYTE rxdata2048; /设置BYTE数组CString strtemp,str; BYTE bt;int resEvent;resEvent=m_MSComm.GetCommEvent();if(resEvent=2)variant_inp=m_MSComm.GetInput(); /读缓冲区safearray_inp=variant_inp; /VARIANT型转为ColeSafeArray型len=safearray_inp.GetOneDimSize(); /得到有效数据长度for(k=0;klen;k+)safearray_inp.GetElement(&k,rxdata+k); /转为BYTE数组for(k=0;kAdd To Project-Components and Controls-Registered Activex Controls”,然后选择控件:Microsoft Communications Control,version 6.0插入到当前的工程中。这样就将类 CMSComm 的相关文件 mscomm.cpp 和 mscomm.h 一并加入到了工程中。再将控件对话中的 MSComm 控件拖至你的应用对话框中,用MFC类向导给其添加变量m_MSComm。(3)串口初始化:在CModbusDlg:OnInitDialog()函数中/ TODO: Add extra initialization hereif(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);/以二进制方式读写数据m_MSComm.SetRThreshold(1);/接收缓冲区有1个及1个以上字符时,将引发接收数据的OnComm事件m_MSComm.SetSettings(9600,n,8,1);/波特率9600,无校验位,8个数据位,1个停止位if(!m_MSComm.GetPortOpen()/如果串口没有打开则打开m_MSComm.SetPortOpen(TRUE);/打开串口elsem_MSComm.SetOutBufferCount(0);AfxMessageBox(Open The Serial Port 1 Failurre!);(4)发送数据:首先,在Modbus协议中,要求以十六进制发送数据,因此需要在ClassView中为CModbusDlg类添加以下两个PUBLIC成员函数,并编辑代码如下:int CModbusDlg:String2Hex(CString str, CByteArray &senddata)int hexdata,lowhexdata;int hexdatalen=0;int len=str.GetLength();senddata.SetSize(len/2);for(int i=0;ilen;)Modbus协议下的接收程序:void CModbusDlg:OnOnCommMscomm1()/ TODO: Add your control notification handler code hereVARIANT variant_inp;COleSafeArray safearray_inp;LONG len,k;BYTE rxdata2048; /设置BYTE数组CString strtemp,str;BYTE bt;char tempBuf200;if(m_MSComm.GetCommEvent()=2)/监听到串口有数据传来variant_inp=m_MSComm.GetInput(); /读缓冲区safearray_inp=variant_inp; /VARIANT型转为ColeSafeArray型len=safearray_inp.GetOneDimSize(); /得到有效数据长度for(k=0;klen;k+)safearray_inp.GetElement(&k,rxdata+k); /转为BYTE数组for(k=0;klen;k+) /将数组转为CString型变量bt=*(char*)(rxdata+k); /字节型strtemp.Format(%02X ,bt); /十六进制显示switch(recvNum)case 0: /接收第1个字节recvStr=strtemp;recvNum+;break;case 1:recvStr+=strtemp;recvNum+;break;case 2:sscanf(strtemp,%d,&recvDataLen);recvStr+=strtemp;recvNum+;break;default:recvStr+=strtemp;if(recvNum=recvDataLen+4)/已经接收完一帧数据MessageBox(recvStr);recvNum=0;recvStr=;elserecvNum+;break; / switch END / for循环END /if END函数中有几个全局变量:在.c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025浙江中通文博服务有限公司招录12345话务人员5人模拟试卷附答案
- 2025河北石家庄市行政审批综合服务中心选调事业单位人员3人备考题库附答案
- 2026年一级注册建筑师之建筑结构考试题库300道附参考答案(研优卷)
- 2026年一级建造师之一建矿业工程实务考试题库300道含完整答案(夺冠)
- 2026年一级建造师之一建矿业工程实务考试题库300道附参考答案(培优a卷)
- 2025浙江金华开发区国有企业工作人员招聘50人模拟试卷附答案
- 2026年中级注册安全工程师之安全实务化工安全考试题库300道及参考答案(轻巧夺冠)
- 2026年一级建造师之一建铁路工程实务考试题库300道含答案【巩固】
- 2025 年高职网络新闻与传播(网络新闻管理)试题及答案
- 2025江苏苏州市姑苏区人民武装部公益性岗位招聘2人(公共基础知识)测试题带答案解析
- 2025上海崇明区事务性辅助人员招聘7人笔试备考题库带答案解析
- 2026全国人大机关直属事业单位招聘50人笔试考试备考题库及答案解析
- 2026年烟花爆竹经营单位主要负责人证考试题库及答案
- 人文关怀视角下的舒缓护理:倾听的力量
- 2025年创新深水区:核药研发机遇与挑战-
- 2025年驾照考试科目一1500题及答案(六)
- 矿山隐蔽致灾因素普查规范课件
- 2025年《数据分析》知识考试题库及答案解析
- 政府打印费合同范本
- 老年人失智症怀旧疗法实施方案
- 大棚拆除安全协议书
评论
0/150
提交评论