2.2.4 辅助模块
在上面一些模块的介绍中可以看到,其中有一些关键性的数据必须支持用户自己配置,例如串口通信速度、停止位、网络驱动模块中GPRS所要连接的APN、账户、密码、工作模式(是作为服务器运行还是客户端运行)、静态IP还是动态IP等。这一部分数据由配置模块存储在外部存储器里,每次系统启动的时候再由配置模块载入。在辅助模块中还包括一个重要的子模块:远程管理模块,它实现对GPS终端的远程管理,包括远程跟踪和远程更新程序。系统的运行情况通过统计模块进行统计,然后可以通过远程管理模块进行上报。
2.2.5 系统监控模块
对于放在远程的一个无人看管的系统来说,最重要的一点就是容错能力,必须能够在任何错误的情况下自动恢复到正常运行状态,这一部分就是通过系统监控模块实现的。在GPS终端中,经常出现的异常包括有TCP连接中断和网络连接中断,这两种错误是有区别的,解决的方法也不一样。TCP连接中断指的是TCP连接进入异常状态,不能在该连接上进行数据的收发工作。这种错误产生的原因是GPRS网络有时会进入伪死状态,而导致虽然还在网络上,但是数据的收发工作无法进行。通过在每个连接上设置一个收发超时计时器可以发现这种错误。当有数据传输时即复位计数器,如果计数器超时,则表明TCP连接中断,此时应该根据工作模式而采取不同的处理。如果是工作在客户端模式,需要再次与服务器连接,如果工作在服务器模式,则只需要简单的断开连接即可。
对于网络连接中断的情况探测起来比较困难,一般是通过监测长时间没有数据通信来判断。如果一旦发生此类错误,则需要重新进行网络的连接工作。
由于软件难免会有一些未曾发觉的错误,在发生此类错误的时候则由硬件看门电路复位系统,并且在下次软件启动时将此类错误发生过的信息远程传送到服务器。
3 服务器端软件的设计
GPS服务器程序可以采用两种方式与远程的GPS终端建立连接,一种是采用TCP方式,另外一种是采用串口通信方式。在采用串口通信方式时,需要编制一个虚拟串口驱动程序,将一个TCP连接模拟成为一个串口,这样服务器就可以像操纵M12一样对远程的GPS终端进行操作了。
GPS服务器和远程GPS终端之间的通信协议采用了原始的M12通信命令,核心模块在GPS服务器和M12之间进行了数据透明转发的作用。M12支持有两种通信数据格式: 一是Motorola二进制数据指令格式,在采用Motorola二进制格式时,通信速率可以保证在9600bps;另一种是NMEA-0183格式,其通信速率只有4800bps,同时在初始化GPS时还需要加入由Motorola二进制转化为NMEA-0183的指令。因此建议使用Motorola二进制数据格式。
在此设计当中,关键的环节在于两个方面,一是连接的建立,二是M12的初始化。GPS终端返回的定位信息数据格式如下:
@@Eamdyyhmsffffaaaaoooohhhhmmmmvvhhddtntimsd imsdimsdimsdimsdimsdimsdimsdsC。
时间信息:m月,d日,yy年, h小时,m分,s秒。
位置信息:aaaa纬度,oooo经度,hhhh椭球高度。
在所有信息终止的前的一个字节为校验和,是所有信息字节的“异或”。
收到数据后,只要对数据进行解码,就可以获得定位信息以及时间。
4 服务器端的考虑
在GPRS联网中,必须注意的一个概念是APN。在登陆GPRS时,采用的APN不同,GPS终端和服务器之间所能采用的方式也有所不同。
如果采用公网APN(cmnet),那么服务器端只要有一固定公网IP即可,此时Radius服务器由移动公司提供,GPS终端上网后的IP也是由移动公司的Radius服务器随机分配的。GPS终端与服务器必须经过NAT(Network Address Translation,网络地址变换)后才能通信,而从我们数据服务器看过去的GPS终端的IP地址也不是它的真正地址。因此,GPS终端与数据服务器之间的连接只能由GPS终端发起,换言之,即GPS终端只能工作在客户状态。在采用公网时虽然可以节省开支,但需要考虑安全性问题,因为这时候是与Internet直接连通的,并且客户之间也不可以直接访问。