1远程通信技术在灌溉管理中的应用摘要:在灌溉管理中,利用调制解调器和微波通讯链路构成拨号网络,采用EXCEL中的VBA语言编程,把就基层管理站(所)的配水数据传送到管理处FTP服务器上;在管理处中心调度系统中,采用VB或VFP语言建立数据库,实时处理和保存远程数据。可以解决比较经济、简便的解决远程数据传送和处理的技术难题。关键词:远程通信技术TCP/IP协议FTP协议VBA语言VB语言VFP语言数据库在灌溉生产过程中,通常要求基层单位能够将断面流量、斗口配水流量和水量等数据及时汇总、上报。然而,目前各处仍然大部份延用手工处理的模式。因此,对于远在几十公里以外的基层单位,难于达到管理层对生产进行及时的了解和决策。其主要原因有:①从基层铺设专用电缆至管理处,造价太高;②由于远程通信涉及到通讯双方通信协议的设置、传输线路的连接及故障的检测、实时数据文件的产生与传送及保存、删除等,要求计算机系统管理软件具有高可靠性和坚固性,否则在数据传输过程中主机易出故障而导致整个系统崩溃。③观念的问题,认为水工数据适时性要求不高,不需要或暂时没必要进行及时数据的传输和应用。1远程通信的基本内容基于上述原因,本文利用调制解调器和微波通讯构成拨号网2络,以实现远程通信功能的基本硬件条件(如图1所示)。然而,在远程数据传送与处理过程中,应该考虑到以下几个方面:(1)下位机(基层站所的计算机)需定时根据水帐管理软件内的数据生成相应的数据文件,及时上传至处机关FTP服务器。间隔4小时传送一次,将用新产生的数据文件覆盖FTP服务器上旧的数据文件;(2)远程数据传送软件应在确定传输成功后,删除旧文件,以避免数据丢失、重叠或占用大量的存储空间。(3)上位机(FTP服务器)与下位机都安装调制解调器,通过调制解调器实现数据文件的实时接收。上位机是局域网的1个服务器,装有Windows2003Server网络操作系统;(4)文件传送到上位机时,能暂时保存在FTP服务器中,以供数据库管理软件读取和处理;(5)在文件传输过程中,能检测传送线路连接是否正常,并将检测信息显示在主窗体的界面上。如果出现问题必须能马上断开连接,要及时删除没有传送成功的数据文件。(6)调度管理机数据管理软件应能自动打开FTP服务器中保存的数据文件,输入并保存数据文件,以供以供软件进一步处理;(7)上位机管理系统应能对远程数据进行实时处理并维护数据库各种功能的实现。3图1上、下微机远程通信示意图根据以上对文件传输软件的要求,下位机中采用EXCEL和VisualBasic可视化编程语言进行程序设计,并利用VBA中的ActiveX控件,通过拨号网络与远程主机实现连接,由FTP文件传输协议进行文件的上传。对上位机数据库管理软件,采用可视化编程语言VFP6.0或VB6.0编写,实现了远程数据传送及数据库建立与管理技术的应用。2文件传输软件设计方案的确定2.1程序设计的基本思想利用VBA下的InternetTransfer控件进行文件传输。在程序中,通过拨号网络服务拨号连接到上位机服务器并登录网络。在上位机的WindowsNT操作系统中安装FTP网络服务器程序来接收下位机的FTP服务请求,由下位机控制上载整个文件,文件的传送是在相关的FTP协议控制下实现的,安全性、准确性比基层单位站所水帐管理软件输入输入调制解调器调制解调器组FTP服务器调度管理机浏览查询管理处调度中心微波通讯4较高。用FTP的PUT命令,当文件传送到服务器时会自动保存在指定的文件夹下。因此,程序设计的基本思路是:①利用EXCEL中VBA的开发环境与其丰富的“可视化”控件完成应用程序中Windows风格的界面;②利用Mscomm控件进行拨号连接;③利用InternetTransfer控件进行文件传输;④定时传送。2.2建立FTP文件传输协议的连接在使用FTP协议时,首先要建立起控制连接。这就要用到服务器的公认端口号21,客户控制进程在本地申请得到1个随机分配的本地端口,用此端口号就可以和服务器的公认端口号21建立一个相关(一个相关包括5项内容:协议、本地地址、本地端口、远地地址、远地端口)。这样就建立了控制连接。由于建立数据连接要由服务器提出申请,但是在控制连接的条件下客户机发出数据请求的命令时服务器才会发出这个申请。服务器收到来自客户机控制进程的数据请求命令后,首先生成1个传输子程序。传输子程序再去申请1个端口号形成自己的半相关,这个端口号一般使用保留断口号20。此外,因为还需要客户机的半相关才能形成一个相关,而客户机的半相关还是服务器传输进程要申请建立数据连接的对象。这个半相关是从客户控制进程那里得来的。这是由于服务器数据传输子程序已经申请了1个新端口,客户机传输进程就不需要申请新的端口了。服务器传输进程就利用由控制进程转过来的客户地址和端口建立起一个相关,从而具备了向客户机申请数据连接的条件。因此,客户机的“协议、5地址、端口号”这一半相关,分别和服务器的控制端口、传输形成的二个半相关成了二个完全不同的相关,用以建立控制连接和数据连接。这个过程和相关的形成如图2所示。图2FTP二个连接及二个半相关3远程文件传输程序的设计3.1创建应用程序的窗体窗体是VB应用程序的1个基本平台,几乎所有的控件都要添加在窗体上,而大多数的应用程序也是从窗体开始的。本程序由3个窗体组成:主窗体(mainform)、属性设置窗体(frmproperties)和传送过程窗体(frmcancel)。在创建VB的新工程时,系统自动在工程中添加1个窗体Form1。改变Form1的“名称”属性为“mainform”,将它作为程序的主窗体。利用窗体编辑器和属性编辑器对窗体的属性进行更改以确定窗体的状态与行为。为实现应用程序的各种功能,要在窗体上添加各种控件。主窗体如图3所示。6图3主窗体界面添加的主要控件有:SSTab控件:命令按钮控件(CommandButton)、文本框控件(TextBox)、选择钮控件(OptionButton)、状态条控件(StatusBar)、定时器控件(Timer)、串行通信控件(Mscomm)、网络传输控件(InternetTransfer)。传输过程窗体较简单,只有1个文本控件来显示提示,还有1个用来中断本次传输过程的按钮。3.2程序中主要控件的使用3.2.1定时器的应用每个定时器都必须依附在窗体上,但是它在运行时是不可见的。定时器最主要的二个属性是Enabled和Interval。在“远程文件传输程序”中,由于要完成“自动文件传输”的功能,总共用了6个定时器。它们在程序中的作用如下:定时器StandardTimer被设置成1个标准的计时器,Interval属性设置为60000ms,即标准的1min。由于定时器的时间间隔最多为65535ms,而程序中文件的累加、自动拨号、自动登录传送等功能均在分钟级以上,所以在StandardTimer的Timer事件中再设置1个分钟计数器——全局变量Minutes。每次7StandardTimer产生Timer事件时,处理Minutes自加,并根据要求启动文件的累加、自动拨号、自动登录传送等定时开始的工作。3.2.2Mscomm控件Mscomm控件提供了一系列标准通信命令的使用界面。使用它可以建立与串行端口的连接,通过串行端口连接到其它通信设备(例如调制解调器),发出命令,交换数据,并监视和响应串行连接中发生的事件和错误。利用Mscomm控件控制调制解调器拨号连接上位机进行通信。正确地设置属性之后,编写OnComm事件的处理代码是至关重要的。CommEvent属性返回最近发生的通信事件和错误的代码值。依据不同的CommEvent属性值进行不同的处理。主要的处理如下:(1)当发生错误时,无论是手动还是自动传送状态,都要进行以下几步操作:①显示错误信息;②断开Internet控件的FTP连接(Intel.Close);③向端口输出挂线命令“ATH0”(Mscomm1.OutPut=“ATH0”);④设PortOpen属性为False,关闭端口(Mscomm1.PortOpen=“False”);⑤等待下一次的拨号。(2)当自动拨号成功连接时(在接收的字符中检测到连接成功的回报码),启动自动传送定时器AutoSendTimer,准备建立网络的FTP连接。3.2.3InternetTransfer控件8InternetTransfer控件支持超文本传输协议(HTTP)和文件传输协议(FTP),它们是Internet网上使用最广泛的二种协议。使用HTTP协议,可以连接全球信息网(WorldWideWeb)服务器,以检索HTML文档。使用FTP协议可以在FTP服务器上登录,以下载和加载文件。在此,利用文件传输协议来上载文件,并完成以下几方面的工作:①设置控件的属性;②在程序中用Execute方法来执行对远程服务器的请求;③在StateChanged事件中,处理连接中的状态和错误,当返回值为12时,说明文件上载成功,在自动和手动传送二种不同情况下,各自进行不同的处理,也存在相同的任务,如删除下位机上用于传送的旧文件,准备累加新的数据文件;关闭FTP文件服务的连接和串行接口。3.3远程文件传输软件的主要功能(1)该软件在WindowsXP下,与系统监控软件同时运行,定时自动拨号连接和自动传送文件。(2)可进行自动和手动二种方式的文件传输。在数据文件的传送过程中,从主窗体上可显示状态信息;(3)单击主窗体的“端口设置”按钮会弹出“属性”窗体,用户可以对串行端口的参数进行设置;(4)可按用户的要求定时进行数据文件的累加和传送;(5)主窗体上,用户可以对如下内容进行输入设置,即:①自动和手动的选择;②服务器IP地址;③被传送的文件路径;9④传送时间间隔(用1个全局变量来保存);⑤拨打的电话号码。(6)对上述用户的设置(包括对串行端口的设置),每当用户重新设置时,程序都用注册表操作函数SaveSetting将它们保存在Windows操作系统的注册表中。在下一次使用应用程序时,主窗体载入引发的Form_load事件中,用注册表操作函数GetSetting将存储的值取回,恢复用户上次结束应用程序前的设置值。4VFP数据库应用程序的设计利用VFP的客户/服务器功能,可以在本地数据库上或远程数据库服务器上开发客户/服务器模式的应用程序。VFP的一个强有力的功能是可以将基于本地桌面数据库系统的应用程序很容易地修改成客户/服务器模式的应用。1个VFP数据库应用程序访问的是本地数据库还是远程SQL数据库服务器上的数据库,这对于最终用户是完全透明的,即数据库的物理位置对最终用户是透明的。当数据库的物理位置发生变化时,用户界面不必随之变化。4.1远程数据库的程序设计程序要求建立服务器端数据库,自动输入现场上传的数据,实现数据的处理、保存、修改及查询功能。程序调用VFP中的可视组件,并使用ObjectPascal编写程序代码。程序分为3个模块:程序主窗体、数据的自动插入及文件删除和数据查询。主窗体(mainform)起到枢纽的作用,既可以观10察数据库的状态,又可以调用另2个模块。数据的自动输入及文件删除模块(form3)为最主要的模块,它实现了文本文件的自动打开和输入、多组数据的输入、文本文件的删除和数据库的编辑与储存。查询模块(Form1)提供了查询功能,在编辑框内输入指定格式的日期就可以显示该时间所存储的数据。程序流程图如图4所示。图4远程数据库程序框图4.2数据库应用程序主窗体程序的主窗体实现数据库的显示以及调用数据输入和查询模块。它是由3个TSpeedButton、TDatasource、TTable和TDBGrid组成,如图5所示。图5数据库应用程序主窗体4.3读入文本文件中的数据及旧文件的删除为了实现对文本文件中数据的读入功能,使用Dialogs标签页中的TOpendialog组件,并设置它的默认目录为\bishe。11同时,在窗体中放上2个TMemo组件和几个TSpeedButton组件,把TMemo的属性“line