? Air780EP是合宙推出的一款 低功耗4G全網(wǎng)通模組 ,兼容模組行業(yè)1618經(jīng)典封裝,支持OpenCPU開發(fā)及全功能數(shù)傳AT開發(fā),可廣泛應(yīng)用于多樣化的物聯(lián)網(wǎng)終端。
上周寫了基于Air780EP模組AT開發(fā)的[FOTA遠程升級指南], 有客戶朋友詢問能否講講HTTP應(yīng)用部分? 本期特別安排——涵蓋HTTP基本應(yīng)用流程、GET/POST/SSL請求示例、斷點續(xù)傳、常見問題等內(nèi)容。
一、**相關(guān)準備工作 **
?
1.1 硬件準備
1.2 軟件準備
進入AT固件下載頁面按下Ctrl+F,搜索AirM2M_780EP_LTE_AT,即可找到Air780EP模塊所使用的AT固件。
本文使用示例為:
AirM2M_780EP_V1007_LTE_AT版本固件
推薦選用:相關(guān)型號固件名稱后面數(shù)字版本號最高的最新relase版本進行調(diào)試。
二、HTTP應(yīng)用基本流程
合宙低功耗4G模塊支持HTTP和HTTPS協(xié)議,HTTP應(yīng)用的基本流程如下:
- 激活PDP
- 初始化HTTP服務(wù)
- 設(shè)置HTTP會話參數(shù)
- 如果要支持SSL,配置SSL參數(shù)
- 如果使用POST命令,輸入POST數(shù)據(jù)
- 發(fā)起HTTP請求
- 收到HTTP應(yīng)答,讀取應(yīng)答數(shù)據(jù)
- 終止HTTP服務(wù)
相關(guān)注意事項:
第1步如果出現(xiàn)異常,首先需要排查HTTP連接和請求參數(shù)是否正常,通過Postman是否可以請求成功,模塊上網(wǎng)是否正常(AT+CEREG?);
第2步到第5步,只要輸入格式正確,基本不會出問題;如果出錯,可以跳過,直接處理第6步的異常;
第6步和第7步如果出現(xiàn)異常:終止HTTP服務(wù),有選擇性的去激活PDP;然后再有選擇性的激活PDP,從第2步開始重新執(zhí)行。
三、**HTTP GET請求示例 **
具體指令和參數(shù)使用說明,可參考AT指令手冊:
?
相關(guān)注意事項:
01. 請求及應(yīng)答
發(fā)送AT+HTTPACTION命令后,收到OK僅僅表示4G模塊開始處理這條命令,并不表示請求發(fā)送成功,收到了應(yīng)答。
只有收到+HTTPACTION: n,statusCode,len才表示請求結(jié)束,statusCode表示應(yīng)答成功,其余都表示應(yīng)答失敗。
02. 數(shù)據(jù)大小限制
HTTP應(yīng)答數(shù)據(jù)的緩沖區(qū)大小為4KB,如果返回的http body數(shù)據(jù)超過了這個大小,則需要 斷點下載 ——可以使用AT+HTTPPARA命令,通過設(shè)置BREAK和BREAKEND參數(shù)來實現(xiàn)。
03. HTTP被動斷開
發(fā)送AT+HTTPACTION命令,和服務(wù)器建立了HTTP連接后,如果連接異常被動斷開,會輸出+HTTPACTION: ,,提示。
04. PDP被動激活
先來看下PDP被動激活時的AT命令處理序列,如果不理解AT命令含義,請自行參考AT手冊。
+PDP DEACT // 出現(xiàn)PDP去激活的URC上報
后面如果沒做任何處理,接著做HTTP請求會失敗,可以按照下方的建議處理。
應(yīng)對處理每次結(jié)束,都需要重新走一遍HTTP請求流程:
第一種方法:
AT+CIPSHUT // 關(guān)閉移動場景
第二種方法:
AT+CIPSHUT // 關(guān)閉移動場景
AT+CGDCONT=5,"IP",""http://請?zhí)顚憣嶋HAPN
AT+CGACT=1,5
第三種方法:
AT+CFUN=0 // 進入飛行模式
AT+CFUN=1 // 退出飛行模式
第四種方法:
AT+RESET // 重啟模塊
參考下發(fā)流程中收到"+SAPBR 1: DEACT"錯誤提示,表示PDP被動去激活,為異常處理的觸發(fā)點。
?
**四、HTTP POST請求示例 **
POST請求流程與GET流程基本一致,只有指令參數(shù):
AT+HTTPACTION=0
變?yōu)椋?/p>
AT+HTTPACTION=1
具體指令和參數(shù)使用說明,可參考AT指令手冊:
AT指令手冊下載鏈接:
https://doc.openluat.com/article/4985
?
五、**HTTPS SSL請求示例 **
本示例為帶SSL證書雙向驗證功能的HTTPS過程,具體指令和參數(shù)使用說明,可參考AT指令手冊:
?
?
**六、HTTP斷點續(xù)傳示例 **
在實際的應(yīng)用場景中,可能需要下載一個非常大的文件,例如幾百K字節(jié)、幾M字節(jié),但是****4G模塊中HTTP可用的內(nèi)存緩沖區(qū)Air780EP模塊只有4KB左右。 當(dāng)文件大小超過這個緩沖區(qū)時,就要使用斷點續(xù)傳功能來分段下載處理了。
下文以“下載一個119345字節(jié)的文件”為例,來說明如何使用斷點續(xù)傳功能(注意:本示例僅僅演示了正常流程的HTTP AT命令,完整流程以及異常處理流程請參考本文應(yīng)用流程部分)。
?
?
七、**常見問題Q&A **
以下針對客戶朋友們實際應(yīng)用中的反饋,整理了HTTP應(yīng)用中的常見問題:
01. HTTP支持多連接嗎?
目前HTTP僅支持單連接,不支持多連接。
02. HTTPS如何使用?
本文主要描述了基本流程和異常處理,對于HTTPS使用方法沒有做過多描述。這一部分,請自行參考 AT指令手冊HTTP章節(jié)下《使用方法舉例》 中的"帶SSL證書驗證功能的HTTPS流程"使用方法;支持的SSL參數(shù),請自行參考AT+SSLCFG命令說明。如果SSL的參數(shù)配置不變,則每次開機運行過程中,僅設(shè)置一次即可。
03. 重試多次PDP,HTTP應(yīng)用一直連接失敗?
如果重試多次PDP激活,PDP一直激活失敗,或者HTTP一直請求應(yīng)答失敗,請嘗試使用如下手段恢復(fù):
- 使用RESET引腳復(fù)位模塊;
- 極端情況下,直接給模塊斷電,再上電,POWER KEY引腳拉低開機。
04. HTTP下載的大文件,如何可靠的發(fā)送給MCU(AT流控)?
需要在斷點續(xù)傳流程指令里開頭加入AT+IFC的配置指令:
AT+HTTPREAD
+HTTPREAD: 3072
...... //此處輸出3072字節(jié)數(shù)據(jù)
OK
此處的3072字節(jié)數(shù)據(jù),是模塊通過UART AT口發(fā)送給MCU。在實際傳輸過程中,由于串口芯片驅(qū)動、MCU端的處理能力、波特率的選擇都存在不確定性,可能會導(dǎo)致MCU端接收到的數(shù)據(jù),實際上沒有3072字節(jié),這就要求UART AT口打開流控功能。
模塊支持硬件流控和軟件流控兩種:
硬件流控,參考如下步驟操作:
- 模塊和MCU的UART口,CTS、RTS要交叉相連
- MCU端固件要支持并且打開硬流控功能
- MCU端要發(fā)送AT+IFC=2,2命令到模塊端,打開模塊端的硬流控功能
軟件流控,參考如下步驟操作:
- MCU端固件要支持并且打開軟流控功能
- MCU端要發(fā)送AT+IFC=1,1命令到模塊端,打開模塊端的軟流控功能
05. 為什么我只發(fā)了10字節(jié)消息,100次卻消耗了很多流量?
因為還有HTTP自帶的請求頭。
06. 為什么頻繁請求會失?。?/strong>
HTTP連接總數(shù)數(shù)量有限,且不支持HTTP2多路復(fù)用連接,因此建議等一個HTTP連接返回請求結(jié)果之后,再去請求下一個連接;不要使用循環(huán)定時器方式不斷的發(fā)起新的HTTP請求。
07. 如何POST文件?
主要是使用AT+HTTPDATA命令錄入文件數(shù)據(jù)后,發(fā)送AT+HTTPACTION=1利用POST上傳。
08. 數(shù)據(jù)發(fā)送接收緩存問題如何解決?
AT版本有緩存機制,內(nèi)存中有一個的緩沖區(qū)(Air780EP模塊AT固件HTTP緩存為4KB),發(fā)送和接受使用的是同一塊緩沖區(qū)。
發(fā)送和收到數(shù)據(jù)后,插入此緩沖區(qū),然后通過AT口輸出URC,提示收到的數(shù)據(jù)長度;緩沖區(qū)滿之后,再收到新數(shù)據(jù),會丟棄新收到的數(shù)據(jù),并通過AT口輸出URC提示出錯;需要讀取數(shù)據(jù)時,發(fā)送AT+HTTPREAD命令讀取,可分段讀取,也可全部讀取。
特別注意:
緩沖區(qū)位于內(nèi)存中,斷電或者重啟后,緩存表中的數(shù)據(jù)會被清空;雖然緩沖區(qū)可以緩存很多數(shù)據(jù),但是建議收到數(shù)據(jù)時,通過AT+HTTPREAD及時讀取出來,以防緩沖區(qū)滿出錯。
審核編輯 黃宇
-
4G
+關(guān)注
關(guān)注
15文章
5517瀏覽量
118973 -
AT
+關(guān)注
關(guān)注
2文章
192瀏覽量
65202 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
3019瀏覽量
74002 -
低功耗
+關(guān)注
關(guān)注
10文章
2396瀏覽量
103670
發(fā)布評論請先 登錄
相關(guān)推薦
評論