MSComm控件实现串口通信的方法

上传人:豆浆 文档编号:11122547 上传时间:2017-10-12 格式:DOC 页数:5 大小:113KB
返回 下载 相关 举报
MSComm控件实现串口通信的方法_第1页
第1页 / 共5页
MSComm控件实现串口通信的方法_第2页
第2页 / 共5页
MSComm控件实现串口通信的方法_第3页
第3页 / 共5页
MSComm控件实现串口通信的方法_第4页
第4页 / 共5页
MSComm控件实现串口通信的方法_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《MSComm控件实现串口通信的方法》由会员分享,可在线阅读,更多相关《MSComm控件实现串口通信的方法(5页珍藏版)》请在金锄头文库上搜索。

1、MSComm 控件实现串口通信的方法碧峰晨曦摘要:详细介绍了 MSComm 控件,并在 VC+6.0 中利用 MSComm 控件开发了基于对话框的串口通信实例。关键词:串口通信,MSComm ,VC+图书编号:TP3110.引言串口通信具有实现简单、价格低廉、通信稳定、数据传输可靠等优点,因而广泛应用于各种工业控制系统中。MSComm 控件是微软公司开发的专门用于串口通信的控件。该控件为开发串口通信程序提供了更加快捷、容易的方法。在 VC+中,对控件属性的操作都是通过特定的函数来实现的,这些函数都是CMSComm 类的成员函数。当声明了一个 CMSComm 类对象后,就可以通过如下格式调用成员

2、函数来访问控件属性了:.() 或-()1.MSComm 控件属性及事件1.1 MSComm 控件属性MSComm 控件有许多属性,最主要的几个属性如下:1) CommPort:设置该属性值可以获取当前程序使用的串口编号。2) Setting:设置或者获取串行通信的通信参数(包括波特率、奇偶校验类型、数据位数及停止位数等)。3) PortOpen:设置该属性可以打开或关闭串口。4) Input:从接收缓冲区中返回并删除数据。5) Output:向串口通信输出缓冲区写入数据。6) CommEvent:当 MSComm 控件在运行时发生错误或产生各种事件时,向程序返回错误或事件类型。1.2 MSCo

3、mm 控件的事件该控件只有一个事件,即 OnComm 事件。当 CommEvent 属性值发生变化时就会触发 OnComm 事件。根据 CommEvent 属性值来分别执行各种情况下的处理程序。2 MSComm 控件实例应用2.1 插入 MSComm 控件在 VC+6.0 中新建一个基于对话框的工程,命名为 Test。默认情况下,VC+6.0 中不会包含 MSComm 控件,所以需要我们手动将 MSComm 控件加载到 VC+6.0 中。(1)单击主菜单 project 的子菜单 Add To project 的 Components and Controls选项;(2)在弹出的“ Compo

4、nents and Controls Gallery”对话框中选择 Registered ActiveX Controls 文件夹中的“Microsoft Communications Control,version6.0”选项,如图 l:图 1.插入 MSComm 控件单击其中的“Insert 按钮, MSComm 控件就被增加到工程中了。与此同时,类 CMSComm 的相关文件 mscomm.h 和 mscomm.cpp 也一并被加人 Project的 Header Files 和 Source Files 中。为了使用 MSComm 控件,将 MSComm 控件拖入对话框。在使用控件编程

5、前还需创建该控件的实例,使用使用 ClassWizard 添加对话框类 CTestDlg 的WM_CREATE 消息响应函数 OnCreate(LPCREATESTRUCT lpCreateStruct) ,在该函数内创建控件实例:int CTestDlg:OnCreate(LPCREATESTRUCT lpCreateStruct) / TODO: Add your specialized creation code hereDWORD style=WS_VISIBLE|WS_CHILD;if (!myComm.Create(NULL,style,CRect(0,0,0,0),this,ID

6、C_MSCOMM1)AfxMessageBox(创建 MSComm 控件失败!);return -1;return 0;2.2 串口初始化及打开初始化主要完成串口的通信参数设置,设置好参数后就可以打开串口了。在对话框的头文件 Test.h 中最顶行,加入引用控件类的代码:#include mscomm.h然后,在对话框类的定义代码中加入 CMSComm 类变量的声明:CMSComm mycomm;在 CTestDlg:OnInitDialog()函数中添加串口初始化代码:BOOL CTestDlg:OnInitDialog()myComm.SetCommPort(2); /选择 COM2myC

7、omm.SetSettings(9600,n,8,1); /波特率 9600,无校验,8 个数据位,1 个停止位myComm.SetInBufferSize(2048); /指定接收缓冲区大小myComm.SetInBufferCount(0); /清空接收缓冲区myComm.SetInputMode(1); /设置数据获取方式myComm.SetInputLen(0); /设置每次读取长度myComm.SetRThreshold(1); /设置接收 OnComm 事件门限值myComm.SetOutBufferSize(1024); /设置发送缓冲区大小myComm.SetOutBuffer

8、Count(0); /清空发送缓冲区myComm.SetSThreshold(1); /设置发送 OnComm 事件门限myComm.SetPortOpen(1); /打开串口return TRUE; / return TRUE unless you set the focus to a control2.3 OnComm 事件处理MSComm 控件一般用 OnComm 事件来接收数据。使用 ClassWizard 加MSComm 控件的 OnComm 消息响应函数 OnOnCommMscomm(),该函数的作用为接收数据,其代码如下:void CTestDlg:OnOnCommMscomm(

9、) / TODO: Add your control notification handler code hereVARIANT input1; /定义 VARIANT 类型变量BYTE rxdata2048; /定义存放二进制数据的数组long len1,k;COleSafeArray safearray1; /定义 COleSafeArray 类的实例CString strDis;switch(myComm.GetCommEvent()case 2:/收到 RThreshold 个字符/添加接收处理代码input1=myComm.GetInput();/将 VARAIANT 变量赋值给 C

10、OleSafeArray 类的实例safearray1=input1; /使用 COleSafeArray 类的成员函数获取数据长度len1=safearray1.GetOneDimSize();for(k=0;klen1;k+)/使用 COleSafeArray 类的成员函数将数据写入数组safearray1.GetElement(&k,rxdata+k);for(k=0;k1;k+)strDis+=rxdatak;m_Edit1.SetSel(1000000,1000000);m_Edit1.ReplaceSel(strDis);strDis=|;UpdateData(false);2.4

11、 串口发送数据在对话框上添加一个“发送”按钮,利用 ClassWizard 为该按钮添加“BN_CLICKED”消息处理函数 onsend(),实现的功能为通过串口发送数据,该函数的代码为:void CTestDlg:OnSend() / TODO: Add your control notification handler code hereUpdateData(true);CByteArray sendArr;WORD wLength;wLength=m_Edit2.GetLength();/m_Edit2 为与文本框联系在一起的 CString型成员变量sendArr.SetSize(w

12、Length);for(int i=0;iwLength;i+)sendArr.SetAt(i,m_Edit2.GetAt(i);myComm.SetOutput(COleVariant(sendArr);2.5 程序测试运行程序,在发送编辑框中随意输入点什么,单击发送按钮,在另一端利用串口调试助手实现通信数据的接收和发送。程序运行情况如图 2。图 2.程序测试3.结束语本文介绍了详细介绍了在 VC+6.0 中利用 MSComm 控件实现串口通信的过程,并给出了详细的编程代码。该方法快速、简单,免去了以往利用WindowsAPI 实现串口通信的复杂编程,具有很强的使用性。参考文献 (References)1 王坤,高贇.基于 VC+实现串口通信的方法J. 信息化研究,2010,36(10):52-542 刘书智,李琳娜 .Visual C+实践与提高-串口通信与工程应用篇M. 北京:中国铁道出版社,20093 吉翔 ,李永全.VC+下 MSComm 控件的串口通信方法J.电脑开发与应用,2009,22(12):34-364 张瑞卿,胡爱军,张超.基于 VC+的 PC 机与 PLC 串口通讯的实现J. 设计与研究,2010 年第 9 期:58-61

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号