当前位置: 首页 > 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引脚拉低开机。

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

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

http://www.xdnf.cn/news/188065.html

相关文章:

  • 【图论 拓扑排序 bfs】P6037 Ryoku 的探索|普及+
  • SpeedyAutoLoot
  • DeepSeek+Dify之五工作流引用API案例
  • 在自动驾驶数据闭环中的特征工程应用
  • VSCode 查看文件的本地修改历史
  • 大模型(LLMs)加速篇
  • Ubuntu 20.04 上安装 最新版CMake 3.31.7 的详细步骤
  • MongoDB的增删改查操作
  • 如何搭建spark yarn模式的集群
  • vite项目tailwindcss4的使用
  • 检查IBM MQ SSL配置是否成功
  • 代码片段存储解决方案ByteStash
  • 每日算法-250428
  • 跨境电商店铺矩阵布局:多账号运营理论到实操全解析
  • JVM 内存分配策略
  • 深海科技服务博客简介
  • 说一下react更新的流程
  • Meta 推出 WebSSL 模型:探索 AI 无语言视觉学习,纯图训练媲美 OpenAI CLIP
  • 详解RabbitMQ工作模式之工作队列模式
  • 盒子模型
  • 图像处理篇---信号与系统的应用
  • Golang|分布式索引架构
  • DDD(领域驱动设计)详解
  • 【C++类与对象高频面试问题总结2】
  • 在VS2022中使用Lua与c交互(二)
  • 读书笔记--华为从偶然到必然之创新与技术开发阅读有感
  • 交换机配置DHCP
  • 使用python实现自动化拉取压缩包并处理流程
  • 深入理解CSS3:Flex/Grid布局、动画与媒体查询实战指南
  • Python初学 有差异的知识点总结(一)