2024年5月5日发(作者:)
维普资讯
‘上海煤气》2002年第2期.40.
用VB6.0开发基于XMODEM的通信软件
吴钟 曹如萍
摘要:信息管理系统中,常需接收远程的报表,快速可靠地实现数据的远程传输是其中的关键环节。在
对实时性要求不高的条件下,采用M0D删可以通过电话网进行数据的远程传输,这无疑是目前最经济的办
法。文章叙述了整个通信软件的开发过程,包括通信链路的建立:选用利用VB6 O开发基于x】I咖&协
议的方式传送数据以及数据通信结柬后,取方M0D删拆链挂机的程序。目前该通信软件己用于燃气行业
信息管理系统中实践证明是可靠的。
关键词;通信软件 接收 发送 数据远程传输
1前言 过电话网进行数据远程传输 实现计算机之间的
点对点通信,利用现有的电话线传输数据无疑是
在许多信息管理系统中,经常需要接收远程 最经济的方法。实现一网多用,产生良好的经济
的报表数据,如何快速可靠地实现数据的远程传
效益。
输是这些管理系统的关键环节,在实时性要求不
高的情况下,人们采用调制解调器(MODEM)通
2管理系统的远程传输数据原理(见图1)
图1远程传输数据的原理示意
在远程终端上,可以在简洁、直观的人机界
3通信软件的开发过程
面上将各类数据进行输入,并将数据存贮,依据
事先设定的条件经过调制解调器自动拨号,与中 3l通信链路的建立
心的远程主机联接.将有关数据送上电话线,在
为了从远程终端接收数据或向远程终端发命
数据中心则可利用Visual Basic 6.0开发基于
令,首先必须与远方远程终端建立传输数据的通
XMODEM协议的接收数据的通信软件,同样各远
信链路,在VB6,0下建立通信链路的程序如下:
程终端发送数据也采用XMODEM协议,才能保
Sub Funct ion connect 0
证通信双方准确可靠地进行数据传输
ith] ̄scomal
lwww.g3777锄_I
维普资讯
‘上海煤气》2002年第2期 -41-
.
Comports=1
Settings=”9600,N,8,l”
Inputlen=0
Portopen true
Inbuffercount 0
字节号
0
1
2
3 130
131
内容
s叫(块头标识符)
块号:从1到FF循环
块号的反码(255块号)
数据
校验和
.
.
.
.
.
Output=“ATZ”+CHR(13)
Loop:Oo
XMODEM是简单的文件传输协议,基本的数
据格式如下:
逻辑通信控制字符、物理通信控制字符说明:
Doevents 0
L00D until.Inbuffercount>=2
Instr ing¥=.input
SOH:这个字符标志为块头信息的开始:此握手
字符的对应值为:&Hl
EOT:标识数据块结束的位置;此握手字符的对
应值为:&H4
If Instr(instring¥,“ok”)then
Goto loop
Endif
Delay(1)
.
ACK:确认,是对无校验错误的响应:此握手字
符的对应值为:&H6
Output-“&TQOE1VO&K3’’
LOOP1:.Output=“ATOP11118888”+cHR(13)
Delay(5)
Instring¥=.Input
NAK:否定应答;此握手字符的对应值为:&HI5
CAN:取消:此握手字符的对应值为:&HI8
3 2 2XMODEM发送与接收
1)发送
If Not(Instr(instring¥。”coBueet 9600'’)then
Delay(1)
Goto loopl
Endif
当启动传输协议后,接收端发NAK(Negative
Acknowledgment),发送端收到后,就把文件数据
按128个字节一块扎成数据包,并发送它,再等
Msgbox“数据链路已成功建立,可以传输数据了”
End with
待接收方对此的确认信号 从接收方来的ACK信
号意味着信息包被正确接收,也可解释为隐含着
请求发送下一个数据包,而NAK信号则是表示请
求重发同一数据包,CAN信号是请求无条件地停
止传输过程。如果结束阶段正常结束,则发送方
发送一个单独的EOT信号来通知接收方不会再有
数据传来了,接收方用ACK信号来确认发送方的
EOT信号。接着依次进行关闭操作、关闭文件、
释放内存 如中间阶段是异常结束的,则发送方
就不发送B0T信号
2)接收
End Funtion
3 2数据传输过程
两端正确可靠地建立数据链路后就可以进行
数据通信,通常利用电话线传输数据并没有一种
简单的方法确保数据完整地到达日的地,数据错
误的发生可能由多种原因引起,串行通信的数据
是逐位发送的 即使细微的噪声都可能在多个位
上造成严重错误.当波特率较高时更严重,本文
介绍一种选用xMODEM协议,对所传送数据进
接收方每隔1O秒发出一个NAK信号,而一
个SOH信号的到来则表示已经有信息包过来,接
收作如下评价:
A1虽然信息包形式是SOH信号来标识一个包的开
始,但在这个位置上若没有一个单独的EOT字节
行打包以检测传输过程中出现的错误,理论上讲
如果每个数据包正确地传送,整个数据块也将成
功地传送。
3.2.1 xMODEM的数据包格式及逻辑通信控制字
符、物理通信控制字符
则表明再没有包送来了,这也表示传送阶段结束。
1www.g3777corn.I
维普资讯
《上海煤气》2002年第2期 _42一
B)数据包序号的完整性检验。换句话说 接收方
MSComm1.1nBufferCount O
确定它收到的第二、三区段是否被损坏,典型的
Rn=delay(2)
步骤为:这两个连续的区段中的一个取补,再于
MSComm1.011tput=“+十+’’
另一个作异或运算 结果为O,则表示两个区段均
Rn=delay(2)
未破坏。如果不为O,则接收方发出NAK信号请
Mscomm1.Output=“ath”+Chr¥(13)+Chr¥(1O)
求同一数据包,并返回等待状态。
Start=Time
C)接着,接收方确定该序号是否是期望的 一般
Do While T[mer Start(4
来说。若包的序号不正确,则有一种严重的错误
If l{SComm1.InBufferCount Then
发生。因接收方没有办法从序号错误中恢复,故
Data
—
re¥-Data
_
re¥+MSCo ̄1.Input
要发送一个CAN信号来中断并结束传送
If InStr(Data—re¥,“ok )Then
D)最后,接收方只计算数据区段的算术和(按256
I-langup=0
取模)并与数据包中的校验值比较,若相等,则
Exit Sub
接收方发送ACK信号,否则发送NAK信号。
End if
如果接收方传送正常结束 则它按顺序执行
End if
关闭操作、关闭文件、释放内存等 如果在关闭
Loop
操作中没有错误出现,就发送一个ACK信号来确
Next I
认发送方的EOT信号,并结束传送过程。
Hangup 1
End Funet ion
3 3数据通信结束
通过上述三个过程能够可靠地将数据通过电
数据通信结束后,双方MODEM要拆链挂
话线传输,在开发的过程种用VB60编程对
机 向MODEM发送“+一。。"是实现数据传输状态
MODEM进行正确设置是关键:在发送握手信号
转为命令状态的AT指令,它的前后必须有一段时
时,通信双方需适当的延时程序配合。
问延时,当MODEM变为命令状态时,可以用ATHO
来实现挂机 VB下实现挂机的程序如下:
4结束语
Funetion hangup0 As Integer
Dim Start.Rn.I
本通信软件已经在燃气行业信息管理系统中
Dim Data re¥=…
得到应用,经过实践证明,XMPDEM协议通过电
For I=1 tO 10
话网进行远距离的发送台接收数据是可靠的.能
Data re¥-…
够满足计算机点对点数据传输要求。
Devalopment Oommunication Software based on X啪DEM with VB6.0
Ⅵ,u Zhong Cao Ruplng
Abstract:Remote-recetring is very-important in MIS system,and the key
is how to realize transmission qmc ̄y
_
and reliab This paper describes de ̄lopmem of such a communication sof e usingVB6 0
,
and bascd on
XMODEM‘s communication a ̄eemcnt
Keywords: communication software rccci ng and sending datum remote transmission
致歉:因工作疏忽,上期的R33与R34重复印刷,现将文章重印于此 井向作者与读者表示歉意
《上海煤气》期刊社
1www.83777 corn-I
发布评论