基于ATmegal6的GPRS數據終端設計
(2)通過指令“at+mipopen=Socket ID>,Source Port>,Destination IP>,DestinationPort2>,Protocol2>”打開一個端口(Socket),如“at+mipopen=l,2000,“219.222.73.240”,6800,1”。其中,Socket ID2>是本地端口號,G20模塊一共可以打開4個端口,端口序號分別是1~4;Source Port>是G20模塊本機的端口號,其數值可以是0~65 535;“Destination IP”>是目標IP地址,可以是直接連接到Internet公網的某臺PC的IP地址。DestinationPort>是目標的端口號,其數值可以是0~65535。Protocol>是協議棧類型,其數值可以為0或1,0代表是TCP協議棧,1代表UDP協議棧;如果端口打開成功將返回“CR>LF>OKCR>LF>CR>LF>+MIPOPEN:Socket ID>,State>CR>LF>”,如“CR>LF>OKCR>LF>CR>LF>+MIPOPEN:1,1CR>LF>”。如果端口打開不成功,將會返回錯誤信息“CR>LF>ERRORCR>LF>”。
(3)通過指令“at+mipsend=Socket ID>,Data>”將需要發送的數據壓入G20模塊的發送堆棧。如“at+mipsend=1,4142434445”。這里的Socket ID>是前面已經打開的端口序號,Data>是所要發送的數據,數據格式必須是用十六進制表示的數據(數值或者字符)的雙字節ASCII值。如要發送的數據為“ABCDE”(A、B、C、D和E的ASCII數值分別為0x41,0x42,0x43,0x44和0x45),則要將“4142434445”作為Data>壓入發送堆棧。指令操作成功時,G20模塊返回信息“CR>LF>+MIPSEND:Socket ID>,Free Size>CR>LF>CR>LF>OKCR>LF>”,如“CR>LF>+MIPSEND:1,1367CR>LF>CR>LF>OKCR>LF>”,其中Socket ID>是端口序號,Free Size>是指堆棧中的剩余空間,其數值可為O~1372。如操作不成功,G20模塊將會返回錯誤信息“CR>LF>ERRORCR>LF>”。
(4)通過指令“at+mippush=Socket ID>[,“Destination IP”>,Destination Port>]”將特定序號發送堆棧中的數據出棧,如“at+mippush=1”執行這條指令之后,堆棧中的數據就被發送出去了。這里所說的堆棧序號是和前面所述的端口序號一一對應的。方括號中的內容是可選項,不需要時可以省去。數據發送成功時,G20模塊返回信息“CR>LF>+MIPPUSH:Socket ID>CR>LF>CR>LF>OKCR>LF>”,如“CR>LF>+MIPPUSH:1CR>LF>CR>LF>OKCR>LF>”。如數據發送失敗,G20模塊將會返回錯誤信息“CR>LF>ERRORCR>LF>”。
(5)反復進行上述步驟(3)和(4),直至所有數據發送完畢為止。
(6)通過指令“at+mipclose=Socket ID>”關閉已打開的端口,如“at+mipclose=1”。端口關閉成功時,G20模塊會返回信息“CR>LF>OKCR>LF>CR>LF>+MIPCLOSE:Socket ID>CR>LF>”,如“CR>LF>OKCR>LF>CR>LF>+MIPCLOSE:1 ID>CR>LF>”。如果端口關閉不成功,G20模塊將會返回錯誤信息“CR>LF>ERRORCR>LF>”。
(7)通過指令“at+mipcall=0”關閉GPRS網絡連接。如果網絡連接關閉成功,G20模塊將會返回信息“CR>LF>OKCR>LF>CR>LF>NOCARRIERCR>LF>CR>LF>+MIPCALL:0CR>LF>”。如果網絡連接關閉不成功,G20模塊將會返回錯誤信息“CR>LF>ERRORCR>LF>”。
另外,G20模塊接收到遠程終端通過GPRS網絡發送過來的數據時會自動從其串口輸出該數據。如果接收到的是UDP協議的數據,G20模塊會以以下數據格式輸出:
CR>LF>+M1PRUDP:Source IP>,Source Port>,Socket ID>,Left>,Data>
其中,Source IP>是發送方的IP地址,Source Port>是發送方的端口號,Socket ID>是本機端口序號,Left>留在堆棧中的接收數據字節數,Data>是所接收到的數據。如果接收到的是TCP協議的數據,G20模塊會以以下數據格式輸出:
CR>LF>+MIPRTCP:Socket ID>,Left>,Data>
各部分含義如前述。編程使ATmegal6不斷查詢串口接收緩沖區即可實現數據接收,也可以采用接收中斷的方式提高運行效率。本文引用地址:http://www.104case.com/article/157699.htm
3 結 語
GPRS數據傳輸鏈路中GGSN(網關GPRS支持節點)占用的端El的存活時間是有限的,如果鏈路空閑超時,連接就會斷開,可通過定時發送數據短幀的方式來維持鏈路。經測定,本地(廣州)的GPRS數傳鏈路維持時間為60 s。基于ATmegal6的GPRS數據終端成本低,易于推廣普及,可用于遠程數據采集、系統監測和Internet遠程接入等領域。
評論