最近一个项目,需要做到GPRS模块和上位机进行通信。GPRS模块通过串口连接到arm板上,因此要进行通信首先要进行串口等初始化。
GPRS模块供电以后,SIM卡首先通过SGSN节点附在GPRS网络上(注册),然后通过PPP协议进行链接,接着GPRS网络给SIM卡分配一个动态的IP地址(网内地址)进行TCP/IP连接。
由于GPRS分配的是动态IP,所以主站的IP要固定,主站可以向移动提出申请固定IP(特殊服务,据说收费很贵),或者利用专网VPN服务。在建立连接以后,模块与上位机如何进行通信有两种协议:内部协议和外部协议。
内部协议是采用命令模式(AT指令集),外部协议采用命令模式或者数据模式。默认采用的是外部模式。可以通过AT指令设置成内部模式。
因此,要与主站进行通信的流程就变的很明朗。
以有方M590为例,真个流程如下:
1, 模块上电后初始化,初始化完毕后,会送出+pbready,;如果没有收到,检查模块串口是否通;2,检查SIM卡;3,检查信号强度;4,查询网络注册情况;5,设置内部协议栈;6,设置APN;7, 对于一些专网,如果需要用户认证指令,要进行用户认证;8,建立PPP连接;9,查询PPP链路状况;10,建立TCP/IP连接。
整个流程的话,代码量不大,购买GPRS模块会附送代码参考,省下很多开发时间。
关于AT指令集的参考文档,网上有很多资源。如果有需要的可以留言,我看到了的话会发给需要的人。