ARM9工控主板支持断点续传的应用程序FTP远程自动更新方案

 2009-8-21          [nemail]    
[lablebox]
        在英创公司网站文章《ARM9工控主板WinCE应用程序的远程FTP自动更新》一文中,介绍了利用WinCE内核中的FTP Server程序,实现应用程序远程更新的方法,但在很多应用场合,往往是工控主板作为FTP客户端与FTP服务器交换文件,为此我们提供了FTP客户端应用程序库EM_FTPClient.LIB,客户利用这个库可以方便的编写出适合自己应用的FTP客户端应用程序,在《ARM9工控主板支持断点续传的FTP文件传送》一文中对各库函数做了详细介绍。本文介绍的更新方案就是利用EM_FTPClient.LIB,工控主板作为客户端,通过GPRS实现应用程序远程更新。客户可先看《ARM9工控主板WinCE应用程序的远程FTP自动更新》,再看本文,可对应用程序的自动更新有更清楚的了解。

        本方案的最大特点是FTP传送支持断点续传,由于GPRS网络的原因,对基于GPRS的FTP应用,断点续传功能必不可少,本文的断点续传方案大大增加了文件传送成功的机率,节省了传送时间。本方案分为两个大的步骤:一、应用程序远程下载,主要是将FTP服务器上指定目录下的文件下载到本地指定的目录中,同时生成update.flg标志文件;二、应用程序自动更新,通过绑定在内核中的update.exe程序实现。

1、应用程序远程下载
        应用程序的下载由FTPTEST.EXE完成,程序中,先读取配置文件FtpConfig.txt,FtpConfig.txt中包含了目标FTP服务器,登录用户名、密码,远端目录等信息。读取配置文件后,紧接着GPRS拨号,GPRS连接建立成功,就依次调用EM_FTPClient.LIB中的Logon()登录到FTP服务器,ListAll()列取FTP目录下的文件, GetFile()函数进行文件下载,如果在下载过程中出错,则再次调用GetFile()函数,并将参数中的bResume设置为TRUE,进行断点续传。各函数的具体使用请参考《ARM9工控主板支持断点续传的FTP文件传送》。文件下载成功后,将生成update.flg标志文件。

      FtpConfig.txt 中的各项定义如下:

      [FTP_SERVER]     // 目标FTP服务器信息
      IPAddress='125.69.125.193'   // FTP服务器IP
      DomainName=''     // FTP服务器域名
      [LOGON_INFO]     // FTP用户信息
      User='guest'      // 登录用户名
      Pass='888'      // 用户密码
      RemoteDir='\ttt'     // FTP服务器目录
      FtpType='image'     // 传输文件类型 image/ascii
      [LOCAL_INFO]     // 用户本地信息
      LocalDir='\NandFlash\FTPUpdate' // 下载文件存储的本地目录
      ExistFile='jump'     // 要下载的文件已存在于当前目录:跳过或覆盖jump/cover
      MaxResumeCount='10'    // FTP最大重试次数

2、应用程序自动更新
        为了避免和正在运行的应用程序冲突,文件均下载到指定的\NandFlash\FTPUpdate下,系统启动时,先检查userinfo.txt中的Update项是否等于“ON” ,如果是,则启动自动更新方案,运行update.exe来完成程序的更新工作。对于update.exe的详细说明,请参考《ARM9工控主板WinCE应用程序的远程FTP自动更新》

        本文介绍的方法既是一个完整的应用程序更新方案,也是一个EM_FTPClient.LIB库应用的例子,感兴趣的客户可向英创索要相关代码。
[lablebox]