sim900a http,SIM900A訪問(wèn)HTTP的方法
使用Arduino控制設(shè)備,讀取數(shù)據(jù),然后通過(guò)移動(dòng)網(wǎng)絡(luò)傳送到服務(wù)器。選用的是正點(diǎn)原子的SIM900A模塊。在服務(wù)器部署了一個(gè)監(jiān)聽(tīng)程序,Arduino控制SIM900A通過(guò)TCP方式把數(shù)據(jù)發(fā)送到服務(wù)器。
SIM900A能不能訪問(wèn)網(wǎng)頁(yè)呢?接下來(lái)一起了解一下關(guān)于SIM900A訪問(wèn)HTTP的方法吧。
1、要訪問(wèn)網(wǎng)頁(yè),總得先上網(wǎng)吧。
那手機(jī)是怎么上網(wǎng)的呢?打開(kāi)“數(shù)據(jù)連接”就行了吧。恩??墒鞘謾C(jī)怎么知道怎么接入網(wǎng)絡(luò)呢?想起當(dāng)年用Hero的時(shí)候,無(wú)數(shù)次設(shè)置APN,如下圖。
看明白了嗎?手機(jī)中有默認(rèn)的網(wǎng)絡(luò)接入點(diǎn),當(dāng)打開(kāi)“數(shù)據(jù)連接”的時(shí)候,手機(jī)會(huì)接入指定的接入點(diǎn)。那么,再回過(guò)頭來(lái)看AT+SAPBR指令的參數(shù),原來(lái)如此。那我們執(zhí)行如下的AT指令:
?。?)AT+SAPBR=3,1,“APN”,“cmnet”:這條指令設(shè)置接入點(diǎn)名稱(chēng)(第4張圖第二行)。
(2)AT+SAPBR=3,1,“PHONENUM”,“12345678900”:設(shè)置電話號(hào)碼。
其它的參數(shù)不用這是了吧,因?yàn)榈?張圖上也沒(méi)有設(shè)置。
(3)AT+SAPBR=4,1:查詢(xún)參數(shù)設(shè)置。
?。?)AT+SAPBR=5,1:將本次的參數(shù)設(shè)置保存到RAM,下次就不用設(shè)置了,直接打開(kāi)就行。
4條指令中,那個(gè)“1”是什么意思?其實(shí),我也沒(méi)搞的很清楚,就算是個(gè)標(biāo)識(shí)吧。
?。?)AT+SAPBR=1,1:打開(kāi)承載,我的理解是你打開(kāi)了“數(shù)據(jù)連接”。
(6)AT+SAPBR=2,1:這條命令可以查看到接入網(wǎng)絡(luò)的狀態(tài)還有IP地址。
好了,現(xiàn)在我已經(jīng)接入網(wǎng)絡(luò)了(返回的第2個(gè)參數(shù)是1表示已經(jīng)連接),我的IP地址是“10.129.8.149”(第3個(gè)參數(shù))。
2、沒(méi)有UC,我咋訪問(wèn)網(wǎng)頁(yè)呢?
慢慢來(lái)。先看看“第10章HTTP應(yīng)用AT指令”,一共7條指令?;舅悸肪褪窍瘸跏蓟?,然后設(shè)置參數(shù),激活HTTP,等到相應(yīng),然后再讀返回的數(shù)據(jù),最后關(guān)閉。下面,我要訪問(wèn)我們學(xué)院的網(wǎng)站了:http://www.dyxy.net。
(1)AT+HTTPINIT:初始化HTTP。
?。?)AT+HTTPPARA=“CID”,“1”:設(shè)置承載上下文標(biāo)識(shí),和上面一致。
?。?)AT+HTTPPRAR=“URL”,“http://www.dyxy.net”:設(shè)置你要訪問(wèn)的那個(gè)網(wǎng)站,要加上“http://”協(xié)議的啊。
其它的參數(shù)我們暫且不去設(shè)置。
?。?)AT+HTTPACTION=0:激活HTTP請(qǐng)求,0表示get方式、1表示post方式、2表示head(這個(gè)不知道啥意思)。
這個(gè)時(shí)候要耐心等,在OK之后會(huì)返回HTTP的狀態(tài)。我的狀態(tài)如下:
看到“200”了嗎?這說(shuō)明訪問(wèn)成功了。那個(gè)“0”表示你的訪問(wèn)方式,剛才我們用get去訪問(wèn)的。那最后的那個(gè)“30188”是什么呢?恩,它是DataLen,也就是用字節(jié)表示的網(wǎng)頁(yè)的內(nèi)容的長(zhǎng)度。
好吧,那怎么獲取網(wǎng)頁(yè)的內(nèi)容呢?AT+HTTPREAD指令現(xiàn)在登場(chǎng)。
?。?)AT+HTTPREAD=1,30188:讀取HTTP相應(yīng)數(shù)據(jù)。1表示從第一個(gè)字節(jié)開(kāi)始讀,讀30188個(gè)字節(jié)。
如果我們操作正確、且我們知道HTML是什么的話,我們會(huì)驚訝的發(fā)現(xiàn),網(wǎng)頁(yè)的內(nèi)容被讀出來(lái)了。哈哈哈哈!
?。?)AT+HTTPTERM:訪問(wèn)完了,記得終止HTTP服務(wù)啊。
?。?)AT+SAPBR=0,1:最后別忘記關(guān)閉承載。
OK,這樣,我們就實(shí)現(xiàn)了SIM900A通過(guò)GET方式訪問(wèn)網(wǎng)頁(yè)的問(wèn)題。
當(dāng)然,這是非常簡(jiǎn)單的操作。我們肯定會(huì)遇到這樣那樣的問(wèn)題,比如:
(1)AT+HTTPREAD指令最多能讀出102400字節(jié)的數(shù)據(jù),那如果某個(gè)網(wǎng)頁(yè)返回的數(shù)據(jù)量超過(guò)了102400該怎么辦?
?。?)怎么通過(guò)POST方式提交數(shù)據(jù)?
GET 的請(qǐng)求:?。踙tml] view plain copyAT+HTTPTERM
AT+CSQ
AT+CGATT?
AT+SAPBR=3,1,“CONTYPE”,“GPRS”
AT+SAPBR=1,1
AT+HTTPINIT
AT+HTTPPARA=“URL”,“http://127.0.0.1:3000/v1/test”
AT+HTTPACTION=0 //發(fā)送GET請(qǐng)求,注意返回的狀態(tài)碼
AT+HTTPREAD //read data
POST請(qǐng)求:?。踙tml] view plain copyAT+HTTPTERM
AT+CSQ
AT+CGATT?
AT+SAPBR=3,1,“CONTYPE”,“GPRS”
AT+SAPBR=1,1
AT+HTTPINIT
AT+HTTPPARA=“URL”,“http://《span style=”font-family: Arial, HelveTIca, sans-serif;“》127.0.0.1:300《/span》《span style=”font-family: Arial, HelveTIca, sans-serif;“》0/v1/mbdevices?devsn=12345678&devtype=abc”《/span》
AT+HTTPACTION=1 //發(fā)送POST數(shù)據(jù),注意返回的狀態(tài)碼
AT+HTTPREAD //read data