文章目录
- FTP通信协议介绍
- [FTP 下载核心指令速览](#FTP 下载核心指令速览)
- [实战示例:完整 FTP 下载流程](#实战示例:完整 FTP 下载流程)
-
- [1. 确认模块注册状态](#1. 确认模块注册状态)
- [2. 前置配置:建立网络承载](#2. 前置配置:建立网络承载)
- [3. 连接FTP服务器](#3. 连接FTP服务器)
- [4. 定位目标文件,查询目标文件大小](#4. 定位目标文件,查询目标文件大小)
- [5. 执行文件下载,读取文件数据](#5. 执行文件下载,读取文件数据)
- [6. 断点续传(可选,应对网络中断场景)](#6. 断点续传(可选,应对网络中断场景))
FTP通信协议介绍
FTP(File Transfer Protocol,文件传输协议)是一种用于在网络设备间传输文件的标准协议,核心作用是实现客户端与 FTP 服务器之间的文件上传、下载、目录管理等操作。
其中,客户端可以是 PC端软件、通信模块(如 域格移芯平台cat1 4G模块YM310 X09)等。
FTP 下载核心指令速览
- 承载配置类:AT+SAPBR(设置承载参数)、AT+FTPCID(绑定 FTP 承载标识)
- 服务器连接类:AT+FTPSERV(设置 FTP 服务器地址)、AT+FTPUN(用户名)、AT+FTPPW(密码)
- 文件操作类:AT+FTPGETPATH(下载路径)、AT+FTPGETNAME(目标文件名)、AT+FTPSIZE(文件大小查询)、AT+FTPGET(下载控制)
- 辅助查询类:AT+FTPLIST(目录查询)、AT+FTPSTATE(FTP 状态查询)
- 断点续传类:AT+FTPREST(设置续传断点)
实战示例:完整 FTP 下载流程
1. 确认模块注册状态
1、AT+CPIN?
------ 应返回ready。若不是,需要检查SIM卡接触情况。
AT+CPIN? 错误码
+CME ERROR: 10 ------ 卡不在位
+CME ERROR: 14 ------ SIM busy
2、AT+CSQ
------ 一般要在10以上。若不是,需要检查天线。
3、AT^SYSINFO
------ 第一位是2,第二位是2或3(即数据域要注册上)。若不是,需要核对SIM卡状态。
4、AT+CEREG?
------ 第二位参数应返回1或5,如0,1 或 0,5。若不是,需要核对SIM卡状态。

2. 前置配置:建立网络承载
设置承载类型,自动获取APN(模块注册网络后自动识别,无需手动填写,如示例写APN即可)
5、AT+SAPBR=3,1,"APN",""
------ 应返回OK
激活承载
6、AT+SAPBR=1,1
------ 应返回OK
查询承载状态(确认已连接并获取IP)
7、AT+SAPBR=2,1
------ 模块返回获取的IP地址,如+SAPBR: 1,1,"10.3.108.2"
第一个参数1表示cid
第二个参数1表示已连接
第三个为模块获取的IP地址

3. 连接FTP服务器
绑定FTP承载标识(与SAPBR的cid保持一致,默认1)
8、AT+FTPCID=1
------ 应返回OK,表示承载绑定成功
设置FTP服务器IP(也支持域名,如"ftp.example.com")
9、AT+FTPSERV="122.51.xxx.xx" 替换为实际服务器IP
------ 应返回OK,表示服务器地址配置成功
设置FTP用户名
10、AT+FTPUN="xxxx" // 替换为实际用户名
------ 应返回OK,表示用户名配置成功
设置FTP密码
11、AT+FTPPW="xxxx" // 替换为实际密码
------ 应返回OK,表示密码配置成功,此时已完成FTP服务器连接准备

4. 定位目标文件,查询目标文件大小
设置服务器端文件路径(示例为根目录,若文件在子目录需写为"/test/")
12、AT+FTPGETPATH="/"
OK // 路径配置成功
设置待下载文件名(示例为HelloX09.txt,需与服务器文件名完全一致)
13、AT+FTPGETNAME="HelloX09.txt"
OK // 文件名配置成功
查询服务器端文件大小(下载前执行,确认文件存在且获取总字节数)
14、AT+FTPSIZE // 模块将上报目标文件大小
OK
+FTPSIZE: 1,0,220
第一位1为cid
第二位0表示无错误
第三位220为文件大小(字节)
通过获取文件大小可以规划读取全部数据的次数等

5. 执行文件下载,读取文件数据
开启FTP下载会话(mode=1表示打开下载会话)
15、AT+FTPGET=1
OK
+FTPGET: 1,1
URC上报:表示有数据可读取,下载会话正常
读取文件数据(基于AT+FTPSIZE结果,根据情况请求需要的字节数据。示例为读取全部220个字节数据)
16、AT+FTPGET=2,220
+FTPGET: 2,220
模块实际读取220字节(与文件大小一致,无数据丢失)
Hello,X09!0123456789112345678921234567893123456789412345678951234567896123456789712345678981234567899123456789HelloAGAIN0123456789112345678921234567893123456789412345678951234567896123456789712345678981234567899123456789
URC上报:下载的文件内容(220字节,与服务器文件完全匹配)
OK // 数据读取成功
等待下载会话结束(模块自动上报URC)
+FTPGET: 1,0
URC上报:表示FTP下载会话正常结束,无数据残留

6. 断点续传(可选,应对网络中断场景)
若下载过程中因网络波动中断,可通过AT+FTPREST设置断点,从中断处继续下载,无需重新获取完整文件。
假设之前下载到第110字节时中断,设置续传断点(从第110字节开始)
AT+FTPREST=110
OK // 断点设置成功
// 2. 重新开启下载会话
AT+FTPGET=1
OK
+FTPGET: 1,1
URC上报:有数据可读取
// 3. 读取断点后的数据(剩余110字节,无需重复读取前110字节)
AT+FTPGET=2,110
+FTPGET: 2,110
实际读取110字节
HelloAGAIN0123456789112345678921234567893123456789412345678951234567896123456789712345678981234567899123456789
OK
等待会话结束
+FTPGET: 1,0
URC上报:续传完成
