- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MSCom控件实现串口通信的方法
MSComm控件实现串口通信的方法
碧峰晨曦
摘要:详细介绍了MSComm控件,并在VC++6.0中利用MSComm控件开发了基于对话框的串口通信实例。
关键词:串口通信,MSComm,VC++
图书编号:TP311
引言
串口通信具有实现简单、价格低廉、通信稳定、数据传输可靠等优点,因而广泛应用于各种工业控制系统中。MSComm控件是微软公司开发的专门用于串口通信的控件。该控件为开发串口通信程序提供了更加快捷、容易的方法。在VC++中,对控件属性的操作都是通过特定的函数来实现的,这些函数都是CMSComm类的成员函数。当声明了一个CMSComm类对象后,就可以通过如下格式调用成员函数来访问控件属性了:
对象名.成员函数名(参数表)或对象名-成员函数名(参数表)
MSComm控件属性及事件
1.1 MSComm控件属性
MSComm控件有许多属性,最主要的几个属性如下:
CommPort:设置该属性值可以获取当前程序使用的串口编号。
Setting:设置或者获取串行通信的通信参数(包括波特率、奇偶校验类型、数据位数及停止位数等)。
PortOpen:设置该属性可以打开或关闭串口。
Input:从接收缓冲区中返回并删除数据。
Output:向串口通信输出缓冲区写入数据。
CommEvent:当MSComm控件在运行时发生错误或产生各种事件时,向程序返回错误或事件类型。
1.2 MSComm控件的事件
该控件只有一个事件,即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)在弹出的“Components 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控件拖入对话框。在使用控件编程前还需创建该控件的实例,使用使用ClassWizard添加对话框类CTestDlg的WM_CREATE消息响应函数OnCreate(LPCREATESTRUCT lpCreateStruct) ,在该函数内创建控件实例:
int CTestDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
……
// TODO: Add your specialized creation code here
DWORD style=WS_VISIBLE|WS_CHILD;
if (!myComm.Create(NULL,style,CRect(0,0,0,0),this,IDC_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); //选择COM2
myComm.SetSettings(9600,n,8,1); //波特率9600,无校验,8个数据位,1个停止位 myComm.SetInBufferSize(2048); //指定接收缓冲区大小
myComm.SetInBufferCount(0); //清空接收缓冲区
myComm.SetInputMode(1);
文档评论(0)