挖掘机远程监测系统的研究与设计 联系客服

发布时间 : 星期四 文章挖掘机远程监测系统的研究与设计更新完毕开始阅读66b081a5f8c75fbfc77db2fd

第四章 车载终端的软件系统设计

4.2.3 GPS数据解析

在上一节中,接收到的GPS数据存储在缓存数组中,这些数据都是一长串的字符串,在经过分类提取并进行处理解析之前是无法加以利用的,因此需要通过GPS数据解析程序对存储在缓存数组中的GPS原始信息进行处理,将所需的时间、日期、经纬度等信息从GPS字符串的各个字段中提取出来,并进行数据处理。由于GPS字符串中的各个字段由逗号分隔,而且所需提取的信息在字符串中的位置和长度是固定的,因此可以以逗号作为分隔符来截取所需的信息。例如,UTC时间的原始数据在字符串的第一个逗号和第二个逗号之间,通过查找第一个逗号在存放字符串的数组中的序号,将这个序号的值加1即可得到UTC时间在字符串中的位置,从而对该数据字段进行提取。需要解析的GPS数据包括GPRMC语句和GPGSV语句,GPGSV语句和GPRMC语句的数据解析的流程图如图4-3和图4-4所示。

变量初始化N是否为GPGSV语句?YN数据是否有效?Y在字符串中搜索逗号获取第3个逗号在字符串中的位置提取可视卫星数量结束

图4-3 GPGSV语句解析流程图

Fig 4-4 Flow chart of the sentence’s parse of GPGSV

27

内蒙古工业大学硕士学位论文

变量初始化N是否为GPRMC语句YN数据是否有效?Y在字符串中搜索逗号找到第1个逗号?Y找到第3个逗号?Y找到第4个逗号?Y找到第5个逗号?Y找到第6个逗号?Y找到第9个逗号?Y结束N提取时间N提取纬度N提取纬度方向N提取经度N提取经度方向N提取日期

图4-4 GPRMC语句解析流程图

Fig 4-4 Flow chart of the sentence’s parse of GPRMC

在将所需的信息提取出来后,需要对数据进行相应的处理,例如将度分格式的经纬度信息转化成度分秒格式的信息,将UTC时间转化成北京时间等。下面分别对时间

28

第四章 车载终端的软件系统设计

/日期、经度/纬度的数据处理做下介绍。 1.时间/日期数据处理

从GPRMC语句中提取出来的时间为UTC时间,也就是格林威治时间,而我们需要的是北京时间,因此需要对原始的时间信息进行转化。UTC时间比北京时间要晚8个小时,要想得到北京时间,需在UTC时间的基础上加上8个小时。由于GPS模块输出的语句采用ASCII码,即从GPRMC语句中提取的原始数据为字符型数据,因此,在进行时间/日期数据转换之前,需将字符型数据转换成整型数据。在进行时间转换的过程中要注意平闰年、日期以及月份的问题[55]。 2.经度/纬度数据处理

从GPRMC语句中提取出的经纬度数据格式为度分,而我们需要得到度分秒格式的数据,因此需对经纬度数据进行相应处理,同时间日期数据处理一样,首先要将原始数据的数据类型进行转换,将字符型数据转换为浮点型数据,然后对数据格式进行转换,具体的转换方法如下所示:

如接收到的纬度数据为3546.40891,则, 3546.40891÷100 = 35.4640891可以直接读出35度 3546.40891–35 × 100 = 46.40891 可以直接读出46分 (46.40891–46)× 60 = 0.40891×60 = 24.5346 读出24秒 所以纬度是:35度46分24秒。

通过同样的方法也可实现经度数据格式的转换。在对这些数据进行处理后,所有GPS数据将存至一个结构体中,为后续的液晶显示和数据上传工作做准备。

4.3 CAN通信模块设计 4.3.1 CAN总线通信协议

在第二章中已经介绍到,CAN总线上的传输的报文包括四种帧类型:数据帧、远程帧、错误帧和过载帧,在本课题中,主要是进行数据帧的传输,因此只对数据帧的帧结构进行相关介绍。CAN控制器MCP2515完全支持CAN2.0B协议,该协议支持两种不同格式的数据帧:具有11位标识符的标准数据帧和具有29位标识符的扩展数据帧。在本课题中,采用的是标准数据帧。

CAN2.0B协议给出的标准数据帧由7个不同的位场组成,包括帧起始、仲裁场、控制场、数据场、CRC场、应答场和帧结尾,其帧结构如图4-5所示。

29

内蒙古工业大学硕士学位论文

帧间空间数据帧帧间空间或超载帧帧结束仲裁场帧起始控制场数据场CRC场应答场

图4-5 报文的数据帧结构

Fig 4-5 The data frame’s structure of the message

(1)帧起始帧起始(SOF)是数据帧的开始标志,它仅由一个“显性”位组成。只有当总线处于空闲状态时才允许各节点开始发送报文。所有节点必须同步于首先开始发送报文的节点的帧起始前沿。

(2)仲裁场

仲裁场用于写明发送的帧类型、帧格式以及标识符等信息。在标准数据帧中,仲裁场由11位标识符(ID.10-ID.0)和远程发送请求位(RTR位)组成,RTR位用于区分报文的帧类型,即报文是数据帧还是扩展帧。

(3)控制场

控制场由6个位组成。在标准数据帧中,控制场包括4位数据长度代码(DLC3-DLC0)、IDE位以及保留位r0。数据帧中的数据字节数只能为0-8中的某个整数值。

(4)数据场

数据场由数据帧里的发送数据组成。它可以为0-8个字节,其中每个字节包含8个位,发送报文时,首先发送的是最高有效位。

(5)CRC场

CRC场包括CRC序列(CRC Sequence)和CRC界定符(CRC Delimiter),用于数据帧的校验。CRC序列由循环冗余码求得的帧检查序列组成,它最适合用于那些位数低于127位的帧。CRC序列的后面是CRC界定符,它只包含一个“隐性”的位。

(6)应答场(ACK Field)

应答场由应答间隙(ACK Slot)和应答界定符(ACK Delimiter)组成,长度为两个位。在应答场中,发送器发送两个“隐性”位,当一个接收器正确地接收到有效报文时,会在应答间隙期间向发送器发送一个“显性”位以示应答。应答界定符是应答场的第二个位,而且它还是一个必须为“隐性”的位。

(7)帧结尾

每个数据帧都以7个连续的隐性位作为帧结束的标志。

30