LuatOS-Air AT应用指南--FTP指令流程

1 概述
FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。

默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。模块ftp默认是被动模式,不支持主动模式,无法设置主动模式,公网下要想模块正常连接服务器,服务器肯定不能设置为主动模式,否则哪家模块都不能用。

2 相关AT指令介绍
2.1 设置 FTP 控制端口:AT+FTPPORT
语法规则:

命令类型 语法 返回 说明
设置命令 AT+FTPPORT= OK 正常返回
ERROR 输入格式有误
查询命令 AT+FTPPORT? +FTPPORT: OK
测试命令 AT+FTPPORT=? OK
参数定义:

参数 定义 取值 对取值的说明
FTP 控制端口号 1~65535 缺省值为 21
2.2 设置 FTP 主动或被动模式:AT+FTPMODE
语法规则:

命令类型 语法 返回 说明
设置命令 AT+FTPMODE= OK 正常返回
ERROR 输入格式有误
查询命令 AT+FTPMODE? +FTPMODE: OK
测试命令 AT+FTPMODE=? OK
参数定义:

参数 定义 取值 对取值的说明
FTP 主动被动模式 0 主动模式(暂不支持)
1 被动模式
2.3 设置 FTP 数据传输类型:AT+FTPTYPE
语法规则:

命令类型 语法 返回 说明
设置命令 AT+FTPTYPE= OK 正常返回
ERROR 输入格式有误
查询命令 AT+FTPTYPE? +FTPTYPE: OK
测试命令 AT+FTPTYPE=? OK
参数定义:

参数 定义 取值 对取值的说明
FTP 数据传输类型 “A” FTP ASCII 字符集
“I” FTP Binary 字符集
2.4 设置 FTP 输入类型:AT+FTPPUTOPT
语法规则:

命令类型 语法 返回 说明
设置命令 AT+FTPPUTOPT= OK 正常返回
ERROR 输入格式有误
查询命令 AT+FTPPUTOPT? +FTPPUTOPT: OK
测试命令 AT+FTPPUTOPT=? OK
参数定义:

参数 定义 取值 对取值的说明
FTP 数据传输类型 “APPE” 添加文件
“STOU” 存储唯一的文件
“STOR” 存储文件
2.5 设置 FTP 承载标识:AT+FTPCID
语法规则:

命令类型 语法 返回 说明
设置命令 AT+FTPCID= OK 正常返回
ERROR 输入格式有误
查询命令 AT+FTPCID? +FTPCID: OK
测试命令 AT+FTPCID=? OK
参数定义:

参数 定义 取值 对取值的说明
FTP 承载标识 1~3 同+SAPBR 中定义。缺省值为 0。
2.6 设置 FTP 下载续传:AT+FTPREST
语法规则:

命令类型 语法 返回 说明
设置命令 AT+FTPREST= OK 正常返回
ERROR 输入格式有误
查询命令 AT+FTPREST? +FTPREST: OK
测试命令 AT+FTPREST=? OK
参数定义:

参数 定义 取值 对取值的说明
要续传的断点
2.7 设置 FTP 服务器地址:AT+FTPSERV
语法规则:

命令类型 语法 返回 说明
设置命令 AT+FTPSERV= OK 正常返回
ERROR 输入格式有误
查询命令 AT+FTPSERV? +FTPSERV: OK
测试命令 AT+FTPSERV=? OK
参数定义:

参数 定义 取值 对取值的说明
FTP 服务器地址, IP 或域名 32-bit 十 进 制 数 , 用 . 分 开 , 形 式 如 : xxx.xxx.xxx.xxx。 如果是 DNS,则为长度不超过 49 的 ASCII 字符串。
2.8 设置 FTP 用户名称:AT+FTPUN
语法规则:

命令类型 语法 返回 说明
设置命令 AT+FTPUN= OK 正常返回
ERROR 输入格式有误
查询命令 AT+FTPUN? +FTPUN: OK
测试命令 AT+FTPUN=? OK
参数定义:

参数 定义 取值 对取值的说明
FTP 用户名 为长度不超过 49 的 ASCII 字符串。
2.9 设置 FTP 密码:AT+FTPPW
语法规则:

命令类型 语法 返回 说明
设置命令 AT+FTPPW= OK 正常返回
ERROR 输入格式有误
查询命令 AT+FTPPW? +FTPPW: OK
测试命令 AT+FTPPW=? OK
参数定义:

参数 定义 取值 对取值的说明
FTP 密码 为长度不超过 49 的 ASCII 字符串。
2.10 设置 FTP 下载文件名称:AT+FTPGETNAME
设置服务器端目标文件的名称。

语法规则:

命令类型 语法 返回 说明
设置命令 AT+FTPGETNAME= OK 正常返回
ERROR 输入格式有误
查询命令 AT+FTPGETNAME? +FTPGETNAME: OK
测试命令 AT+FTPGETNAME=? OK
参数定义:

参数 定义 取值 对取值的说明
FTP 下载文件名称 为长度不超过 99 的 ASCII 字符串。
2.11 设置 FTP 下载文件路径:AT+FTPGETPATH
本命令是设置目标文件在服务器端的路径。

语法规则:

命令类型 语法 返回 说明
设置命令 AT+FTPGETPATH= OK 正常返回
ERROR 输入格式有误
查询命令 AT+FTPGETPATH? +FTPGETPATH: OK
测试命令 AT+FTPGETPATH=? OK
参数定义:

参数 定义 取值 对取值的说明
FTP 下载文件路径 长度不超过 255 的 ASCII 字符串。
2.12 设置 FTP 上传文件名称:AT+FTPPUTNAME
设置将文件上传到服务器后的保存名称。

语法规则:

命令类型 语法 返回 说明
设置命令 AT+FTPPUTNAME= OK 正常返回
ERROR 输入格式有误
查询命令 AT+FTPPUTNAME? +FTPPUTNAME: OK
测试命令 AT+FTPPUTNAME=? OK
参数定义:

参数 定义 取值 对取值的说明
FTP 上传文件名称 长度不超过 99 的 ASCII 字符串。
2.13 设置 FTP 上传文件路径:AT+FTPPUTPATH
设置将文件上传到服务器后的保存目录。

语法规则:

命令类型 语法 返回 说明
设置命令 AT+FTPPUTPATH= OK 正常返回
ERROR 输入格式有误
查询命令 AT+FTPPUTPATH? +FTPPUTPATH: OK
测试命令 AT+FTPPUTPATH=? OK
参数定义:

参数 定义 取值 对取值的说明
FTP 上传文件路径 长度不超过 99 的 ASCII 字符串。
2.14 远程服务器上创建文件目录:AT+FTPMKD
语法规则:

命令类型 语法 返回 说明
执行命令 AT+FTPMKD OK +FTPMKD: 1,0 创建成功
OK +FTPMKD: 1, 创建失败
+CME ERROR: 如果是命令错误
测试命令 AT+FTPMKD=? OK
注意事项 执行命令创建的文件目录由命令AT+FTPGETPATH定义
参数定义:

参数 定义 取值 对取值的说明
错误码 与 AT+FTPGET 命令的定义相同
2.15 远程服务器上删除文件目录:AT+FTPRMD
语法规则:

命令类型 语法 返回 说明
执行命令 AT+FTPRMD OK +FTPRMD: 1,0 删除成功
OK +FTPRMD: 1, 删除失败
+CME ERROR: 如果是命令错误
测试命令 AT+FTPRMD=? OK
注意事项 执行命令删除的文件目录由命令AT+FTPGETPATH定义
参数定义:

参数 定义 取值 对取值的说明
错误码 与 AT+FTPGET 命令的定义相同
2.16 下载文件:AT+FTPGET
语法规则:

命令类型 语法 返回 说明
设置命令 AT+FTPGET=[,] OK 输入AT+FTPGET=1 的返回
+FTPGET:2, ………数据………… OK 输入: AT+FTPGET=2, 的返回
URC 上报 +FTPGET:1,1 输入AT+FTPGET=1后,有此上报,表示有数据了,第一个参数 1表示为1
+FTPGET:1, 输入AT+FTPGET=1后,有此上报,表示FTP下载失败,第一个参数1表示为1
+FTPGET:1,0 表示数据传输结束,第一个参数1表示为1
测试命令 AT+FTPGET=? OK
参数定义:

参数 定义 取值 对取值的说明
工作模式 1 打开 FTP 会话
2 读入 FTP 下载数据
请求读入的数据长度 1~1460
确认读入的数据长度 1~1460 可能小于。0 表示没有数据可以读入。
错误码 61 网络错误 net error
62 DNS 错误 DNS error
63 连接错误 connect error
64 超时 timeout
65 服务器错误 server error
66 操作禁止operation not allowed
70 应答错误 reply error
71 用户错误 user error
72 口令错误 password error
73 类型错误type error
74 保持错误 rest error
75 被动错误 passive error
76 主动错误active error
77 操作错误 operate error
78 上传错误 upload error
79 下载错误 download error
80~84 FTP SSL 连接错误
85 文件错误
86 主动退出
2.17 上传文件:AT+FTPPUT
语法规则:

命令类型 语法 返回 说明
设置命令 AT+FTPPUT=[,] OK 输入AT+FTPPUT=1的返回
+FTPPUT:2, ……… //input data here OK 输入: AT+FTPPUT=2, 的返回
OK +FTPPUT: 1,0 输入: AT+FTPPUT=2,0 的返回
URC 上报 +FTPPUT:1,1, 输入AT+FTPPUT=1后,有此上报,表示可以上传数据了此时通过输入AT+FTPPUT=2,上传数据第一个参数1表示为1
+FTPPUT:1,0 表示数据传输会话结束。第一个参数1表示为1
+FTPPUT:1, 如果=1,而且FTP会话失败。错误码定义请参考AT+FTPGET 错误码定义
测试命令 AT+FTPPUT=? OK
参数定义:

参数 定义 取值 对取值的说明
FTP 上传工作模式 1 打开 FTP 会话
2 写 FTP 上传数据
请求上传的数据长度 0-
确认可以上传的数据长度
单次可以上传的最大的长度,取决于网络状态
2.18 下载文件(扩展):AT+FTPEXTGET
语法规则:

命令类型 语法 返回 说明
设置命令 AT+FTPEXTGET= OK 当=0或1
AT+FTPEXTGET=, +FTPEXTGET:2, OK 当=2
AT+FTPEXTGET=,, +FTPEXTGET:3, …… //这里是输出到串口的数据 OK 当=3
查询命令 AT+FTPEXTGET? +FTPEXTGET: [,] OK
测试命令 AT+FTPEXTGET=? OK
URC上报 +FTPEXTGET:1,0 =1且FTPEXTGET结束,会有如此上报
+FTPEXTGET:1, =1且FTPEXTGET出错,会有如此上报。错误码定义请参考AT+FTPGET 错误码定义
+FTPEXTGET:2, =2
+FTPEXTGET:3, =3
注意事项 1) 当FTPEXTPUT =1时,不可使用本命令 2) 如果文件大小()<300KB,可以使用这个命令;如果文件大小()>=300KB,请使用缺省的FTPGET method (AT+FTPEXTGET=0) 3) 本命令的使用方法请参考本章最后一部分:使用方法举例
参数定义:

参数 定义 取值 对取值的说明
工作模式 0 使用缺省的FTPGET方法
1 使用扩展的FTPGET方法
2 保存下载的数据到文件中
3 输出下载的数据到串口
文件名 字符串型,最长64个字符
保存到文件的所有数据长度,用于mode 2 <302512 单位:字节
输出到串口的数据长度,用于mode 3 <302512 单位:字节
读取文件数据的起始位置,用于mode 3
读取长度,用于mode 3 单位:字节
FTPEXTGET的状态 0 不在FTPEXTGET过程中
1 处于FTPEXTGET过程

错误码 与AT+FTPGET命令的定义相同
2.19 上传文件(扩展):AT+FTPEXTPUT
语法规则:

命令类型 语法 返回 说明
设置命令 AT+FTPEXTPUT=[,,,] OK 当=0或1
+FTPEXTPUT: , …… //这里从串口输入数据 OK 当=2
测试命令 AT+FTPEXTPUT=? OK
注意事项 本命令的使用方法请参考本章最后一部分:使用方法举例
参数定义:

参数 定义 取值 对取值的说明
工作模式 0 使用缺省的FTPPUT方法
1 使用扩展的FTPPUT方法
2 将数据PUT到RAM
每次PUT的起始位置 0-300K 单位:byte
每次PUT的数据长度 0-300K 单位:byte
串口数据传输的超时时间 1000-1000000 单位:ms
2.20 下载文件并保存到文件系统中:AT+FTPGETTOFS
语法规则:

命令类型 语法 返回
设置命令 AT+FTPGETTOFS=,[,,

参数 定义 取值 对取值的说明
工作模式 0 不在FTPGETTOFS过程
1 处于FTPGETTOFS过程
文件保存的位置,是ROM还是SD卡。Disk1或Disk2可被AT+FSDRIVE获取 0 保存于ROM,文件夹为"Disk1:\user\ftp"
1 保存于SD卡,文件夹为"Disk2:\ftp"
文件名 字符串型,最长64个字符
自动重连次数 0-255 缺省值:3

命令类型 语法 返回
执行命令 AT+FTPPUTFRMFS=[,,

参数 定义 取值 对取值的说明
文件名 字符串型,由数字和字母组成,最长128字节
自动重连次数 0-255 缺省值:3

命令类型 语法 返回
设置命令 AT+FTPFILEPUT=[,] OK
测试命令 AT+FTPFILEPUT=? OK
注意事项 当FTPEXTPUT命令=1时,本命令不可用
2.23 获取远程服务器上文件目录:AT+FTPLIST
语法规则:

命令类型 语法 返回
执行命令 AT+FTPLIST=[,] 如果=1,则命令格式为: AT+FTPLIST=1 返回值为: OK或 +CME ERROR:
如果=2,则命令格式为: AT+FTPLIST=2, 返回值为: +FTPLIST:2, ….数据… OK
测试命令 AT+FTPLIST=? OK
URC上报 输入AT+FTPLIST=1后, 如果是一个成功的FTP会话,后续会有如下的URC上报: +FTPLIST:1,1 如果是FTP数据传输结束,后续会有如下的URC上报: +FTPLIST:1,0 如果FTP会话失败,后续会有如下的URC上报: +FTPLIST:1,
参数定义:

参数 定义 取值 对取值的说明
工作模式 1 打开FTP 获取文件目录会话
2 读取FTP 获取文件目录的数据
请求的数据的长度 1~1460
实际的数据长度 1~1460
同+FTPGET中定义
2.24 获取远程服务器上文件大小:AT+FTPSIZE
语法规则:

命令类型 语法 返回 说明
执行命令 AT+FTPSIZE OK +FTPSIZE: 1,0, 获取文件大小成功
OK +FTPSIZE: 1,,0 获取文件大小失败
+CME ERROR: 如果是命令错误
测试命令 AT+FTPSIZE=? OK
注意事项 文件由命令AT+FTPGETNAME和AT+FTPGETPATH指定
参数定义:

参数 定义 取值 对取值的说明
文件大小 单位:字节
错误码 与AT+FTPGET命令的定义相同
2.25 获取FTP状态:AT+FTPSTATE
语法规则:

命令类型 语法 返回
执行命令 AT+FTPSTATE +FTPSTATE: OK
测试命令 AT+FTPSTATE=? OK
参数定义:

参数 定义 取值 对取值的说明
工作状态 0 Idle
1 FTP会话进行中,包括FTPGET、FTPPUT、FTPDELE
2.26 保存FTP应用上下文:AT+FTPSCONT
语法规则:

命令类型 语法 返回 说明
查询命令 AT+FTPSCONT? +FTPSCONT: +FTPSERV: +FTPPORT: +FTPUN: +FTPPW: +FTPCID: +FTPMODE: +FTPTYPE: +FTPPUTOPT: +FTPREST: +FTPGETNAME: +FTPGETPATH: +FTPPUTNAME: +FTPPUTPATH: +FTPTIMEOUT: OK
执行命令 AT+FTPSCONT OK 将FTP上下文保存,等模块重启后,将自动载入上下文参数并生效
2.27 删除服务器上指定的文件:AT+FTPDELE
语法规则:

命令类型 语法 返回
执行命令 AT+FTPDELE OK
测试命令 AT+FTPDELE=? OK
URC上报 +FTPDELE:1,0 表示删除成功。第一个参数1表示FTP会话打开
+FTPDELE:1, 表示FTP文件删除失败。错误码定义请参考AT+FTPGET 错误码定义
注意事项 文件由命令AT+FTPGETNAME和AT+FTPGETPATH指定
2.28 退出当前FTP会话:AT+FTPQUIT
语法规则:

命令类型 语法 返回 说明
设置命令 AT+FTPQUIT OK 成功
ERROR 失败
测试命令 AT+FTPQUIT=? OK

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

l531798151

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值