文章目录
- FTP通信协议介绍
- [域格ASR平台cat1模块 FTP 核心指令](#域格ASR平台cat1模块 FTP 核心指令)
- [实战示例:完整 FTP 上传、下载流程](#实战示例:完整 FTP 上传、下载流程)
-
- [1. 确认模块注册状态](#1. 确认模块注册状态)
- [2. 配置并登录FTP服务器](#2. 配置并登录FTP服务器)
- [3. 选定目录往FTP服务器上传文件](#3. 选定目录往FTP服务器上传文件)
- [4. 从FTP服务器下载并读取数据](#4. 从FTP服务器下载并读取数据)
- [5. 退出FTP服务器](#5. 退出FTP服务器)
FTP通信协议介绍
FTP(File Transfer Protocol,文件传输协议)是一种用于在网络设备间传输文件的标准协议,核心作用是实现客户端与 FTP 服务器之间的文件上传、下载、目录管理等操作。
其中,客户端可以是 PC端软件、通信模块(如 域格ASR平台cat1 4G模块YM310 A09)等。
域格ASR平台cat1模块 FTP 核心指令
| AT指令 | 功能说明 |
|---|---|
| AT+QFTPCFG | FTP/FTPS 全局配置:账号、密码、传输模式、二进制 / ASCII、SSL 开关、超时、PDP 上下文 ID |
| AT+QFTPOPEN | 连接 FTP/FTPS 服务器(FTP 默认 21,FTPS 通常为 990) |
| AT+QFTPPWD | 查询当前远端目录 |
| AT+QFTPCWD | 切换 FTP 远端工作目录 |
| AT+QFTPSIZE | 查询服务器指定文件字节大小 |
| AT+QFTPPUT | 文件上传(COM 口实时上传 / 本地 UFS/SD 文件上传,支持分段续传) |
| AT+QFTPGET | 文件下载(COM 口输出 / 保存模组本地存储) |
| AT+QFTPCLOSE | 退出 FTP 服务器,断开控制链路 |
AT手册外指令说明
AT+QFTPPUT=<file_name>,<local_name>,<startpos>,<uploadlen>,<beof>
<file_name> 字符串类型。FTP(S)服务器文件名称。最大长度为 255 字节。
<local_name> 字符串类型。本地文件名称。最大长度为 255 字节。若该值为"COM:",将在 COM口输出数据。否则,数据将被保存至 UFS 或 SD 卡。文件上传成功后,可通过AT+QFDEL 删除。
<startpos> 整型。上传文件的起始位置。默认值:0。若指定和,则 表示继续上传到同一文件的数据位置。单位:字节。
<uploadlen> 整型。上传的数据长度。仅当<local_name>为"COM:"时有效。
当通过 COM 口上传的数据长度达到时,模块将退出数据模式。单位:字节。
<beof> 整型。上传的数据是否是最后一包。仅当<local_name>为"COM:"时有效。
0 不是最后一包数据。当数据长度达到<uploadlen>,模块将退出数据模式并响应+QFTPPUT: 0,<transferlen>。此时,请勿断开数据连接,因为剩余的数据需要上传到 FTP 上的同一文件
1 最后一包数据。当数据长度达到<uploadlen>,模块将退出数据模式,此时可关闭数据连接,将响应+QFTPPUT: 0,<transferlen>
<transferlen> 整型。成功传输数据的长度。单位:字节。
<err> 错误码。
<protocol_error> 整型。表示 FTP(S)服务器原始错误码。该错误码在 FTP(S)协议中定义,仅供参考。
实战示例:完整 FTP 上传、下载流程
1. 确认模块注册状态
AT+CPIN?
------ 应返回ready。若不是,需要检查SIM卡接触情况。
AT+CPIN? 错误码
+CME ERROR: 10 ------ 卡不在位
+CME ERROR: 14 ------ SIM busy
AT+CSQ
------ 一般要在10以上。若不是,需要检查天线。
AT^SYSINFO
------ 第一位是2,第二位是2或3(即数据域要注册上)。若不是,需要核对SIM卡状态。
AT+CEREG?
------ 第二位参数应返回1或5,如0,1 或 0,5。若不是,需要核对SIM卡状态。

2. 配置并登录FTP服务器
绑定FTP承载标识(与SAPBR的cid保持一致,默认1)
设置FTP用户名、密码
AT+QFTPCFG="account","xxxx","xxxx" // 替换为实际用户名、密码
------ 应返回OK,表示配置成功
登录FTP服务器
AT+QFTPOPEN="122.51.xxx.xx",21 // 替换为实际服务器IP
------ 应返回OK,并上报 +QFTPOPEN: 0,230

3. 选定目录往FTP服务器上传文件
获取FTP服务器端上当前目录
AT+QFTPPWD
OK // 回复OK后,模块继续上报当前目录,如
+QFTPPWD: 0,/
若需要更换目录,使用AT+QFTPCWD切换到需要的目录
选定目录后开始上传文件(示例为通过COM口将136字节数据上传到服务器保存为FTPPUTGET.txt)
+QFTPPUT="FTPPUTGET.txt","COM:",0,136,1
CONNECT // 模块回复CONNECT之后可以输入文件数据
+QFTPURC:1 // 输入完成后上报标记
OK
+QFTPPUT: 0,136 // 上传成功后模块上报结果及字节数

4. 从FTP服务器下载并读取数据
查询需要下载的文件大小
AT+QFTPSIZE="FTPPUTGET.txt"
OK
+QFTPSIZE: 0,136 // 模块回复文件字节数

读取文件数据(示例为直接读取到COM口)
AT+QFTPGET="FTPPUTGET.txt","COM:"
CONNECT // 模块回复CONNECT后吐出文件内容
+QFTPURC:1//完成标记
OK
+QFTPGET: 0,136 // 模块上报结果及读取的字节数

5. 退出FTP服务器
AT+QFTPCLOSE
OK // 模块回复OK后,上报相关URC
+QFTPCLOSE: 0,0
+QFTPURC:0
