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