基于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不断查询串口接收缓冲区即可实现数据接收,也可以采用接收中断的方式提高运行效率。本文引用地址://m.amcfsurvey.com/article/157699.htm
3 结 语
GPRS数据传输链路中GGSN(网关GPRS支持节点)占用的端El的存活时间是有限的,如果链路空闲超时,连接就会断开,可通过定时发送数据短帧的方式来维持链路。经测定,本地(广州)的GPRS数传链路维持时间为60 s。基于ATmegal6的GPRS数据终端成本低,易于推广普及,可用于远程数据采集、系统监测和Internet远程接入等领域。
评论