当前位置: 首页 > news >正文

电路研究9.3.2——合宙Air780EP中的AT开发指南:HTTP(S)-PDP的研究

        按照推荐的GPRS模块的学习顺序,现在需要研究的是HTTP(S)了,所以我们就继续学习吧。

        9.5.2 HTTP(S)应用指南

        应用概述

        4G 模块支持 HTTP HTTPS 协议(这个确实也考虑过了,但是不知道合不合适呢,而且我们计划的通讯是只是发送少量数据,药也需要机密什么的。), HTTP 应用的基本流程如下:

        1、激活 PDP
        2、初始化 HTTP 服务
        3、设置 HTTP 会话参数
        4、如果要支持 SSL ,配置 SSL 参数
        5、如果使用 POST 命令,输入 POST 数据
        6、发起 HTTP 请求
        7、收到 HTTP 应答,读取应答数据
        8、终止 HTTP 服务
        第 1 步出现异常后:参考下方的咨询再调试一下。
        第 2 步到第 5 步:只要输入格式正确,基本不会出问题;如果出错,可以跳过,直接处理第 6 步的异常
        第 6 步和第 7 步出现异常后:终止 HTTP 服务,有选择性的去激活 PDP ;然后再有选择性的激活 PDP ,从第 2 步开始重新执行
        这里对第一步如何激活 PDP,先进行了归类整理:
        一、移动设备如何上网
        移动设备,大家也都了解,就是可以随身携带,无需连接网线,网卡等外部设备,可以上网的小型仪器之类的。所以就算是设备本身就具备连接网络的功能。
         二、什么是PDP上下文
         需要有个IP地址(被称为PDP地址)通过这个就可连接网络了,再就是需要有个网关等相关一系列资料,这些汇总起来就是PDP上下文了。因此就是我们连接网站,GPRS访问网页等可以访问网站的通讯过程需要的相关信息。算是无线路由的地址,密码等等资料了。
         三、4G模块如何激活和去激活PDP
         4G模块最多支持8路PDP承载,这8路PDP承载可以是8个独立的物理承载,也可以是多路共享1个物理承载。怎么理解这个概念呢?要用到上文中提到的APN,激活PDP请求时,4G模块会指定一个APN(如果是通用的sim卡,在AT命令中,可以不再主动传入这个APN参数,因为4G模块固件会自动从网络端获取到正确的APN),PDP承载就根据APN来决定是“直接使用之前已经激活的同名APN的PDP承载”还是“新激活一个PDP承载”。
        所以我们就插上一个SIM卡,直接就开始使用了。这个就像我们路由器的各种接口相关的东西了。
        举例:
        使用如下AT命令,激活了一路id为1、APN为自动获取的默认APN的PDP承载(就是连接并开启了相关通道,无需在担心通讯了,算是设备本身的资料了)

        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过程中,激活失败,此时需要主动去激活,然后再重新激活

        httpmqttftp应用过程中出现失败,根据项目需要,可以执行主动去激活,然后再重新激活,重新执行httpmqttftp应用

        重试多次PDP一直激活失败(这个涉及到了硬件的办法了。)

        如果重试多次,PDP一直激活失败,则尝试使用如下手段恢复:

         1、使用RESET引脚复位模块

         2、极端情况下,直接给模块断电,再上电,POWER KEY引脚拉低开机。

        这个先到这里,之后再继续后面的了。

        补:最近工作忙得需要的加班也不少,正好公司也集中在一堆测试项目多的时节,这里贴一点东西,表示我还活着,虽然春困的时节,不过还是需要努力活下去的。

相关文章:

  • 在 IDEA 中写 Spark 程序:从入门到实践
  • java可复用代码
  • web3.js 和 ethers.js 的核心区别
  • 【OSG学习笔记】Day 12: 回调机制——动态更新场景
  • 基于单片机的游泳馆智能管理系统设计与实现
  • shell--数组、正则表达式RE
  • PostgreSQL与MySQL哪个适合做时空数据分析?
  • Foupk3systemX5OS系统产品设备
  • 2025系统架构师---论微服务架构及其应用
  • MCU内存映射技术详解
  • 【专题四】前缀和(3)
  • 升级Xcode16,flutter项目报错
  • 实现分页的几种方法
  • Field访问对象int字段,对象访问int字段,通过openjdk17 C++源码看对象字段访问原理
  • 97AB-ASEMI机器人功率器件专用97AB
  • 模型上下文协议(MCP)深度解析:大模型从“思考者“进化为“行动者“
  • 01 C++概述
  • 2025 SAP专精特新企业高峰论坛 | 工博科技以SAP公有云+AI赋能新质生产力​
  • 15、项目搭建:绘制城堡蓝图——React 19 工程配置
  • 在android 系统上qnn sdk转换,运行模型示例
  • 发布亮眼一季度报后,东阿阿胶股价跌停:现金流隐忧引发争议
  • 宜昌打造“算力之都”:产业链快速延伸,追逐千亿级产值
  • 对谈|李钧鹏、周忆粟:安德鲁·阿伯特过程社会学的魅力
  • 王毅出席金砖国家外长会晤
  • 上海112位全国劳动模范和先进工作者接受表彰,樊振东榜上有名
  • 人社部:我国劳动力市场潜力足,韧性强