Air系列4G模块AT版本HTTP应用说明

4G模块AT版本如何使用HTTP

一、应用概述

            4G模块支持HTTPHTTPS协议, HTTP应用的基本流程如下:

         1、激活PDP(参考:http://oldask.openluat.com/article/937

         2、初始化HTTP服务

         3、设置HTTP会话参数

         4、如果要支持SSL,配置SSL参数

         5、如果使用POST命令,输入POST数据

         6、发起HTTP请求

         7、收到HTTP应答,读取应答数据

         8、终止HTTP服务

         1步出现异常后:参考http://oldask.openluat.com/article/937进行异常处理

         2步到第5步,只要输入格式正确,基本不会出问题;如果出错,可以跳过,直接处理第6步的异常

         6步和第7步出现异常后:终止HTTP服务,有选择性的去激活PDP;然后再有选择性的激活PDP,从第2步开始重新执行

二、应用流程和异常处理

            本章节分三部分来介绍HTTP应用的基本流程和异常处理  

2.1、基本流程

       先来看个正常情况下的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

AT+HTTPINIT

 

OK

AT+HTTPPARA="CID",1

 

OK

AT+HTTPPARA="URL","www.baidu.com"

 

OK

AT+HTTPACTION=0

 

OK

 

+HTTPACTION: 0,200,153869

AT+HTTPREAD

 

+HTTPREAD: 153869

<!DOCTYPE html>

......

</html>

OK

 

         正常功能以及异常处理的流程图如下

        

         在这个过程中,注意事项如下:

         1、发送AT+HTTPACTION命令后,收到OK仅仅表示4G模块开始处理这条命令,并不表示请求发送成功,收到了应答;只有收到+HTTPACTION: n,statusCode,len才表示请求结束,statusCode表示应答成功,其余都表示应答失败

         2HTTP应答数据的缓冲区大小为319488字节,如果返回的http body数据超过了这个大小,则需要断点下载,可以使用AT+HTTPPARA命令,通过设置BREAKBREAKEND参数来实现

2.2TCP被动断开

       发送AT+HTTPACTION命令,和服务器建立了http连接后,如果连接异常被动断开,会输出+HTTPACTION: <Method>,<StatusCode>,<DataLen>提示

2.3PDP被动去激活

       先来看下PDP被动去激活时的AT命令处理序列,如果不理解AT命令含义,请自行参考AT手册

......           //此处省略了PDP激活的过程,参考2.1章节

 

AT+HTTPINIT

 

OK

AT+HTTPPARA="CID",1

 

OK

AT+HTTPPARA="URL","www.baidu.com"

 

OK

AT+HTTPACTION=0

 

OK

 

+SAPBR 1: DEACT       //此处PDP被动去激活

 

+HTTPACTION: 0,601,0

 

AT+HTTPTERM

 

OK                     //此处无论返回OKERROR还是CME ERROR,都直接跳过,不用做正确性判断

AT+SAPBR=0,1

 

+CME ERROR: 3         //此处无论返回OKERROR还是CME ERROR,都直接跳过,不用做正确性判断

......                //此处省略了PDP激活的过程,参考2.1章节

AT+HTTPINIT

 

OK

AT+HTTPPARA="CID",1

 

OK

AT+HTTPPARA="URL","www.baidu.com"

 

OK

AT+HTTPACTION=0

 

OK

 

+HTTPACTION: 0,200,154293

 

         参考2.1章节流程图,右下角的“收到+SAPBR 1: DEACT错误提示,表示PDP被动去激活”为异常处理的触发点

三、常见问题

3.1HTTP支持多连接吗

         目前HTTP仅支持单连接,不支持多连接

3.2HTTPS如何使用

         本文主要描述了基本流程和异常处理,对于HTTPS使用方法没有做过多描述,这一部分,请自行参考AT手册HTTP章节下《使用方法举例》中的"SSL证书验证功能的HTTPS流程"使用方法;支持的SSL参数,请自行参考AT+SSLCFG命令说明

         如果SSL的参数配置不变,则每次开机运行过程中,仅设置一次即可

3.3、重试多次PDPHTTP应用一直连接失败

         如果重试多次PDP激活,PDP一直激活失败,或者HTTP一直请求应答失败,则尝试使用如下手段恢复:

         1、使用RESET引脚复位模块

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

3.4HTTP如何下载大文件(断点续传)

         在实际的应用场景中,可能需要下载一个非常大的文件,例如几百K字节、几M字节,但是4G模块中HTTP可用的内存缓冲区为300KB左右,当文件大小超过这个缓冲区时,就要使用断点续传功能来分段下载处理了。下面以“下载一个11975260字节的文件”为例,来说明如何使用断点续传功能(注意:本示例仅仅演示了正常流程的HTTP AT命令,完整流程以及异常处理流程请参考本文第二章节)

AT+HTTPINIT

 

OK

AT+HTTPPARA="URL","http://openluat-erp.oss-cn-hangzhou.aliyuncs.com/erp_site_file/product_file/sw_file_20200108162920_Luat_V0028_ASR1802.zip"

 

OK

AT+HTTPACTION=2

 

OK

 

+HTTPACTION: 2,200,0

AT+HTTPHEAD

 

+HTTPHEAD: 454

server: aliyunoss

date: thu, 16 jan 2020 06:50:58 gmt

content-type: application/zip

content-length: 11975260                            //此处的11975260表示文件总大小

connection: keep-alive

x-oss-request-id: 5e2007d108f4be32353a92ae

accept-ranges: bytes

etag: "a5b9cc75c0f26413bbaf00a0fa952bb2"

last-modified: wed, 08 jan 2020 08:29:29 gmt

x-oss-object-type: normal

x-oss-hash-crc64ecma: 16925484473913319613

x-oss-storage-class: standard

content-md5: pbnmdcdyzbo7rwcg+pursg==

x-oss-server-time: 111

 

OK

 

//如下红色指令,表示下载文件的第一个300KB数据

AT+HTTPPARA="BREAK",0

 

OK

AT+HTTPPARA="BREAKEND",307199

 

OK

AT+HTTPACTION=0

 

OK

 

+HTTPACTION: 0,206,307200

AT+HTTPREAD

 

+HTTPREAD: 307200

......                          //此处输出307200字节数据

OK

 

//如下绿色指令,表示下载文件的第二个300KB数据

AT+HTTPPARA="BREAK",307200

 

OK

AT+HTTPPARA="BREAKEND",614399

 

OK

AT+HTTPACTION=0

 

OK

 

+HTTPACTION: 0,206,307200

AT+HTTPREAD

 

+HTTPREAD: 307200

......                          //此处输出307200字节数据

OK

 

//此处参考上文的红色或者绿色指令,一直循环读取文件的下一个300KB数据,直到读取结束

......

 

AT+HTTPTERM

 

OK

 

3.5HTTP下载的大文件如何可靠的发送给MCUAT流控)

         3.4 章节中,如下一段AT指令

AT+HTTPREAD

 

+HTTPREAD: 307200

......                          //此处输出307200字节数据

OK

         ......处的307200字节数据,是模块通过UART AT口发送给MCU,在实际传输过程中,由于串口芯片驱动、MCU端的处理能力、波特率的选择都存在不确定性,可能会导致MCU端接收到的数据,实际上没有307200字节,这就要求UART AT口打开流控功能。模块支持硬流控和软流控两种:

1.      硬流控,参考如下步骤操作:

1)      模块和 的UART口,CTSRTS要交叉相连

2)      MCU端固件要支持并且打开硬流控功能

3)      MCU端要发送AT+IFC=2,2命令到模块端,打开模块端的硬流控功能

2.      软流控,参考如下步骤操作:

1)      MCU端固件要支持并且打开软流控功能

2)      MCU端要发送AT+IFC=1,1命令到模块端,打开模块端的硬流控功能

  • 发表于 2019-09-11 14:05
  • 阅读 ( 8015 )
  • 分类:默认分类

1 条评论

请先 登录 后评论
不写代码的码农
朱天华

软件工程师

19 篇文章

作家榜 »

  1. 技术销售Delectate 43 文章
  2. 陈夏 26 文章
  3. 国梁 24 文章
  4. miuser 21 文章
  5. 晨旭 20 文章
  6. 朱天华 19 文章
  7. 金艺 19 文章
  8. 杨奉武 18 文章