电路研究9.3.2——合宙Air780EP中的AT开发指南:HTTP(S)-PDP的研究
按照推荐的GPRS模块的学习顺序,现在需要研究的是HTTP(S)了,所以我们就继续学习吧。
9.5.2 HTTP(S)应用指南
应用概述
4G 模块支持 HTTP 和 HTTPS 协议(这个确实也考虑过了,但是不知道合不合适呢,而且我们计划的通讯是只是发送少量数据,药也需要机密什么的。), HTTP 应用的基本流程如下:
AT+SAPBR=3,1,"CONTYPE","GPRS"
OK
AT+SAPBR=3,1,"APN",""
OK
AT+SAPBR=1,1
OK
AT+SAPBR=2,1
+SAPBR: 1,1,"10.55.40.48"
OK
再次使用如下AT命令,激活了一路id为2、APN为自动获取的默认APN的PDP承载
AT+SAPBR=3,2,"CONTYPE","GPRS"
OK
AT+SAPBR=3,2,"APN",""
OK
AT+SAPBR=1,2
OK
AT+SAPBR=2,2
+SAPBR: 2,1,"10.55.40.48"
OK
这看起来区别不大,id为2的PDP承载,IP地址和id为1的PDP承载完全一样。(这里相当于cid为1,2通道吧,G4有8个通道呢,所以这里cid可能是1-8的数据吧。)
实际上,激活id为2的PDP承载时,首先检查已经激活的其他路PDP承载,发现id为1的PDP承载已经激活,并且APN相同,则直接映射到id为1的这一路物理承载,并不会向网关发起激活PDP的请求;如果APN不同,才会向网关发起新的PDP激活请求。在实际应用场景中,我们所用的sim卡基本上都是多路PDP共享一个物理承载的情况。
AT+SAPBR之前也研究并贴过来,这里因为用到了,防止记不住,再贴出来吧。
在激活PDP之前,模块必须先附着上数据网络,4G模块开机后,会自动去附着数据网络,只要通过AT+CGATT?轮询是否附着成功即可,附着上数据网络之后,就可以激活PDP了。
举例也出来了,这里继续激活PDP,4G模块支持两套比较常用的通过AT命令激活PDP的方式,其中一套提供给socket使用,另外一套提供给MQTT、HTTP、FTP使用。socket的激活我我们这里就不研究了。不过还是贴出来吧,我们并不深入分析。
socket应用的激活PDP方式(先来看个正常激活PDP的AT命令序列,请自行参考AT手册理解AT命令意义)
AT+CPIN?
+CPIN: READY //查询sim卡是否正常
OK
AT+CGATT?
+CGATT: 1 //查询是否附着上数据网络,如果返回+CGATT: 0表示未附着上
OK
AT+CSTT="" //设置APN,此处""表示使用从网络端自动获取到的APN
OK
AT+CIICR //发起激活PDP的请求
OK
AT+CIFSR
10.159.1.145 //请求到的PDP地址
激活PDP的流程图如下
socket应用的去激活PDP方法
PDP激活成功之后,就可以发送socket的AT命令和服务器通信了,某些情况下,还需要执行去激活PDP动作(发送AT+CIPSHUT,参考上方的流程图),什么情况下,需要去激活PDP呢?分为被动和主动两种场景:
1、被动场景:如果网络环境发生了异常变化(例如进入了一个没有信号的区域,拔掉天线,拔掉sim卡等),一段时间后,4G模块会产生一个+PDP: DEACT的URC提示,出现此提示说明已经激活的PDP承载被网络端去激活了,此时仍然需要向4G模块发送AT+CIPSHUT命令主动关闭PDP
2、主动场景,分为如下两种情况:
在激活PDP过程中,激活失败,此时需要主动去激活,然后再重新激活
socket应用过程中出现失败,根据项目需要,可以执行主动去激活,然后再重新激活,重新执行socket应用
我们主要是研究的的HTTP的激活方式:
http、mqtt、ftp应用的激活PDP方式
先来看个正常激活PDP的AT命令序列,请自行参考AT手册理解AT命令意义(这个之前也研究过了)
AT+CPIN?
+CPIN: READY //查询sim卡是否正常
OK
AT+CGATT?
+CGATT: 1 //查询是否附着上数据网络,如果返回+CGATT: 0表示未附着上
OK
AT+SAPBR=3,1,"CONTYPE","GPRS"
OK
AT+SAPBR=3,1,"APN","" //设置APN,此处""表示使用从网络端自动获取到的APN
OK
AT+SAPBR=1,1 //发起激活PDP的请求
OK
AT+SAPBR=2,1 //注意:此命令仅仅查询PDP地址,可以不执行
+SAPBR: 1,1,"10.159.1.145" //请求到的PDP地址
OK
激活PDP的流程图如下
http、mqtt、ftp应用的去激活PDP方式
PDP激活成功之后,就可以执行http、mqtt、ftp的AT命令和服务器通信了,某些情况下,还需要执行去激活PDP动作(发送AT+SAPBR=0,1,参考上方的流程图),什么情况下,需要去激活PDP呢?分为被动和主动两种场景:
1、被动场景:如果网络环境发生了异常变化(例如进入了一个没有信号的区域,拔掉天线,拔掉sim卡等),一段时间后,4G模块会产生一个+SAPBR 1: DEACT的URC提示,出现此提示说明已经激活的PDP承载被网络端去激活了,此时仍然需要向4G模块发送AT+SAPBR=0,1命令主动关闭PDP
2、主动场景,分为如下两种情况:
在激活PDP过程中,激活失败,此时需要主动去激活,然后再重新激活
http、mqtt、ftp应用过程中出现失败,根据项目需要,可以执行主动去激活,然后再重新激活,重新执行http、mqtt、ftp应用
重试多次PDP一直激活失败(这个涉及到了硬件的办法了。)
如果重试多次,PDP一直激活失败,则尝试使用如下手段恢复:
1、使用RESET引脚复位模块
2、极端情况下,直接给模块断电,再上电,POWER KEY引脚拉低开机。
这个先到这里,之后再继续后面的了。
补:最近工作忙得需要的加班也不少,正好公司也集中在一堆测试项目多的时节,这里贴一点东西,表示我还活着,虽然春困的时节,不过还是需要努力活下去的。