2. 2 GPS 模块
由于该GPS 模块设置信息掉电丢失, 在每次系统启动时均要对该GPS 模块进行初始化。将模块设置成每秒钟输出一次GPS 信息。
系统启动后, 模块接收GPS 信息, 然后解析出GPS 信息, 根据解析出来的经纬度信息与数据区中存储的站点信息比较, 计算出实际距离。如果距离到达阀值时, 启动GPS 报站中断。
该GPS 模块接收模块遵循NMEA. 0183 协议, 可以输出多种格式的数据帧, 均以“MYM”开头。输出数据采用的是ASCII 码字符, 内容包含了纬度、经度、速度、日期、航向及卫星状况等信息。帧格式达10 余种, 该系统所使用的仅限于$ GPRMC 定位数据帧格式。
系统启动后, 通过串口对GPS 模块进行设置,由于系统对实时性要求不高, 将GPS 设置为每秒钟输出一次RMC 数据。提取GPRMC 语句的思路是设置一个数据缓冲区, 把接收到的GPS 数据都放入这个缓冲区, 当缓冲区满了的时候就在缓冲区中查找是否接受到GPRMC 定位语句, 如果没有接收到则重新接收GPS 数据。如果找到了GPRMC 定位语句则还要判断该语句在缓冲区中的位置离缓冲区的最大字节数是否大于62个字节( 因为本程序中需要的GPRMC 定位语句所包含的字节数为62) , 然后通过多程序提取相关经纬度、时间和速度等信息并通过数据处理线程进行相关处理。系统工作流程如图3 所示。
图3 系统工作流程
2. 3 GPRS 无线通讯模块
由于GSM 模块内嵌TCP/ IP 协议, 可以直接调用AT 命令与服务器通过TCP、UDP 通讯。无线通讯分为上行数据转换模块和通讯模块2 个模块。
上行数据转换模块的主要功能是把接收到的GPS 数据或是相关的状态信息转换成约定好的数据格式以便同主信息中心的通讯。该模块会判断需要转换的数据是GPS 数据信息还是相关状态信息或是二者都有, 然后选择相应的转换程序。由上面的介绍可以知道接收到的GPS 数据都是顺序存放在数据缓冲区当中的, 需要什么数据就到缓冲区中相应的位置提取就可以了。数据都是以字符形式存放的, 所以实际要用的时候必须先转换成整形数据。