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

ARM9工控主板支持斷點續傳的應用程序FTP遠程自動更新方案

 2009/8/21    
        在英創公司網站文章《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庫應用的例子,感興趣的客戶可向英創索要相關代碼。