SIM900A訪問HTTP的簡單方法


最近做項目,使用Arduino控制設備,讀取數據,然后通過移動網絡傳送到服務器。

我選用的是正點原子的SIM900A模塊。在服務器部署了一個監聽程序,Arduino控制SIM900A通過TCP方式把數據發送到服務器。

某天,突然想,SIM900A能不能訪問網頁呢?如果能,直接把數據通過網頁提交上去不就更簡單了嘛。

於是乎,果斷咨詢賣家,得到的答復是“理論上可行,但是沒測試過”。

好吧,那只能百度了。不百不知道,一百嚇一跳。全網好像沒有一個完整的SIM900A訪問HTTP的例子。恰好,Google又訪問不了(想做個好孩子,不翻牆)。只能自己幫自己了。

1、要訪問網頁,總得先上網吧。

那手機是怎么上網的呢?打開“數據連接”就行了吧。恩。可是手機怎么知道怎么接入網絡呢?想起當年用Hero的時候,無數次設置APN,如下圖。

     

看明白了嗎?手機中有默認的網絡接入點,當打開“數據連接”的時候,手機會接入指定的接入點。那么,再回過頭來看AT+SAPBR指令的參數,原來如此。那我們執行如下的AT指令:

(1)AT+SAPBR=3,1,"APN","cmnet":這條指令設置接入點名稱(第4張圖第二行)。

(2)AT+SAPBR=3,1,"PHONENUM","12345678900":設置電話號碼。

其它的參數不用這是了吧,因為第4張圖上也沒有設置。

(3)AT+SAPBR=4,1:查詢參數設置。

(4)AT+SAPBR=5,1:將本次的參數設置保存到RAM,下次就不用設置了,直接打開就行。

4條指令中,那個“1”是什么意思?其實,我也沒搞的很清楚,就算是個標識吧。

(5)AT+SAPBR=1,1:打開承載,我的理解是你打開了“數據連接”。

(6)AT+SAPBR=2,1:這條命令可以查看到接入網絡的狀態還有IP地址。

好了,現在我已經接入網絡了(返回的第2個參數是1表示已經連接),我的IP地址是“10.129.8.149”(第3個參數)。

 

2、沒有UC,我咋訪問網頁呢?

慢慢來。先看看“第10章HTTP應用AT指令”,一共7條指令。基本思路就是先初始化,然后設置參數,激活HTTP,等到相應,然后再讀返回的數據,最后關閉。下面,我要訪問我們學院的網站了:http://www.dyxy.net。

(1)AT+HTTPINIT:初始化HTTP。

(2)AT+HTTPPARA="CID","1":設置承載上下文標識,和上面一致。

(3)AT+HTTPPRAR="URL","http://www.dyxy.net":設置你要訪問的那個網站,要加上“http://”協議的啊。

其它的參數我們暫且不去設置。

(4)AT+HTTPACTION=0:激活HTTP請求,0表示get方式、1表示post方式、2表示head(這個不知道啥意思)。

這個時候要耐心等,在OK之后會返回HTTP的狀態。我的狀態如下:

看到“200”了嗎?這說明訪問成功了。那個“0”表示你的訪問方式,剛才我們用get去訪問的。那最后的那個“30188”是什么呢?恩,它是DataLen,也就是用字節表示的網頁的內容的長度。

好吧,那怎么獲取網頁的內容呢?AT+HTTPREAD指令現在登場。

(5)AT+HTTPREAD=1,30188:讀取HTTP相應數據。1表示從第一個字節開始讀,讀30188個字節。

如果我們操作正確、且我們知道HTML是什么的話,我們會驚訝的發現,網頁的內容被讀出來了。哈哈哈哈!

(6)AT+HTTPTERM:訪問完了,記得終止HTTP服務啊。

(7)AT+SAPBR=0,1:最后別忘記關閉承載。

 

OK,這樣,我們就實現了SIM900A通過GET方式訪問網頁的問題。

當然,這是非常簡單的操作。我們肯定會遇到這樣那樣的問題,比如:

(1)AT+HTTPREAD指令最多能讀出102400字節的數據,那如果某個網頁返回的數據量超過了102400該怎么辦?

(2)怎么通過POST方式提交數據?

等等......

 

慢慢來吧,總會有方法的。我先開班會去了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM