FTP应用看这篇!合宙Air780EP低功耗4G模组AT开发示例

2024-08-21 04:20

本文主要是介绍FTP应用看这篇!合宙Air780EP低功耗4G模组AT开发示例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Air780EP是合宙的低功耗4G模组之一,支持全系列的AT指令以及LuatOS脚本二次开发。

本文应各位大佬邀请,详细讲解了Air780EP模组FTP应用的多个AT命令示例。

本文同样适用于以下型号:
Air700ECQ/Air700EAQ/Air700EMQ
Air780EQ/Air780EPA/Air780EPT/Air780EPS
Air780E/Air780EX/Air724UG…

合宙Air780EP模块采用LGA高集成封装,模块提供了多达109个SMT焊盘管脚,

采用了一系列低功耗技术,使得其在长连接待机状态下(如5分钟心跳)的功耗低至450微,除了支持MQTT等物联网常用协议外,Air780EP模块还支持TCP、UDP、HTTP、WebSocket、FTP、NTP等多种网络协议。

​一、 相关准备工作

1.1 硬件准备
 

合宙EVB_Air780EP开发板一套,包括天线、SIM卡;

USB线

PC电脑

1.2 软件准备

串口工具
如果没有准备,推荐使用LLCOM:
https://llcom.papapoi.com
 

AT固件下载
https://doc.openluat.com/article/5055

烧录教程
https://doc.openluat.com/wiki/21?wiki_page_id=6072
 

本文示例烧录的AT固件版本为:
AirM2M_780EP_LTE_AT_V1007

推荐选用:相关型号固件名称后面数字版本号最高的最新版本进行调试。

二、FTP应用基本流程 

2.1 开机操作
 

拉低powerkey 2秒进行开机,开机后通过串口循环发送AT直到收到OK。如果90秒没有收到OK,请拉低RESET引脚150ms以上。

或使用其他方法,详见开关机章节:
https://doc.openluat.com/wiki/21?wiki_page_id=2021

 

[09:34:58.117]收←◆
^MODE: 17,17+E_UTRAN Service+CGEV: ME PDN ACT 1[09:34:58.220]收←◆
+NITZ: 24/08/09,01:34:58+32,0[09:35:05.593]发→◇AT
□
[09:35:05.596]收←◆ATOK[09:35:06.906]发→◇AT
□
[09:35:06.911]收←◆ATOK

2.2 查询SIM卡状态

发送AT+CPIN?查询SIM卡状态,直到收到+CPIN: READY。如果10s内没有收到,建议重启模块。

[09:41:29.762]发→◇AT+CPIN?
□
[09:41:29.763]收←◆AT+CPIN?+CPIN: READYOK

2.3 查询是否注册网络

发送 AT+CGATT? 查询是否注册网络:

注册成功:
若返回+CGATT: 1即为注册成功,在正常情况下注册时间不会超过两分钟。如果超过两分钟没有注册,则可以通过 +CFUN 指令进入飞行模式,等待五秒后退出飞行模式再查询,或者直接重启模块。

未注册成功:
若返回+CGATT: 0即为没有注册成功,解决方法参考本文第3小节3.1【常见问题】。

[09:42:48.348]发→◇AT+CGATT?
□
[09:42:48.351]收←◆AT+CGATT?+CGATT: 1OK

2.4 配置网络

发送AT+CSTT配置网络,非私有APN以外Cat.1的固件支持根据卡自动配置APN,直接输入AT+CSTT即可,模块会按照自动获取的APN设置CSTT的APN。

[10:39:13.204]发→◇AT+CSTT
□
[10:39:13.206]收←◆AT+CSTTOK

2.5 激活网络

发送AT+CIICR 激活网络,在IP START的状态使用AT+CIICR激活网络。

[10:41:01.249]发→◇AT+CIICR
□
[10:41:01.254]收←◆AT+CIICROK

2.6 查询是否获取IP

发送 AT+CIFSR 查询是否获取IP:

  • 成功则可以开始配置TCP连接;

  • 不成功则使用AT+CIPSHUT关闭移动网络,从 AT+CSTT重新进行。

  • 一定要查询一次,再进行服务器连接。

[10:41:22.408]发→◇AT+CIFSR
□
[10:41:22.414]收←◆AT+CIFSR10.222.163.213

三、FTP GET示例

如果不理解AT命令含义,可参考AT指令手册说明:

AT指令手册下载链接: https://doc.openluat.com/article/4985

最新示例下载:

https://doc.openluat.com/wiki/21?wiki_page_id=6607

[10:45:05.552]发→◇AT+SAPBR=3,1,"CONTYPE","GPRS"			//设置FTP功能的承载类型
□
[10:45:05.558]收←◆AT+SAPBR=3,1,"CONTYPE","GPRS"OK[10:45:14.270]发→◇AT+SAPBR=3,1,"APN",""					//设置PDP承载之APN参数
□ 														 //模块注册网络后会从网络自动获取<apn>并激
[10:45:14.272]收←◆AT+SAPBR=3,1,"APN",""					//活一个PDP上下文,用于RNDIS上网使用//此<apn>可以通过AT+CGDCONT?来查询//所以输入AT+SAPBR=3,<cid>,"APN",""即//可,模块内部会按照自动获取的<apn>来设置//APN
OK[10:45:24.765]发→◇AT+SAPBR=1,1							//激活该承载的GPRS PDP上下文
□
[10:45:24.767]收←◆AT+SAPBR=1,1OK[10:45:32.192]发→◇AT+SAPBR=2,1							//查询下承载的状态
□
[10:45:32.196]收←◆AT+SAPBR=2,1+SAPBR: 1,1,"10.222.163.213"							//第一个参数1表示cid//第二个参数1表示已经连接
OK														//第三个参数表示模块获取的IP地址[10:45:40.010]发→◇AT+FTPCID=1						  //设置cid
□
[10:45:40.011]收←◆AT+FTPCID=1OK[10:54:08.163]发→◇AT+FTPSERV="xxx.xxx.xxx"			//设置服务器ip地址,也可以使用域名。
□													 //本文只是举例,请填写自己的服务器地址,不要照抄。
[10:54:08.167]收←◆AT+FTPSERV="xxx.xxx.xxx"OK[10:54:24.205]发→◇AT+FTPUN="user"					//设置服务器用户名。请填写自己FTP服务器的用户名,不要照抄
□
[10:54:24.207]收←◆AT+FTPUN="user"OK[10:54:47.915]发→◇AT+FTPPW="password"				//输入密码。请填写自己FTP服务器的密码,不要照抄
□
[10:54:47.918]收←◆AT+FTPPW="password"OK[10:54:56.725]发→◇AT+FTPGETPATH="/"					//设置下载文件的路径
□
[10:54:56.727]收←◆AT+FTPGETPATH="/"OK[10:55:03.346]发→◇AT+FTPLIST=1						//打开 FTP 获取文件目录会话
□
[10:55:03.349]收←◆AT+FTPLIST=1OK[10:55:03.982]收←◆									//第一个参数1,表示模式1,即打开 FTP 获取文件目录会话
+FTPLIST: 1,1										 //第二个参数1,表示是一个成功的FTP会话[10:57:51.768]发→◇AT+FTPLIST=2,1460					//读取 FTP 获取文件目录的数据,请求的数据长度为1460字节
□
[10:57:51.774]收←◆AT+FTPLIST=2,1460//第一个参数2,表示模式2,即读取 FTP 获取文件目录的数据
+FTPLIST: 2,1460										//第二个参数1460,表示实际的数据长度为1460
-rw-------    1 ftp      ftp          2918 Jul 22 07:18 1.amr		//第一个字符表示文件类型
-rw-------    1 ftp      ftp            62 Jul 22 04:09 1.txt		//-:普通文件 d:文件目录
-rw-------    1 ftp      ftp            62 Jul 23 02:34 12221.txt	//后面每三个字符看作为一组
-rw-------    1 ftp      ftp            62 Jul 22 06:07 122210.txt	//r 是可读,w 是可写, x 是可执行
-rw-------    1 ftp      ftp            62 Jul 22 06:08 122211.txt	//因此rw-为可读、可写、不可执行
-rw-------    1 ftp      ftp            62 Jul 22 06:09 122212.txt
-rw-------    1 ftp      ftp            62 Jul 22 06:10 122213.txt
-rw-------    1 ftp      ftp            62 Jul 22 06:10 122214.txt
-rw-------    1 ftp      ftp            62 Jul 22 04:27 122215.txt
-rw-------    1 ftp      ftp            62 Jul 22 04:27 122216.txt
-rw-------    1 ftp      ftp            62 Jul 22 04:28 122217.txt
-rw-------    1 ftp      ftp            62 Jul 22 04:29 122218.txt
-rw-------    1 ftp      ftp            62 Jul 22 04:30 122219.txt
-rw-------    1 ftp      ftp            62 Aug 03 00:31 12222.txt
-rw-------    1 ftp      ftp            62 Jul 22 04:30 122220.txt
-rw-------    1 ftp      ftp            62 Jul 22 04:31 122221.txt
-rw-------    1 ftp      ftp            62 Jul 22 04:32 122222.txt
-rw-------    1 ftp      ftp            62 Jul 22 04:33 122223.txt
-rw-------    1 ftp      ftp            62 Jul 22 04:34 122224.txt
-rw-------    1 ftp      ftp            62 Jul 22 04:34 122225.txt
-rw-------    1 ftp      ftp            62 Jul 22 04:35 122226.txt
-rw-------    1 ftp      ftp            62 J
OK[10:57:58.930]发→◇AT+FTPQUIT				//退出FTPLIST会话,才能开始后续的会话。退出FTPLIST会话的方法有两种
□										 //一是等待+FTPLIST:1,0上报,二是主动退出FTPLIST会话
[10:57:58.935]收←◆AT+FTPQUIT				//这里采用的是主动退出FTPLIST会话			OK[10:57:59.038]收←◆
+FTPLIST: 1,86								//第一参数1表示打开FTP会话,第二个参数86表示主动退出[10:58:08.907]发→◇AT+FTPGETNAME="1.txt"		//设置下载文件的名称
□
[10:58:08.909]收←◆AT+FTPGETNAME="1.txt"OK[10:58:14.767]发→◇AT+FTPGET=1				//开始FTP下载会话
□
[10:58:14.769]收←◆AT+FTPGET=1OK[10:58:15.324]收←◆
+FTPGET: 1,1								//这个是URC上报,表示有数据了[10:58:22.573]发→◇AT+FTPGET=2,20			  //读入20个数据
□
[10:58:22.576]收←◆AT+FTPGET=2,20+FTPGET: 2,20								//确定读到的是20个数据
23noianfdiasfhnpqw39
OK[10:58:29.930]收←◆
+FTPGET: 1,0								//等一段时间会提示FTP下载会话结束[10:59:33.285]发→◇AT+FTPREST=6			  //如果FTP连接或会话意外关闭,还可以断点续传。
□										   //从断掉的点开始下载。
[10:59:33.286]收←◆AT+FTPREST=6OK[10:59:40.666]发→◇AT+FTPGET=1
□
[10:59:40.668]收←◆AT+FTPGET=1OK[10:59:41.264]收←◆
+FTPGET: 1,1								//+FTPGET: 1,1表示有数据可读[10:59:48.334]发→◇AT+FTPQUIT					//也可以在提示 +FTPGET: 1,0 前主动用 AT+FTPQUIT 退出当前FTP会话
□
[10:59:48.339]收←◆AT+FTPQUITOK[10:59:48.428]收←◆
+FTPGET: 1,86

 

四、FTP PUT演示

[17:10:26.322]发→◇AT+SAPBR=3,1,"CONTYPE","GPRS"			//设置FTP功能的承载类型
□
[17:10:26.324]收←◆AT+SAPBR=3,1,"CONTYPE","GPRS"OK[17:10:32.520]发→◇AT+SAPBR=3,1,"APN",""					//设置PDP承载之APN参数
□														 //模块注册网络后会从网络自动获取<apn>并激
[17:10:32.523]收←◆AT+SAPBR=3,1,"APN",""					//活一个PDP上下文,用于RNDIS上网使用//此<apn>可以通过AT+CGDCONT?来查询//所以输入AT+SAPBR=3,<cid>,"APN",""即//可,模块内部会按照自动获取的<apn>来设置//APN
OK[17:10:37.791]发→◇AT+SAPBR=1,1							//激活该承载的GPRS PDP上下文
□
[17:10:37.793]收←◆AT+SAPBR=1,1OK[17:10:44.588]发→◇AT+SAPBR=2,1							//查询下承载的状态
□
[17:10:44.594]收←◆AT+SAPBR=2,1+SAPBR: 1,1,"10.175.110.238"							 //第一个参数1表示cid//第二个参数1表示已经连接
OK														 //第三个参数表示模块获取的IP地址[17:10:50.727]发→◇AT+FTPCID=1							//设置cid
□
[17:10:50.730]收←◆AT+FTPCID=1OK[17:10:57.967]发→◇AT+FTPSERV="xxx.xxx.xxx"			//设置服务器ip地址,也可以使用域名。
□													 //本文只是举例,请填写自己的服务器地址,不要照抄。
[17:10:57.970]收←◆AT+FTPSERV="xxx.xxx.xxx"OK[17:11:04.275]发→◇AT+FTPUN="user"					//设置服务器用户名。请填写自己FTP服务器的用户名,不要照抄
□
[17:11:04.279]收←◆AT+FTPUN="user"OK[17:11:10.050]发→◇AT+FTPPW="password"				//输入密码。请填写自己FTP服务器的密码,不要照抄
□
[17:11:10.054]收←◆AT+FTPPW="password"OK[17:11:17.746]发→◇AT+FTPPUTNAME="1222.txt"			//设置上传文件的名称
□
[17:11:17.748]收←◆AT+FTPPUTNAME="1222.txt"OK[17:11:26.040]发→◇AT+FTPPUTPATH="/"					//设置上传文件的路径
□
[17:11:26.041]收←◆AT+FTPPUTPATH="/"OK[17:11:31.736]发→◇AT+FTPPUT=1				//第一个参数1表示打开FTP会话
□
[17:11:31.739]收←◆AT+FTPPUT=1OK[17:11:32.648]收←◆
+FTPPUT: 1,1,1360							//这是URC上报,表示可以上传数据了,单次上传的最大长度为1360[17:11:42.846]发→◇AT+FTPPUT=2,7			//第一个参数2表示写FTP上传数据
□										 //第二个参数7表示数据
[17:11:42.849]收←◆AT+FTPPUT=2,7+FTPPUT: 2,7[17:12:18.327]发→◇1234567				//输入7个字符后,会返回OK,表示输入结束,已经上传。
□
[17:12:18.333]收←◆
OK[17:12:50.135]收←◆+FTPPUT: 1,0							  //等待一段时间不动作,会提示FTP PUT会话结束发→◇AT+FTPQUIT				   			//也可以在提示 +FTPPUT: 1,0 之前用AT+FTPQUIT主动结束会话
□
收←◆AT+FTPQUITOK+FTPPUT: 1,86

五、FTP EXTGET演示

[16:08:25.077]发→◇AT+SAPBR=3,1,"CONTYPE","GPRS"			//设置FTP功能的承载类型
□
[16:08:25.078]收←◆AT+SAPBR=3,1,"CONTYPE","GPRS"OK[16:08:31.227]发→◇AT+SAPBR=3,1,"APN",""					//设置PDP承载之APN参数
□														 //模块注册网络后会从网络自动获取<apn>并激
[16:08:31.229]收←◆AT+SAPBR=3,1,"APN",""				   //活一个PDP上下文,用于RNDIS上网使用//此<apn>可以通过AT+CGDCONT?来查询//所以输入AT+SAPBR=3,<cid>,"APN",""即//可,模块内部会按照自动获取的<apn>来设置//APN
OK[16:08:38.286]发→◇AT+SAPBR=1,1							//激活该承载的GPRS PDP上下文
□
[16:08:38.289]收←◆AT+SAPBR=1,1OK[16:08:44.368]发→◇AT+SAPBR=2,1							//查询下承载的状态
□
[16:08:44.371]收←◆AT+SAPBR=2,1+SAPBR: 1,1,"10.204.54.96"								 //第一个参数1表示cid//第二个参数1表示已经连接
OK														 //第三个参数表示模块获取的IP地址[16:08:51.113]发→◇AT+FTPCID=1							//设置cid
□
[16:08:51.115]收←◆AT+FTPCID=1OK[16:09:02.089]发→◇AT+FTPSERV="xxx.xxx.xxx"			//设置服务器ip地址,也可以使用域名。
□
[16:09:02.094]收←◆AT+FTPSERV="xxx.xxx.xxx"OK[16:09:08.137]发→◇AT+FTPUN="user"					//设置服务器用户名。请填写自己FTP服务器的用户名,不要照抄
□
[16:09:08.140]收←◆AT+FTPUN="user"OK[16:09:13.357]发→◇AT+FTPPW="password"				//输入密码。请填写自己FTP服务器的密码,不要照抄
□
[16:09:13.361]收←◆AT+FTPPW="password"OK[16:09:28.889]发→◇AT+FTPGETNAME="TEST2.txt"			//设置下载文件的名字
□													 //(请注意:FTPEXTGET命令只支持小于300K的文件的下载)
[16:09:28.892]收←◆AT+FTPGETNAME="TEST2.txt"OK[16:09:37.956]发→◇AT+FTPGETPATH="/"					//设置下载文件所在的文件夹
□
[16:09:37.962]收←◆AT+FTPGETPATH="/"OK[16:09:46.180]发→◇AT+FTPEXTGET=1						//开始FTP下载
□
[16:09:46.182]收←◆AT+FTPEXTGET=1OK//在此之前可以通过AT+FTPEXTGET?查询下载了多少字节
[16:09:46.813]收←◆								//有这个URC上报,表示文件下载完毕,可以保存或读取了
+FTPEXTGET: 1,0[16:12:14.167]发→◇AT+FTPEXTGET=2,hello			//保存的文件名为 hello
□
[16:12:14.169]收←◆AT+FTPEXTGET=2,hello[16:12:14.243]收←◆
+FTPEXTGET: 2,62OK[16:13:32.116]发→◇AT+FTPEXTGET=3,0,62			//将数据显示在串口
□
[16:13:32.119]收←◆AT+FTPEXTGET=3,0,62+FTPEXTGET: 3,62
23noianfdiasfhnpqw39fhawe;fuibnnpw3fheaios;fna;osfhisao;fadsfl    //这是显示在串口的数据
OK[16:13:44.742]发→◇AT+FTPEXTGET=0					//设置 FTPEXTGET 模式关闭
□
[16:13:44.744]收←◆AT+FTPEXTGET=0OK[16:13:58.079]发→◇AT+FTPEXTGET=4					//流式获取数据
□
[16:13:58.085]收←◆AT+FTPEXTGET=4OK[16:13:58.602]收←◆
+FTPEXTGET: 4,62								//有数据上报[16:14:13.951]发→◇AT+FTPEXTGET=4,62			   //读数据
□
[16:14:13.953]收←◆AT+FTPEXTGET=4,62				+FTPEXTGET: 4,62
23noianfdiasfhnpqw39fhawe;fuibnnpw3fheaios;fna;osfhisao;fadsfl		//这是显示在串口的数据
OK

 六、FTP EXTPUT演示

[17:18:09.148]发→◇AT+SAPBR=3,1,"CONTYPE","GPRS"			//设置FTP功能的承载类型
□
[17:18:09.150]收←◆AT+SAPBR=3,1,"CONTYPE","GPRS"OK[17:18:14.878]发→◇AT+SAPBR=3,1,"APN",""					//设置PDP承载之APN参数
□														 //模块注册网络后会从网络自动获取<apn>并激
[17:18:14.881]收←◆AT+SAPBR=3,1,"APN",""					//活一个PDP上下文,用于RNDIS上网使用//此<apn>可以通过AT+CGDCONT?来查询//所以输入AT+SAPBR=3,<cid>,"APN",""即//可,模块内部会按照自动获取的<apn>来设置//APN
OK[17:18:20.910]发→◇AT+SAPBR=1,1							//激活该承载的GPRS PDP上下文
□
[17:18:20.914]收←◆AT+SAPBR=1,1OK[17:18:28.103]发→◇AT+SAPBR=2,1							//查询下承载的状态
□
[17:18:28.105]收←◆AT+SAPBR=2,1+SAPBR: 1,1,"10.132.148.95"								 //第一个参数1表示cid//第二个参数1表示已经连接
OK														 //第三个参数表示模块获取的IP地址[17:18:35.081]发→◇AT+FTPCID=1							//设置cid
□
[17:18:35.084]收←◆AT+FTPCID=1OK[17:18:54.041]发→◇AT+FTPSERV="xxx.xxx.xxx"			//设置服务器ip地址,也可以使用域名。
□
[17:18:54.045]收←◆AT+FTPSERV="xxx.xxx.xxx"OK[17:18:59.532]发→◇AT+FTPUN="user"					//设置服务器用户名。请填写自己FTP服务器的用户名,不要照抄
□
[17:18:59.535]收←◆AT+FTPUN="user"OK[17:19:04.704]发→◇AT+FTPPW="password"				//输入密码。请填写自己FTP服务器的密码,不要照抄
□
[17:19:04.709]收←◆AT+FTPPW="password"OK[17:19:18.744]发→◇AT+FTPPUTPATH="/"					//设置将文件上传到服务器后的保存目录。
□
[17:19:18.748]收←◆AT+FTPPUTPATH="/"OK[17:19:25.070]发→◇AT+FTPPUTNAME="TEST8861.txt"		//设置将文件上传到服务器后的保存名称。
□
[17:19:25.072]收←◆AT+FTPPUTNAME="TEST8861.txt"OK[17:19:32.621]发→◇AT+FTPEXTPUT=1						//设置使用扩展方式进行FTPPUT
□
[17:19:32.624]收←◆AT+FTPEXTPUT=1OK[17:19:56.924]发→◇AT+FTPEXTPUT=2,0,5,10000			//将文件数据从串口输入到模块 RAM。
□													 //第2个参数是 offset,第3个参数是数据长度,
[17:19:56.926]收←◆AT+FTPEXTPUT=2,0,5,10000		    //第 4 个参数是超时时间10s+FTPEXTPUT: 0,5
[17:20:01.011]发→◇12345								//这里输入五个字符数据
□
[17:20:01.014]收←◆
OK[17:20:17.514]发→◇AT+FTPEXTPUT=2,5,7,10000			//这次 offset 是 5,长度为 7
□
[17:20:17.516]收←◆AT+FTPEXTPUT=2,5,7,10000+FTPEXTPUT: 5,7
[17:20:19.472]发→◇67890AB							//这里输入七个字符数据
□
[17:20:19.475]收←◆
OK[17:20:33.167]发→◇AT+FTPPUT=1						//将 RAM 中的文件传到 FTP 服务器
□
[17:20:33.170]收←◆AT+FTPPUT=1OK[17:20:39.505]收←◆
+FTPPUT: 1,0										 //等一段时间会提示FTP上传会话结束。此时查看//服务器/TEST8861.txt,看到的的内容是://1234567890AB
[17:21:29.770]发→◇AT+FTPEXTPUT=0						//改为普通的FTP PUT模式
□
[17:21:29.771]收←◆AT+FTPEXTPUT=0OK

 七、FTP GET TOFS演示

[14:18:34.930]发→◇AT+SAPBR=3,1,"CONTYPE","GPRS"		//设置FTP功能的承载类型
□
[14:18:34.934]收←◆AT+SAPBR=3,1,"CONTYPE","GPRS"OK[14:18:41.015]发→◇AT+SAPBR=3,1,"APN",""				//设置PDP承载之APN参数
□													 //模块注册网络后会从网络自动获取<apn>并激
[14:18:41.016]收←◆AT+SAPBR=3,1,"APN",""				//活一个PDP上下文,用于RNDIS上网使用//此<apn>可以通过AT+CGDCONT?来查询//所以输入AT+SAPBR=3,<cid>,"APN",""即//可,模块内部会按照自动获取的<apn>来设置//APN
OK[14:19:23.138]发→◇AT+SAPBR=1,1						//激活该承载的GPRS PDP上下文
□
[14:19:23.142]收←◆AT+SAPBR=1,1OK[14:19:29.676]发→◇AT+SAPBR=2,1						//查询下承载的状态
□
[14:19:29.679]收←◆AT+SAPBR=2,1+SAPBR: 1,1,"10.140.39.84"							//第一个参数1表示cid//第二个参数1表示已经连接
OK													//第三个参数表示模块获取的IP地址[14:19:37.078]发→◇AT+FTPCID=1					  //设置cid
□
[14:19:37.081]收←◆AT+FTPCID=1OK[14:19:47.572]发→◇AT+FTPSERV="xxx.xxx.xxx"			//设置服务器ip地址,也可以使用域名。
□
[14:19:47.578]收←◆AT+FTPSERV="xxx.xxx.xxx"OK[14:19:53.018]发→◇AT+FTPUN="user"					//设置服务器用户名。请填写自己FTP服务器的用户名,不要照抄
□
[14:19:53.023]收←◆AT+FTPUN="user"OK[14:19:59.655]发→◇AT+FTPPW="password"				//输入密码。请填写自己FTP服务器的密码,不要照抄
□
[14:19:59.656]收←◆AT+FTPPW="password"OK[14:20:10.163]发→◇AT+FTPGETNAME="TEST.mp3"			//设置服务器端目标文件的名称。
□
[14:20:10.166]收←◆AT+FTPGETNAME="TEST.mp3"OK[14:20:19.207]发→◇AT+FTPGETPATH="/"					//设置目标文件在服务器端的路径。
□
[14:20:19.213]收←◆AT+FTPGETPATH="/"OK[14:20:27.778]发→◇AT+FTPGETTOFS=0,"TEST-1.mp3"		//开始下载,并存于本地ROM中。都只能指定文件名,
□													  //不能指定路径,因为存放的路径是固定的
[14:20:27.780]收←◆AT+FTPGETTOFS=0,"TEST-1.mp3"		//这种下载方式支持自动断点续传OK[14:20:33.881]发→◇AT+FTPGETTOFS?						//查询下载情况
□
[14:20:33.884]收←◆AT+FTPGETTOFS?+FTPGETTOFS: 1,245900,207715						//已下载245900字节,207715字节已被存入文件系统OK[14:20:40.889]收←◆
+FTPGETTOFS: 0,245900								//下载成功,总共下载了多少字节。可用文件系统//命令对文件进行操作
[14:20:44.743]发→◇AT+FSLS=C:/USER/FTP/			   //查询保存的文件
□
[14:20:44.745]收←◆AT+FSLS=C:/USER/FTP/hello
TEST-1.mp3OK[14:20:55.535]发→◇AT+CAUDPLAY=1,"C:/USER/FTP/TEST-1.mp3"			//播放保存的文件
□
[14:20:55.538]收←◆AT+CAUDPLAY=1,"C:/USER/FTP/TEST-1.mp3"OK[14:21:04.364]收←◆
+CAUDPLAY: 1,600												//播放结束

 八、FTP PUT FRMFS演示

[14:32:04.216]发→◇AT+SAPBR=3,1,"CONTYPE","GPRS"			//设置FTP功能的承载类型
□
[14:32:04.219]收←◆AT+SAPBR=3,1,"CONTYPE","GPRS"OK[14:32:10.851]发→◇AT+SAPBR=3,1,"APN",""				//设置PDP承载之APN参数
□													 //模块注册网络后会从网络自动获取<apn>并激
[14:32:10.855]收←◆AT+SAPBR=3,1,"APN",""				//活一个PDP上下文,用于RNDIS上网使用//此<apn>可以通过AT+CGDCONT?来查询//所以输入AT+SAPBR=3,<cid>,"APN",""即//可,模块内部会按照自动获取的<apn>来设置//APN
OK[14:32:18.205]发→◇AT+SAPBR=1,1						//激活该承载的GPRS PDP上下文
□
[14:32:18.211]收←◆AT+SAPBR=1,1OK[14:32:25.052]发→◇AT+SAPBR=2,1						//查询下承载的状态
□
[14:32:25.055]收←◆AT+SAPBR=2,1+SAPBR: 1,1,"10.135.31.160"							//第一个参数1表示cid//第二个参数1表示已经连接
OK													//第三个参数表示模块获取的IP地址[14:32:32.560]发→◇AT+FTPCID=1						//设置cid
□
[14:32:32.562]收←◆AT+FTPCID=1OK[14:32:42.062]发→◇AT+FTPSERV="xxx.xxx.xxx"			//设置服务器ip地址,也可以使用域名。
□
[14:32:42.065]收←◆AT+FTPSERV="xxx.xxx.xxx"OK[14:32:47.758]发→◇AT+FTPUN="user"					//设置服务器用户名。请填写自己FTP服务器的用户名,不要照抄
□
[14:32:47.761]收←◆AT+FTPUN="user"OK[14:32:53.616]发→◇AT+FTPPW="password"				//输入密码。请填写自己FTP服务器的密码,不要照抄
□
[14:32:53.621]收←◆AT+FTPPW="password"OK[14:33:04.781]发→◇AT+FTPPUTPATH="/"					//设置将文件上传到服务器后的保存目录。
□
[14:33:04.784]收←◆AT+FTPPUTPATH="/"OK[14:33:11.783]发→◇AT+FTPPUTNAME="TEST001.txt"		//设置将文件上传到服务器后的保存名称。
□
[14:33:11.785]收←◆AT+FTPPUTNAME="TEST001.txt"OK[14:33:21.305]发→◇AT+FTPPUTFRMFS="C:/USER/FTP/TEST-1.txt"	//将C:\USER\FTP\TEST-1.txt的文件传到服务器
□
[14:33:21.310]收←◆AT+FTPPUTFRMFS="C:/USER/FTP/TEST-1.txt"OK															 //上传结束+FTPPUTFRMFS: 0,41580

九、FTP FILE PUT演示 

 

[14:45:03.380]发→◇AT+SAPBR=3,1,"CONTYPE","GPRS"			//设置FTP功能的承载类型
□
[14:45:03.384]收←◆AT+SAPBR=3,1,"CONTYPE","GPRS"OK[14:45:10.057]发→◇AT+SAPBR=3,1,"APN",""					//设置PDP承载之APN参数
□													 	 //模块注册网络后会从网络自动获取<apn>并激
[14:45:10.060]收←◆AT+SAPBR=3,1,"APN",""				   //活一个PDP上下文,用于RNDIS上网使用//此<apn>可以通过AT+CGDCONT?来查询//所以输入AT+SAPBR=3,<cid>,"APN",""即//可,模块内部会按照自动获取的<apn>来设置//APN
OK[14:45:15.802]发→◇AT+SAPBR=1,1						   //激活该承载的GPRS PDP上下文
□
[14:45:15.804]收←◆AT+SAPBR=1,1OK[14:45:22.535]发→◇AT+SAPBR=2,1						  //查询下承载的状态
□
[14:45:22.538]收←◆AT+SAPBR=2,1+SAPBR: 1,1,"10.140.9.237"								//第一个参数1表示cid//第二个参数1表示已经连接
OK														//第三个参数表示模块获取的IP地址[14:45:31.271]发→◇AT+FTPCID=1						   //设置cid
□
[14:45:31.274]收←◆AT+FTPCID=1OK[14:45:41.538]发→◇AT+FTPSERV="xxx.xxx.xxx"			//设置服务器ip地址,也可以使用域名。
□
[14:45:41.542]收←◆AT+FTPSERV="xxx.xxx.xxx"OK[14:45:46.605]发→◇AT+FTPUN="user"					//设置服务器用户名。请填写自己FTP服务器的用户名,不要照抄
□
[14:45:46.608]收←◆AT+FTPUN="user"OK[14:45:51.856]发→◇AT+FTPPW="password"				//输入密码。请填写自己FTP服务器的密码,不要照抄
□
[14:45:51.858]收←◆AT+FTPPW="password"OK[14:46:06.258]发→◇AT+FTPPUTPATH="/"					//设置将文件上传到服务器后的保存目录。
□
[14:46:06.260]收←◆AT+FTPPUTPATH="/"OK[14:46:14.817]发→◇AT+FTPPUTNAME="TEST_80.txt"		//传到服务器后保存的文件名
□
[14:46:14.820]收←◆AT+FTPPUTNAME="TEST_80.txt"OK[14:46:23.361]发→◇AT+FTPFILEPUT=1,"C:/USER/FTP/TEST-1.txt"	//将C:\USER\FTP\TEST-1.txt加载到内存
□
[14:46:23.363]收←◆AT+FTPFILEPUT=1,"C:/USER/FTP/TEST-1.txt"OK[14:46:29.413]发→◇AT+FTPPUT=1						//开始上传
□
[14:46:29.417]收←◆AT+FTPPUT=1OK[14:47:13.009]收←◆
+FTPPUT: 1,0										  //上传结束[14:48:14.954]发→◇AT+FTPFILEPUT=0					//结束FTPFILEPUT模式
□
[14:48:14.956]收←◆AT+FTPFILEPUT=0OK

十、FTP远程创建/删除目录(文件)

[16:22:14.409]发→◇AT+SAPBR=3,1,"CONTYPE","GPRS"			//设置FTP功能的承载类型
□
[16:22:14.412]收←◆AT+SAPBR=3,1,"CONTYPE","GPRS"OK[16:22:23.260]发→◇AT+SAPBR=3,1,"APN",""					//设置PDP承载之APN参数
□													 	 //模块注册网络后会从网络自动获取<apn>并激
[16:22:23.262]收←◆AT+SAPBR=3,1,"APN",""				   //活一个PDP上下文,用于RNDIS上网使用//此<apn>可以通过AT+CGDCONT?来查询//所以输入AT+SAPBR=3,<cid>,"APN",""即//可,模块内部会按照自动获取的<apn>来设置//APN
OK[16:22:33.227]发→◇AT+SAPBR=1,1						   //激活该承载的GPRS PDP上下文
□
[16:22:33.229]收←◆AT+SAPBR=1,1OK[16:22:41.563]发→◇AT+SAPBR=2,1						   //查询下承载的状态
□
[16:22:41.565]收←◆AT+SAPBR=2,1+SAPBR: 1,1,"10.197.142.18"								//第一个参数1表示cid//第二个参数1表示已经连接
OK														//第三个参数表示模块获取的IP地址[16:22:47.753]发→◇AT+FTPCID=1						   //设置cid
□
[16:22:47.757]收←◆AT+FTPCID=1OK[16:22:58.179]发→◇AT+FTPSERV="xxx.xxx.xxx"			//设置服务器ip地址,也可以使用域名。
□
[16:22:58.183]收←◆AT+FTPSERV="xxx.xxx.xxx"OK[16:23:03.374]发→◇AT+FTPUN="user"					//设置服务器用户名。请填写自己FTP服务器的用户名,不要照抄
□
[16:23:03.377]收←◆AT+FTPUN="user"OK[16:23:09.022]发→◇AT+FTPPW="password"				//输入密码。请填写自己FTP服务器的密码,不要照抄
□
[16:23:09.024]收←◆AT+FTPPW="password"OK[16:23:26.114]发→◇AT+FTPGETPATH="/test"				//设置要创建的文件目录
□
[16:23:26.116]收←◆AT+FTPGETPATH="/test"OK[16:23:36.619]发→◇AT+FTPMKD							//创建目录
□
[16:23:36.622]收←◆AT+FTPMKDOK[16:23:37.137]收←◆
+FTPMKD: 1,0[16:23:45.124]发→◇AT+FTPRMD							//删除目录
□
[16:23:45.127]收←◆AT+FTPRMDOK[16:23:45.530]收←◆
+FTPRMD: 1,0[16:23:52.227]发→◇AT+FTPGETPATH="/"					//设置目标文件在服务器端的路径。
□
[16:23:52.229]收←◆AT+FTPGETPATH="/"OK[16:23:59.028]发→◇AT+FTPGETNAME="HI.txt"				//设置服务器端目标文件的名称。
□
[16:23:59.030]收←◆AT+FTPGETNAME="HI.txt"OK[16:24:05.536]发→◇AT+FTPDELE							//删除HI.txt这个文件
□
[16:24:05.541]收←◆AT+FTPDELEOK[16:24:05.926]收←◆
+FTPDELE: 1,0

常见问题Q&A 

以下针对客户朋友们实际应用中的反馈,整理了FTP应用中的常见问题:

1. AT+CGATT?返回值为0,怎么解决? 

1)发送AT+CSQ查询信号强度

若信号强度低,就换场景、换不同运营商的卡、换天线、换模块,交叉测试依次排查。

02)发送 AT+CEREG? 查询卡状态

根据返回值依次排查:

  • 返回值为CEREG:0,1
    表示成功驻网;

  • 返回值为CEREG:0,2
    表示正在搜网:

    如果长时间处于这种状态,则需要检查天线是否连接正常、SIM卡是否没流量或者是否停机了。

  • 返回值为CEREG:0,3
    表示驻网被拒绝:

    则要检查天线是否连接、天线连接座子的接口是否正确、天线是否损坏或者更换天线确认;

    若仍未解决,那么就需要换卡、换板子进行对比测试,确保使用正常的硬件和SIM卡测试;检查SIM卡是否欠费,流量是否用完;SIM卡是否为专网卡,是否机卡绑定,专网卡需要设置正确的APN,机卡分离停机时需要联系卡商进行重新绑定。

03) 发送 AT+CPIN? 判断是否读到卡

  • 返回值为+CPIN: READY:表示读到卡了;

  • 返回值为+CPIN: SIM REMOVED:
    表示没有读到卡:

    此时需要排查硬件方面。主要排查模块端引脚是否损坏,卡座硬件是否正常,模块到卡座之间连接是否正常;

    另外,这个卡座实际是det为高有效识别卡,还是低有效识别卡,也要确认一下。

2. FTP支持主动模式吗?

模块FTP默认是被动模式,不支持主动模式,无法设置主动模式。公网下要想模块正常连接服务器,须特别注意:

服务器不能设置为主动模式,否则哪家模块都不能用。

3. AT版本发送带0x0d 0x0a这些数据会丢失,怎么办?

需要通过AT+FTPTYPE="I"设置为二进制方式传输文件,否则传输过程中会丢弃换行符。

更多详细资料获取请点击: www.openluat.com  

 

这篇关于FTP应用看这篇!合宙Air780EP低功耗4G模组AT开发示例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1092102

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

zoj3820(树的直径的应用)

题意:在一颗树上找两个点,使得所有点到选择与其更近的一个点的距离的最大值最小。 思路:如果是选择一个点的话,那么点就是直径的中点。现在考虑两个点的情况,先求树的直径,再把直径最中间的边去掉,再求剩下的两个子树中直径的中点。 代码如下: #include <stdio.h>#include <string.h>#include <algorithm>#include <map>#

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来