利用vc中的通讯控件开发串形通信程序

利用vc中的通讯控件开发串形通信程序

ID:24688186

大小:57.50 KB

页数:6页

时间:2018-11-11

利用vc中的通讯控件开发串形通信程序_第1页
利用vc中的通讯控件开发串形通信程序_第2页
利用vc中的通讯控件开发串形通信程序_第3页
利用vc中的通讯控件开发串形通信程序_第4页
利用vc中的通讯控件开发串形通信程序_第5页
资源描述:

《利用vc中的通讯控件开发串形通信程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、利用VC中的通讯控件开发串形通信程序由于需要我们开发了前置机应用程序,实现功能就是将前置机里存放的信息取出来用计算机进行处理,该程序是利用VC在icrosoft5.0,利用Apptest,其中第二步选择ActiveXControl选项,证明支持控件功能,其他都选择缺省,这样就建立了一个基于对话框的应用程序。然后将通讯控件加入应用之中,在对话框资源上点击鼠标右键,选择InsertActiveXControl然后在控件选择对话框中选择MicrosoftmunictionsControl,Version5.0,然后选择Insert插入一个类似电话机的控件,然后点击该控件就可以修改

2、和设置控件特性。按AddtoProject选项中RegisteredActiveXControl选项然后在控件选择对话框中选择MicrosoftmunictionsControl,Version5.0,将通讯控件两个程序Msm.h和Msm.cpp加入project当中。这样就把通讯控件加入了应用程序当中,可以应用该控件进行编程了。2.通讯控件的各属性的含义:事件,0表示不产生事件,1表示每接收一个字符就产生一个事件SThreshold0设定在触发Onm事件前发送缓冲区内所允许的最少字符数,0表示发数据时不产生事件,1表示当发送缓冲区空时产生Onm事件通讯控件的属性很多,这里

3、只是介绍其中的几种,可以根据自己的需求选择加以设置调整,对于其他属性可以查看VC帮助和联机手册。通讯控件的工作原理类似于中禵cf方式,当有通讯事件发生时(如发送数据、接收数据等),就会触发Onm事件,在该事件的处理函数中调用GetmEvent()函数,通过返回值即可确定是那类事件,再作出相应的处理。3.VC通讯控件的数据类型和命令对通讯控件来说,其所有的数綺dd类型和命令都在两个控件文件msm.h和msm.cpp两个文件当中,msm.h定义了控件类和各条命令的函数及所用的各参数,msm.cpp文件中有各命令函数的描述。4.主程序的编制在对话框中增加下面几个按钮:发送数据编辑

4、框发送数据按钮;接收数据编辑框清除数据按钮;通讯按钮;首先我们为对话框中的控件添加对应的变量和响应函数a3具体做法如下表所示。_SendDate发送按钮IDC_SENDOnSend()清除按钮IDC_CLEAROnClear()接收数据编辑框IDC_RECEiVEDATEm_RecEIveData通讯控件IDC_MSMm_m再打开ClassSM,可看到该控件能响应的消息为Onm,添加改函数并将其改名为Onm(),在该函数中添加代码,就能实现对串口事件的处理。其中一个需要注意的问题是函数GetInput()返回的是VARIANT型变量,而在编辑框中显示的是Cstring型变

5、量,因此必须进行转换。先将VARIANT型变量转换为ColeSafeArray型变量,再将其转换为BYTE型数组,然后将数组转换为Cstring型变量。这个转换过程看起来比较复杂,但它可以满足用不同的变量类型来显示接收数据。该程序的主要代码添加在mTestDlg.cpp中,如下所示:voidCmTestDlg::OnSend(){it(!m_m.GetPortOpen())m_m.SetPortOpen(TRUE);//打开串口UpdateData(TRUE);m_m.SetOutput(ColeVariant(m_SendData));//发送数据}voidCmTestD

6、lg::OnClear(){m_RecEiveData.Empty();//清除接收对话框中的数据m_SendData.Empty();//清除发送对话框中的数据UpdataData(FALSE);}voidCmTestDig::Onm(){VARIANTm_input1;ColeSafeArraym_input2;Longlength,i;BYTEdata[1024];Cstringstr;if(m_m.GetmEvent()==2)//接收缓冲区内有字符{m_input1=m_m.Getinput();//读取缓冲区内的数据m_input2=m_input1;//将VA

7、RIANT型变量譥aa换为ColeSafeArray型变量length=m_input2.GetOneDimSize();//确定数据长度for(i=0;im_input2.GetElement(i,data+i);//将数据转换为BYTE型数组for(i=0;i{chara=*(char*)(data+i);str.Format(“%c”,a);m_RecEIveData+=str;}}UpdataData(FALSE);//更新编辑框内容}5.试验程序现在程序已经写完,可以编辑訽cb行。我们可以做一个小实验来验

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。