首先我们先了解一下GPRS的整个连接的建立过程,这个是我根据我的理解建立的连接过程,一家之见而已。
本人使用的是sim300模块,今天先谈谈GPRS中TCP连接的简易过程。
结合流程图讲解初始化系统变量,这个很好理解,GPRS模块初始化,sim300在上电或者复位以后都有个话机初始化的过程,大家用手机就知道,我在处理这个过程的时候是检查到上电或者是复位信号以后,等待 Call Ready命令的到来,当系统受到Call Ready命令后进入到GPRS的配置过程。
第二步,检查发送检查信号强度命令,检查周围信号是否是好的,不好,休息一会儿继续检查信号强度。
第三步,设定GPRS通信带+IPD的包,这个单片机处理起来比较简单,容易区分于短信命令。
第三步,设置固定地址访问,等完成了这些初始化的命令后,我们进入了第四步,开始真正的GPRS设定模式。
第四步,我习惯先查询GPRS的状态,在STATE:IP INITIAL,的时候就发送启动GPRS命令,等待一下接着查询GPRS的状态信息接着就按照流程图上的信息来。
0 IP INITIAL 初始化
1 IP START 启动任务
2 IP CONFIG 配置场景
3 IP IND 接受场景配置
4 IP GPRSACT 场景已激活
5 IP STATUS 获得本地 IP地址
6 TCP/UDP CONNECTING 与 SERVER 建立连接阶段
7 IP CLOSE 连接已关闭
8 CONNECT OK 连接建立成功
当出现IP GPRSACT的时候,GPRS的链接已经建立了,当出现IP IND 的时候查询可能是出现欠费了,哈哈。如果出现TCP CONNECTING
在查询状态的时候一直检查不到CONNECT OK,请检查公网IP地址设置对不对。
发送报文的方式可以使用
一、 AT+CIPSEND等待<后发送要发送的数据以ctrl+z(0X1A)结束我一般不使用这样的方式,我的数据通常 以16进制数据为主,这样会造成一定的问题。
二、 我一般喜欢使用AT+CIPSEND=10,固定包长度的发送方式进行数据的发送
Notes:我在实际运用中发现sim300的一个问题当使用AT+CIPSEND发送数据的时候,他收到<后写入要发送的报文他无响应,不返回send ok,然后不官写什么命令都不响应,好像模块死机了一样,我解决问题的办法是单片机关闭GPRS模块后重启,就可以了。这个问题困惑很久,也不知道是不是片子的bug。
未完。。。sim300短信包的解码实现请听下回分解。。。。
用户1033774 2013-12-5 07:12
用户377235 2012-12-10 18:04