答案家

 找回密码
 立即注册
查看: 353|回复: 0

2018MSComm控件的数据处理方法的研究

[复制链接]

1

主题

1

帖子

41

积分

幼儿园

Rank: 1

积分
41
发表于 2018-7-16 18:15:37 | 显示全部楼层 |阅读模式
  摘 要: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参考文献:
  [1]龚建伟,熊光明.Visualc++/TurboC串El通信编程实践[M].北京:电子工业
   出版社,2008.
  [2]李现勇.Visulac++串E1通信技术与工程实践[M].北京:人民邮电出版社,2006.
  [3]王华,岳丽全,岳志高.MSComm控件在Vc++6.0串口通信中的应用[J].长春工程
   学院学报(自然科学版),2009,10(1):72-73,91.
  [4]李长林,高洁.Visualc++串El通信技术与典型实例[M].北京:清华大学出版社,2006.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

CopyRight(c)2016 www.daanjia.com All Rights Reserved. 本站部份资源由网友发布上传提供,如果侵犯了您的版权,请来信告知,我们将在5个工作日内处理。
快速回复 返回顶部 返回列表