2 ATmega16与G20模块的接口程序设计
利用GPRS网络进行数据传输一般有多种组网方案,这里以其中一种方案进行说明,其他方案的数据终端实现方式类似。该方案采用数据中心公网固定IP,由监测点直接向中心发起连接。
G20模块自身内嵌了TCP/IP和UDP/IP协议栈,大大简化了接口程序的编写。G20模块串口通信默认在57 600 b/s的速率下进行,数据格式为:8位数据位、1位停止位、无奇偶校验和硬件流控制。
G20模块只能接受由ASCII字符代码组成的标准格式的AT指令。根据Developer′S Guide-Motorola G20 AT Commands所讲述的内容,一行G20模块的AT指令可以包含一条或者多条命令,这些命令必须由分隔符相隔,每个AT指令行不得超过140个字符。G20模块具体的AT命令行结构如图4所示。
每个AT命令行均以字符串“AT”为前缀,以回车符“<CR>”为后缀。命令行中各指令之间的分隔符可以为分号“;”或者空格。命令行中的英文字母可以是大写格式,也可以是小写格式。
每当G20模块接收到指令时都会输出相关的响应信息,以显示指令的执行结果。响应信息的数据格式如图5所示。响应信息由3部分组成:前缀、响应代码和后缀。其中,前缀和后缀一样,均为回车和换行符,即“<CR><LF>”;不同指令在不同情况下的响应代码也不一样。
在实际应用中,可以通过程序控制ATmegal6由其异步串行口按照既定的通信速率、数据格式和指令形式向G20模块发出控制指令,然后监视G20模块的响应信息,根据响应信息判断命令的执行结果,进而控制G20模块进行远程无线数据发送。利用G20模块实现GPRS数据发送一般要按照以下控制步骤进行(这里使用的是UDP协议):
(1)通过指令“at+mipcall=<Operation>[<APN>,[<User name>,<Password>-]]”建立一个GPRS无线链接,如“at+mipcall=1,cmnet”。在这里,“cmnet”是中国移动的APN名称。其中<Operation>可为0或1,0代表断开连接,1代表连接。[<APN>,[<User—name>,<Password>]]是可选项,无需时省去。如果链接建立成功,G20模块将会返回本机的IP地址,如“<CR><LF>0K<CR><LF><CR><LF>+mipcall:10.103.201.135<CR><LF>”,此时本机在移动内网的IP地址为:10.103.201.135。如果链接不成功,G20模块将会返回错误信息“<CR><LF>ERROR<CR><LF>”。