域格移芯平台模块FTP下载应用

文章目录

  • 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上报:续传完成

相关推荐
古译汉书1 小时前
嵌入式笔记(个人总结)
数据结构·笔记·stm32·单片机·嵌入式硬件
小李独爱秋2 小时前
Cisco Packet Tracer仿真实验 12:运输层端口
网络·网络协议·计算机网络·智能路由器·仿真实验
xxp43212 小时前
Qt 网络编程 UDP通信
网络·网络协议·udp
bai5459362 小时前
STM32 定时器(Timer)
stm32·单片机·嵌入式硬件
草莓熊Lotso4 小时前
unordered_map/unordered_set 使用指南:差异、性能与场景选择
java·开发语言·c++·人工智能·经验分享·python·网络协议
二狗mao12 小时前
Uniapp使用websocket进行ai回答的流式输出
websocket·网络协议·uni-app
Bona Sun15 小时前
单片机手搓掌上游戏机(十四)—pico运行fc模拟器之电路连接
c语言·c++·单片机·游戏机
学生哥-_-15 小时前
STM32点亮WS2812 RGB灯板展示像素图片(一种较方便的取色值数据的方法)
stm32·单片机·嵌入式硬件
西欧伯爵16 小时前
模拟电路入门四
单片机·嵌入式硬件·集成电路