2018MSComm控件的数据处理方法的研究
摘 要:MSComm控件是微软公司开发的专门用于串行通信的控件。使用MSComm控件时,其中一个难点是对输入缓冲区和输出缓冲区的数据进行处理。因为缓冲区中的数据都是VARIANT类型的数据,而程序中常用的通信数据即可能是字符串,有可能是二进制的数值。本文将分别针对字符串和二进制,给出实用的处理方法。http://
关键词:MSComm控件 VARIANT结构 COlesafeArray类
一、MSComm控件
MSComm控件是微软公司开发的专门用于串行通信的控件。它是高级语言编写的串行通信程序和PC串口之间的桥梁。设置控件的几个属性,然后添加事件的响应代码,就可以使串口按照要求进行工作。MSComm控件的大部分属性都是可读可写的,在VC++中,对控件属性的读写操作都是通过特定的函数来实现的,这些函数都是CMSComm类的成员函数,当声明了一个CMSComm类的对象后,就可以通过调用对象的成员函数来访问控件的属性了。MSComm控件的属性很多,但最常用的有以下几个:CommPort属性、Settings属性、PorOpen属性、Input属性和Output属性等,每种属性都有相应的Get和Set函数用于设置和读取属性。
二、MSComm控件的数据处理
使用MSComm控件时,其中一个难点是对输入缓冲区和输出缓冲区的数据进行处理。因为向输出缓冲区写入的数据即从输入缓冲区读取的数据都是VARIANT类型的数据而程序中常用的通信数据即可能是文本型的字符串,有可能是二进制的数值。能否处理好字符串与VARIANT类型数据间的转换及二进制与VARIANT类型数据间的转换,对能否成功应用串口通信至关重要。下面分别针对字符串和二进制,给出实用的处理方法。
(一)字符串数据的处理
当通信传输的数据都是纯文本型数据时,可以使用以下方法来处理接收数据和发送数据。
1.接收字符串
当确定了接收缓冲区中含有有效字符,需要从接收缓冲区中取出字符,此时的操作代码如下(只给出关键部分的代码):
VARIANT input1; //(1)定义一个VARIANT结构的变量
char *str,*str1;
int counts,i;
CString input2;
counts=myComm.GetInBufferCount; //(2)获取接收缓冲区中的字符数
if(counts>0)
{
input1=myComm.GetInput(); //(3)将缓冲区的内容读取到input1
str=(char*)(unsigned char*)input1.parray->pvData;
//(4)将input1的数据指针赋给字符指针
}
i=0;
str1=str;
while(i参考文献:
龚建伟,熊光明.Visualc++/TurboC串El通信编程实践.北京:电子工业
出版社,2008.
李现勇.Visulac++串E1通信技术与工程实践.北京:人民邮电出版社,2006.
王华,岳丽全,岳志高.MSComm控件在Vc++6.0串口通信中的应用.长春工程
学院学报(自然科学版),2009,10(1):72-73,91.
李长林,高洁.Visualc++串El通信技术与典型实例.北京:清华大学出版社,2006.
页:
[1]