sim900a tcp,SIM900A與網(wǎng)絡(luò)調(diào)試助手進(jìn)行TCP收發(fā)通信
TCP(Transmission Control Protocol 傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,由IETF的RFC 793定義。在簡化的計(jì)算機(jī)網(wǎng)絡(luò)OSI模型中,它完成第四層傳輸層所指定的功能,用戶數(shù)據(jù)報(bào)協(xié)議(UDP)是同一層內(nèi)另一個(gè)重要的傳輸協(xié)議。在因特網(wǎng)協(xié)議族(Internet protocol suite)中,TCP層是位于IP層之上,應(yīng)用層之下的中間層。
不同主機(jī)的應(yīng)用層之間經(jīng)常需要可靠的、像管道一樣的連接,但是IP層不提供這樣的流機(jī)制,而是提供不可靠的包交換。應(yīng)用層向TCP層發(fā)送用于網(wǎng)間傳輸?shù)?、?位字節(jié)表示的數(shù)據(jù)流,然后TCP把數(shù)據(jù)流分區(qū)成適當(dāng)長度的報(bào)文段(通常受該計(jì)算機(jī)連接的網(wǎng)絡(luò)的數(shù)據(jù)鏈路層的最大傳輸單元( MTU)的限制)。之后TCP把結(jié)果包傳給IP層,由它來通過網(wǎng)絡(luò)將包傳送給接收端實(shí)體的TCP層。
TCP為了保證不發(fā)生丟包,就給每個(gè)包一個(gè)序號,同時(shí)序號也保證了傳送到接收端實(shí)體的包的按序接收。然后接收端實(shí)體對已成功收到的包發(fā)回一個(gè)相應(yīng)的確認(rèn)(ACK);如果發(fā)送端實(shí)體在合理的往返時(shí)延(RTT)內(nèi)未收到確認(rèn),那么對應(yīng)的數(shù)據(jù)包就被假設(shè)為已丟失將會被進(jìn)行重傳。TCP用一個(gè)校驗(yàn)和函數(shù)來檢驗(yàn)數(shù)據(jù)是否有錯(cuò)誤;在發(fā)送和接收時(shí)都要計(jì)算校驗(yàn)和。這篇文章就是和大家一起了解SIM900A與網(wǎng)絡(luò)調(diào)試助手進(jìn)行TCP收發(fā)通信的。
1.設(shè)置網(wǎng)絡(luò)因?yàn)槲疫@里是通過路由器上網(wǎng),所以要先進(jìn)行一些設(shè)置。先查看自己本機(jī)IP,這里是192.168.1.103,如圖1.
圖1
通過自己的路由器,查看本機(jī)對外的IP,如圖2.
圖2
路由器的設(shè)置里面有一項(xiàng)“轉(zhuǎn)發(fā)規(guī)則”,如圖3,選擇“DMZ主機(jī)”。
圖3
在“DMZ主機(jī)”中,啟動DMZ主機(jī)狀態(tài),將DMZ主機(jī)IP設(shè)置為前面查到的192.168.1.103,然后保存,如圖4.
圖4
這樣就把本機(jī)的IP映射到外網(wǎng)上,就可以從外網(wǎng)直接訪問自己的電腦。
2.打開網(wǎng)絡(luò)調(diào)試工具,選擇協(xié)議類型為“TCP Server”,本地端口號可以設(shè)置為“8000”,點(diǎn)擊連接,如圖5所示。
圖5
3.發(fā)送AT指令進(jìn)行GPRS測試
在連接好硬件后,可以先發(fā)送ATE0指令關(guān)掉回顯。
1)AT+CGCLASS=”B”
設(shè)置GPRS移動臺類型為B.
收到回復(fù)OK,表示設(shè)置成功。
2)AT+CGDCONT=1,”IP”,”CMNET”
定義PDP上下文,設(shè)置PDP上下文標(biāo)志為1,IP協(xié)議,接入點(diǎn)為CMNET.
收到OK,表示成功。
3)AT+CGATT=1
附著GPRS
收到OK,表示成功。
4)AT+CIPCSGP=1,”CMNET”
設(shè)置GPRS連接,接入點(diǎn)為CMNET.
收到OK,表示成功。
5)AT+CLPORT=”TCP”,”2000”
設(shè)置本地TCP端口為2000.
收到OK,表示成功。
6)AT+CIPSTART=”TCP”,”112.87.243.40”,”8000”
啟動連接到PC,IP和端口為前文所述。
等待一會兒,收到CONNECT OK,這時(shí),表明開發(fā)板已經(jīng)通過GPRS與PC建立連接。如圖6所示。
圖6
7)在串口工具中通過下面的指令發(fā)送數(shù)據(jù)
首先發(fā)送AT+CIPSEND
這時(shí)收到回復(fù) 》
發(fā)送一組字符(不發(fā)送新行):Hello SIM900A!
然后,以16進(jìn)制方式發(fā)送1A,即發(fā)送0x1A
收到回復(fù)SEND OK,表示發(fā)送成功,如圖7所示。
圖7
這時(shí)網(wǎng)絡(luò)調(diào)試工具收到剛發(fā)送那串字符,如圖8,【Receive from 117.136.19.111 : 30549】這是由網(wǎng)絡(luò)調(diào)試工具自動加上的信息,表示開發(fā)板上SIM900A模塊的IP為117.136.19.111,端口為30549.
圖8
這時(shí)通過網(wǎng)絡(luò)調(diào)試工具發(fā)送一串字符 Hello EDNChina
接著在串口調(diào)試工具端可以收到這組字符,如圖9所示。
圖9
最后關(guān)閉TCP連接,先發(fā)送AT+CIPCLOSE=1,再發(fā)送AT+CIPSHUT,如圖10所示。