一:在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