摘 要 该文详细讨论了S.VBX通信控件在inds平台下的通信软件设计 方法 ,借助于Visual Basi所附的通信控件能非常方便地开发出高级和专业性通信软件来满足不同业务的需要。
在inds操作系统平台上开发通信软件时,虽然inds 3.1 SDK提供了完备的API 应用 程序接口函数和以中断方式驱动的通信设备驱动程序.DRV,从而可以用或++来完成这类应用程序的设计,但其复杂化和专业化程度仍然很高。所以, 目前 许多软件开发人员都在使用irsft Visual Basi来开发inds应用程序。本文将详细叙述VB环境的通信软件开发方法,通过对通信控件S.VBX的 分析 ,我们可以看到利用VB来开发inds平台下的通信软件非常简单。最后结合我们工作中的一个实例来完整地描述该类软件的设计方法。
一、S.VBX的描述
VB中的串行通信控件已全面提供了使用RS-232来进行数据通信软件开发设计的所有细则,irsft Visual Basi 3.0中的S.VBX(需要安装在indsyste\目录下)是1992年resent sftare In. 公司专为irsft的VB平台设计的,它使用以下两种不同的方式来处理和解决各类通信软件的开发和设计 问题 。
(1) 事件驱动,它和我们用/++写inds软件时的窗口回调函数类似,是一种功能强大的处理问题的方法。在实际工作中,往往要求我们处理许多通信中的相关事件。例如:当线路数据到达本端或D(arrier Detet)和RTS(Request T Send)信号线状态发生变化时,这就要求我们使用相应的事件来跟踪和处理。在该控件中,是使用n来实现的,它也包括检测和处理通信错误等方面的问题。以下是S详细的错误和事件列表(读者可参阅SKD或S/++ 7.0等中的inds.h有关的通信部分常数和函数原型):
S_ER_BREAKA收到一个Break signal.
S_ER_DTD信号超时
S_ER_TSTTS信号超时
S_ER_DSRTDSR信号超时
S_ER_FRAE帧错误发生
S_ER_VERRUN接收数据丢失
S_ER_RXVER接收缓冲器溢出
S_ER_RXPARITY纠验错
S_ER_TXFULL发送缓冲器满
S_EV_DD信号改变
S_EV_TSTS信号改变
S_EV_DSRDSR信号改变
S_EV_EF收到一个文本文件结束字符(26)
S_EV_RING检测到一个振铃信号
S_EV_REEiVE接收到设定的字符数时产生该事件
S_EV_SEND发生缓冲器中的字符数低于设定的数值时产生该事件以上常数定义在NSTANT.TXT文件中。
(2) 查询方式,由程序设计者来负责读取Event的值并处理所发生的错误或事件。
通常简单的应用程序设计可采用这种方法。
使用通信控件开发通信软件时,能非常简单地设计出同时访问多个通信口的程序,这就是inds的好处。例如使用i.n,其中1≤i≤n(n:当前可用的通信口),就可以设计多个通信串口处理程序。例如,一个基于电话网用来检索信息资料的小型服务器的后台软件的设计应用就是一个很好的例子。S.VBX中提供了27个关于通信控件方面的属性,以下列出最重要的几个:
Prt设置和返回通信口的数目
Settings设置和返回以字符串形式给出的数据通信格式:波特率,校验,数据位和停止位
Prtpen设置和返回通信口的状态(包括打开和关闭一个通信口)
Input读串行数据接收缓冲器
utput发送一个串
在S.VBX中,有两个与Input和utput性质相等同的函数;
(1) 输入函数,从串行通信接收缓冲器中读取字符串,句型如下:
lnput(By Val hnd As Integer, lpData As Any,By Val bData As Integer) A
s Integer
@@T8S14200.GIF;图1@@
返回值:本次读操作实际读取的字符数
(2) 输出函数,向通信口发送一个字符串,句型如下:utput(By Val hnd As Inte
ger, lpData As Any,By Val bData As Integer) As integer
@@T8S14201.GIF;图2@@
返回值:本次写操作实际发送的字符数
二、事件驱动和查询方式下的两种通信软件开发模板
这两种方式分别对应我们通常使用汇编或/++来写通信程序中的中断和查询方法。
(1) 事件驱动
下例是一个使用事件驱动方式设计通信程序的模板,我们只需根据自己的实际情况来选择在下列的ase语句中插入相应的代码即可。
未完...点击下方链接下载完整文档