回到首页|无忧论文仓库|兰州学生网LOGO
会员登录
广告推荐
热门论文
·Money and Marriage——The matrimonial 
·校园网站设计
·开题报告范文
·论毛泽东的创新思想
·毕业设计-开题报告
·关于我国上市公司会计信息披露的几点思考
·毛泽东思想与中国共产党的伟大理论创新
·论抗生素的发展及市场
·浅析网络安全技术
·开题报告范例
Windows环境下的串行数据通信程序设计
作者: 来源: 责任编辑: 更新日期:2006-5-23 12:23:48
Windows环境下的串行数据通信程序设计
 

摘 要 该文详细讨论了MSCOMM.VBX通信控件在Windows平台下的通信软件设计方法,借助于Visual Basic所附的通信控件能非常方便地开发出高级和专业性通信软件来满足不同业务的需要。
在Windows操作系统平台上开发通信软件时,虽然Windows 3.1 SDK提供了完备的API应用程序接口函数和以中断方式驱动的通信设备驱动程序COMM.DRV,从而可以用C或C++来完成这类应用程序的设计,但其复杂化和专业化程度仍然很高。所以,目前许多软件开发人员都在使用Microsoft Visual Basic来开发Windows应用程序。本文将详细叙述VB环境的通信软件开发方法,通过对通信控件MSCOMM.VBX的分析,我们可以看到利用VB来开发Windows平台下的通信软件非常简单。最后结合我们工作中的一个实例来完整地描述该类软件的设计方法。
一、MSCOMM.VBX的描述
VB中的串行通信控件已全面提供了使用RS-232来进行数据通信软件开发设计的所有细则,Microsoft Visual Basic 3.0中的MSCOMM.VBX(需要安装在indowsystem\目录下)是1992年Crescent software Inc. 公司专为Microsoft的VB平台设计的,它使用以下两种不同的方式来处理和解决各类通信软件的开发和设计问题。
(1) 事件驱动,它和我们用C/C++写Windows软件时的窗口回调函数类似,是一种功能强大的处理问题的方法。在实际工作中,往往要求我们处理许多通信中的相关事件。例如:当线路数据到达本端或CD(Carrier Detect)和RTS(Request To Send)信号线状态发生变化时,这就要求我们使用相应的事件来跟踪和处理。在该控件中,是使用OnComm来实现的,它也包括检测和处理通信错误等方面的问题。以下是MSCOMM详细的错误和事件列表(读者可参阅SKD或MSC/C++ 7.0等中的Windows.h有关的通信部分常数和函数原型):
MSCOMM_ER_BREAKA收到一个Break signal.
MSCOMM_ER_CDTOCD信号超时
MSCOMM_ER_CTSTOCTS信号超时
MSCOMM_ER_DSRTODSR信号超时
MSCOMM_ER_FRAME帧错误发生
MSCOMM_ER_OVERRUN接收数据丢失
MSCOMM_ER_RXOVER接收缓冲器溢出
MSCOMM_ER_RXPARITY纠验错
MSCOMM_ER_TXFULL发送缓冲器满
MSCOMM_EV_CDCD信号改变
MSCOMM_EV_CTSCTS信号改变
MSCOMM_EV_DSRDSR信号改变
MSCOMM_EV_EOF收到一个文本文件结束字符(26)
MSCOMM_EV_RING检测到一个振铃信号
MSCOMM_EV_RECEIVE接收到设定的字符数时产生该事件
MSCOMM_EV_SEND发生缓冲器中的字符数低于设定的数值时产生该事件以上常数定义在CONSTANT.TXT文件中。
(2) 查询方式,由程序设计者来负责读取CommEvent的值并处理所发生的错误或事件。
通常简单的应用程序设计可采用这种方法。
使用通信控件开发通信软件时,能非常简单地设计出同时访问多个通信口的程序,这就是Windows的好处。例如使用Commi.OnComm,其中1≤i≤n(n:当前可用的通信口),就可以设计多个通信串口处理程序。例如,一个基于电话网用来检索信息资料的小型服务器的后台软件的设计应用就是一个很好的例子。MSCOMM.VBX中提供了27个关于通信控件方面的属性,以下列出最重要的几个:
CommPort设置和返回通信口的数目
Settings设置和返回以字符串形式给出的数据通信格式:波特率,校验,数据位和停止位
PortOpen设置和返回通信口的状态(包括打开和关闭一个通信口)
Input读串行数据接收缓冲器
Output发送一个串
在MSCOMM.VBX中,有两个与Input和Output性质相等同的函数;
(1) 输入函数,从串行通信接收缓冲器中读取字符串,句型如下:
Comlnput(By Val hWnd As Integer, lpData As Any,By Val cbData As Integer) A
s Integer
@@T8S14200.GIF;图1@@
返回值:本次读操作实际读取的字符数
(2) 输出函数,向通信口发送一个字符串,句型如下:ComOutput(By Val hWnd As Inte
ger, lpData As Any,By Val cbData As Integer) As integer
@@T8S14201.GIF;图2@@
返回值:本次写操作实际发送的字符数
二、事件驱动和查询方式下的两种通信软件开发模板
这两种方式分别对应我们通常使用汇编或C/C++来写通信程序中的中断和查询方法。
(1) 事件驱动
下例是一个使用事件驱动方式设计通信程序的模板,我们只需根据自己的实际情况来选择在下列的Case语句中插入相应的代码即可。
Sub Comm_OnComm()
Select Case Commi.CommEvent'i=1,2...
' 错误部分
Case MSCOMM-ER_BREAK'插入处理BREAK代码
Case MSCOMM-ER_CDTO'插入处理CD(RLSD)超时代码
Case MSCOMM-ER_CTSTO'插入处理CTS超时代码
Case MSCOMM-ER_DSRTO'插入处理DSR超时代码
Case MSCOMM-ER_FRAME'插入处理帧错误代码
Case MSCOMM-ER_OVERRUN'插入处理数据丢失代码

本论文共3页,当前在第1页  1  2  3  

打印本文 收藏本文 返回顶部 关闭窗口
   论文分类导航
经济学 管理学 会计审计 法学 理学 医药生理 社会政治
发展战略  |  国际经济
国内经济  |  经济理论
财政税收  |  证券金融
基本理论  |  人力资源
行政管理  |  工商管理
财务管理  |  公共管理
会计理论  |  管理会计
成本会计  |  电算会计
会计研究  |  审计核算
民法  |  经济法
刑法  |  国际法
国家法  |  司法制度
行政法  |  法学理论
生命科学  |  物理学
地质地理  |  农林学
数学  |  化学
药学  |  临床医学
医学  |  生理心理
社会主义  |  资本主义
马列主义  |  毛概邓论
民族主义  |  台湾问题
人口问题  |  伦理道德
农村问题  |  其它相关
教育学 工学 计算机 艺术 哲学 文化 文学
教育理论  |  学历教育
职业教育  |  教育心理
学科教育  |  英语教学
通  信  学  |  电子机械
工程建筑  |  水利电力
材料工程  |  交通运输
工业设计  |  环境工程
计算机应用
计算机理论
计算机网络
美术  |  艺术理论
音乐  |  电视电影
美学  |  国学
 逻 辑 学  |  中国哲学
西方哲学  |  思想哲学
传统文化  |  当代中国
西方文化  |  社会文化
文化研究  |  文化发展
语言文学  |  古代文学
现代文学  |  新闻传播
设为首页 |  收藏本站 |  网站帮助 |  网站地图 |  意见反馈 |  关于无忧 |  信誉保证 |  联系办法
互联网信息服务(ICP)备案:陇ICP备05005179/06001620 不良信息举报中心