0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术ARM9工控主板文件传送介绍

英创信息技术 来源:英创信息技术 作者:英创信息技术 2019-11-13 09:22 次阅读

文件传送协议(FTP — File Transfer Protocol)是TCP/IP提供的标准机制,用来从一台主机将文件复制到另一台主机。从一台计算机向另一台计算机传送文件是在联网或互联网环境中常见的任务。

英创ARM9系列工控主板预装正版WinCE5.0操作系统,WinCE内核提供了FTP Server应用程序,这为通过FTP实现文件传送提供了方便,在本公司网站文章《ARM9工控主板WinCE应用程序的远程FTP自动更新》中介绍的方案,就是利用WinCE内核提供的FTP Server实现的应用程序远程更新。但在很多应用场合,是工控主板作为本地FTP客户端与远端FTP服务器交换文件,为此需要程序员自己编写在ARM9主板上运行的FTP客户端的程序。对于WinCE操作系统,Microsoft提供了如FtpGetFile()、FtpPutFile()等用于文件传送的函数,程序员利用这些函数,可以方便的编写出FTP客户端程序。但如果网络环境复杂或采用GPRS网络,由于GPRS网络原因,网络连接很容易中断,如果每次连接中断,整个文件都重新传送,一个稍大的文件基本上不能成功传送,此时就要求FTP文件传送具有断点续传功能。

断点续传是指在文件的传送过程中,因为网络或其它原因至使传送过程中断,当再次传送这个文件时,将从已传送的部份开始,继续未完成部份传送,不用从头对整个文件进行传送,这样可以节省时间,节约网络流量,提高文件传送速度。对于在GPRS网络上应用的FTP,断点续传功能显得尤为重要,但Microsoft提供的FTP API中,却没有支持断点续传的函数,为此,英创公司针对断点续传这一要求,直接采用SOCKET API,封装了一个支持断点续传的FTP客户端静态库EM_FTPClient.LIB,下面对这个库函的API函数做详细说明。

支持断点续传的FTP库函数说明:

(1)bool Logon( LPCTSTR lpszHostIP, LPCTSTR lpszUserName=_T(‘’), LPCTSTR lpszPassword=_T(‘’), int nTimeOut=5000 );

功能描述:登录到FTP服务器

输入参数 lpszHostIP:服务器IP

lpszUserName:用户名

lpszPassword:用户密码(当用户名用与用户密码为空时,将匿名登录)

nTimeOut:超时设置 1000(mS)《=nTimeOut《=60000(mS)

返回值 = TRUE:登录FTP服务器成功

FALSE:登录FTP服务器失败

(2)bool ChangeDir( LPCTSTR lpszRemoteDir=_T(‘\\’) );

功能描述:设置远端FTP服务器当前目录

输入参数 lpszRemoteDir:服务器目录

返回值 = TRUE:目录更改成功

FALSE:目录更改失败

(3)bool ListAll( FILELIST* fileList );

功能描述:获取FTP服务器当前目录下的所有文件的列表

输入参数 fileList:接收文件列表的结构体

返回值 = TRUE:获取文件列表成功

= FALSE:获致文件列表失败

文件列表数据结构定义如下:

typedef struct

{

int nFileNum; //当前目录文件个数

TCHAR FileList[MAXFILENUM][MAX_PATH]; //文件名列表

//(注:当nFileNum = 0 时,此数组中的内容无效)

}FILELIST;

(4)bool GetFile( LPCTSTR lpszLocalFile, LPCTSTR lpszRemoteFile, int nMode = 0, bool bResume=FALSE );

功能描述:从FTP服务器上下载指定文件(如果下载的文件已存在于本地当前目录下,将覆盖下载)

输入参数 lpszLocalFile:存储为本地文件名

lpszRemoteFile:下载的指定文件

nMode:传输模式 =0: 二进制模式 =1: 文本模式

bResume:断点续传标志

=TRUE:继点续传

(程序将挂断FTP连接,重新执行Logon(),ChangeDir(),然后下载)

=FALSE: 正常下载

返回值 = TRUE:开始下载

FALSE:开始下载失败

(5)bool DelFile( LPCTSTR lpszFileName)

功能描述:删除远端FTP服务器当前目录下指定文件

输入参数 lpszFileName:指定要删除的文件

返回值 = TRUE:删除成功

FALSE:删除失败

(6)bool Logoff( );

功能描述:注销与远端FTP服务器的连接

(7)void Abort( );

功能描述:中断与远端FTP服务器的连接

(8)FTPSTATUS* GetStatus( );

功能描述:获取当前文件的下载状态

返回值: 指向当前下载文件状态数据结构的指针

文件下载状态数据结构定义如下:

typedef struct

{

int nSucceed; //上传/下载是否成功

//=0:文件正在传输,=1文件传输成功,=-1文件传输失败

int nErrCnt; //重传次数

int nMode; //上传=1,下载=2

int nStatus; // FTP状态

DWORD dwFileSize; //文件字节数

DWORD dwCompleteSize; // 已完成字节数

}FTPSTATUS;

(9)int GetErrorCode( );

功能描述:获取最后一次错误的错误码

返回值:错误码(错误码的定义请参看EM_FTPClient.H)

补充说明:

1、在调用GetFile()函数时,如果将bResum设置为TRUE,程序将自动执行以下步骤:

↓调用Abort( )中断与FTP服务器的连接

↓调用Logon( )登录到FTP服务器

↓调用ChangeDir( )设置FTP服务器当前目录

↓从已完成传送的部份继续下载

其中Logon()和ChangeDir( )的参数是最后一次调用Logon()和ChangeDir( )传入的值。

2、调用GetFile()函数返回为TRUE时,并不是表示文件下载成功,只表明文件开始下载。主程序应该通过判断FTPSTATUS数据结构中的nSucceed值来确认下载是否成功。

3、现在的FTP服务器普遍支持PASV模式,因此本FTP Client仅支持PASV模式数据传送。

4、英创公司提供相应的测试例程,感兴趣的客户可向英创索要相关代码。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6064

    浏览量

    34608
收藏 人收藏

    评论

    相关推荐

    支持Linux高级客户自行移植内核

    上市)  该项服务具体说明和实施流程参见:支持客户进行Linux移植  需要该服务的客户需与签订技术保密协议,并承诺严格履行协议:
    发表于 01-18 13:52

    工控主板产品选型指南

      成都信息技术有限公司是一家专注于嵌入式工控主板研发、销售与服务的高科技公司,在嵌入式领域已有超16年的从业经历。
    发表于 02-28 11:28

    主板JAVA应用开发简介

    。  鉴于主板主要应用于工业控制和通信管理领域,所以提供的Java硬件支持包主要包括对以太网口、串口、CAN、GPIO、SPI、I2
    发表于 10-20 13:13

    ARM9嵌入式主板看门狗的使用方法

    ARM9嵌入式主板Watchdog的使用
    发表于 09-26 10:06

    VS2005与ARM9嵌入式模块连接和调试步骤

    使用VS2005连接和调试ARM9嵌入式模块
    发表于 09-27 13:05

    ARM9工控主板支持断点续传的FTP文件传送

    文件传送协议(FTPFile Transfer Protocol)是TCP/IP提供的标准机制,用来从一台主机将文件复制到另一台主机。从一台计算机向另一台计算机传送
    发表于 02-19 11:02 40次下载

    英创信息技术ARM9工控主板内嵌AD概述

    英创公司推出的ARM9 嵌入式工控主板产品系列,均预装了正版WinCE5.0 操作系统。
    的头像 发表于 11-04 09:43 2199次阅读
    英创<b class='flag-5'>信息技术</b><b class='flag-5'>ARM9</b><b class='flag-5'>工控</b><b class='flag-5'>主板</b>内嵌AD概述

    英创信息技术ARM9工控板在远程监控领域的应用

    英创ARM9工控主板的数据采集功能通常采用板上的GPIO实现数字输入输出、通过精简ISA总线扩展相应的AD或DA实现模拟数据的输入输出。在英创ARM9
    的头像 发表于 11-12 10:04 1410次阅读
    英创<b class='flag-5'>信息技术</b><b class='flag-5'>ARM9</b><b class='flag-5'>工控</b>板在远程监控领域的应用

    英创信息技术ARM9工控板串口设备的COM组件应用

    英创公司的ARM9工控主板产品均预装了Windows CE5.0操作系统,支持包括EVC、C#、VB、LabView等多种开发工具。
    的头像 发表于 11-05 10:07 1490次阅读

    英创信息技术ARM9工控主板远程操作自动更新介绍

    库EM_FTPClient.LIB,客户利用这个库可以方便的编写出适合自己应用的FTP客户端应用程序,在《ARM9工控主板支持断点续传的FTP文件
    的头像 发表于 11-13 09:26 1097次阅读

    英创信息技术ARM9工控板远程抓拍图像应用介绍

    英创ARM9工控主板功能齐全、体积小巧、性能稳定、超低价格的嵌入式主板产品。主板硬件完全按工业级标准设计,CPU采用了32位工业级
    的头像 发表于 11-13 09:41 1625次阅读
    英创<b class='flag-5'>信息技术</b><b class='flag-5'>ARM9</b><b class='flag-5'>工控</b>板远程抓拍图像应用<b class='flag-5'>介绍</b>

    英创信息技术工控主板EM9360的GPIO介绍

    英创公司的ARM9工控主板产品 EM9360是一款预装WinCE操作系统,以多种通讯接口、支持各种扩展为其技术特色。EM9360的板载的3路以太网接口、6路串口以及1路CAN接口,均带
    的头像 发表于 11-14 09:34 2133次阅读

    英创信息技术工控主板内核更新与版本管理介绍

    英创公司的ARM9工控主板系列产品均预装了正版的Window CE操作系统,支持客户采用强大的微软开发工具直接开发应用程序。
    的头像 发表于 11-15 09:24 1022次阅读
    英创<b class='flag-5'>信息技术</b><b class='flag-5'>工控</b><b class='flag-5'>主板</b>内核更新与版本管理<b class='flag-5'>介绍</b>

    英创信息技术ARM9工控主板扩展矩阵键盘的方法

    键盘输入,仅需要一些数字键或功能键(比如方向键),此时可通过外扩矩阵键盘来实现。 1、矩阵键盘扩展硬件电路 英创ARM9工控主板可通过GPIO或精简ISA总线扩展矩阵键盘,通过GPIO扩展时,程序直接驱动IO作为扫描输入输出,比
    的头像 发表于 01-14 11:05 1363次阅读
    英创<b class='flag-5'>信息技术</b><b class='flag-5'>ARM9</b><b class='flag-5'>工控</b><b class='flag-5'>主板</b>扩展矩阵键盘的方法

    英创信息技术ARM9工控主板的SMS短信息应用介绍

    的应用越来越广泛,其中主要以GPRS数据通讯及SMS短信息方式为主。GPRS数据通讯是以TCP/IP方式进行通讯,GPRS模块发送SMS短信,是通过串口发送AT指令来实现。 英创公司基于ARM9工控
    的头像 发表于 01-14 11:45 1114次阅读