《MSComm控件小结》

本文介绍了在Visual C++ 6.0中使用MSComm控件实现串口通信的三种方法,重点讲解了MSComm控件的使用,包括其属性如CommPort、Settings、PortOpen、Input、Output等,以及如何处理输入输出数据和事件。通过设置这些属性,可以轻松控制串口通信,并提供了实际应用中的数据处理方法和错误处理策略。
摘要由CSDN通过智能技术生成

一:在Visual C++ 6.0集成开发环境下,可以通过三种方法实现串口通信

1)运用MFC函数进行编程实现串口通信

2)运用MSComm控件进行编程实现串口通信 

3)运用VC++运行库函数实现串口通信

在这三种方法中,MSComm—( Microsoft Communication Control )控件因使用简便而广受应用,它是Microsoft公司出品的一种ActiveX 控件。控件描述:一个MSComm控件对应一个串行端口,应用程序访问了多少个串行端口就必须使用多少个MSComm控件;用该控件实现串口通信时,实际上是调用了API函数,但程序员不必知道MSComm控件调用API函数的具体细节,而只需了解MSComm控件具有哪些属性和如何添加事件处理代码即可实现串口的操作。下面对MSComm控件常用属性做个小小总结。


二:MSComm控件属性及事件(出自Visual C++串口通信与工程应用实践 第八章)

MSComm控件是微软公司开发的专门用于串行通信的控件,它是高级语言编写的串行通信程序和PC串口之间的桥梁,通过这个桥梁,使得开发串口通信程序的工作变得更容易。设置控件的几个属性,然后添加控件的事件响应代码,就可以使串口按照要求进行工作。MSComm控件的大部分属性都是可读可写的,当对其进行写入操作时,是在设置属性的新值;当读属性时,可以读出该属性的当前设置值。在Visual C++中,对控件属性的操作都是通过特定的函数来实现的,这些函数都是CMSComm类的成员函数,当声明了一个CMSComm类的实例后,就可以对该实例使用"."操作符加成员函数的方法来访问控件的属性了,以下属性是每次通信中使用频率最高的属性,通常每次通信都要进行设置。


1.CommPort属性

通过设置该属性值,可以决定串口通信使用的串口编号。读取该属性值可获取当前程序使用的串口编号。使用如下两个函数来操作

void SetCommPort(short nNewValue);    //设置串口编号

short GetCommPort();                             //返回正在使用的串口编号

nNewValue可以设置为1~16的任何数值(默认值为1),对应使用的串口号为COM1~COM16。但是若设置的串口号实际并不存在,则在打开端口时,MSComm控件会产生“设备无效”的错误

例如:myComm.SetCommPort(2);   //表示设置控件myComm的通信端口为串口COM2

提示:必须在打开端口之前设置CommPort属性


2.Settings属性

设置或者获取串行通信的通信参数。通信参数包括波特率、奇偶校验类型、数据位数及停止位数等4个参数。使用如下两个函数操作

void SetSettings(LPCTSTR lpszNewValue);    //设置通信参数,由lpszNewValue来表示

CString GetSettings();                                      //读取当前串口通信参数

使用字符串类型来设置该属性,lpszNewValue的格式为:"BBBB,P,D,S" 其中

BBBB为波特率,有效的数值为110、300、600、1200、2400、9600(默认值)、14400、19200、28800、38400、56000等;

P为奇偶校验类型,可用类型为:E(偶校验)、M(标记校验)、N(默认值,无校验)、O(奇校验)、S(空格校验);

D为数据位数,可以取值为4、5、6、7、8(默认值);

S为停止位数,可以取值为1(默认值)、1.5和2。

myComm.SetSettings("19200,O,8,1");    //设置myComm控件的通信参数,波特率为19200,奇校验,使用8位数据位及1位停止位

提示:通信双方的Settings参数设置必须相同,否则无法进行通信。


3.PortOpen属性

设置该属性值可以打开或关闭串口。使用如下两个函数来操作该属性:

void SetPortOpen(BOOL bNewValue);    //打开或者关闭串口

BOOL GetPortOpen();                             //读取端口的状态,即状态为打开还是关闭

由bNewValue决定打开还是关闭串口,其值为TRUE时打开串口,为FALSE时关闭串口。在使用串口之前应通过设置该属性打开串口,而当退出串口通信时,应该关闭串口,以释放程序占用的串口资源。


4.Input属性

通过操作该属性值,可以从串口通信输入缓冲区获取数据。使用如下函数来操作该属性:

VARIANT GetInput();

执行该函数后,返回并删除接收缓冲区中的数据。默认情况下读取缓冲区中全部的内容,若设置InputLen属性值大于0,则读取的字符数量由InputLen

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值