GPS数据模拟

今天用到了GPS数据,但是需要组成标准的数据包发给客户端去解析,在查看了常用的GPS数据包格式,最后选用了GPRMC字段的数据。

GPRMC数据格式很容易就可以搜索到:

$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh<CR><LF>


字段

参数

格式

字段0

帧头

$GPRMC

字段1

UTC时间

hhmmss.ss

字段2

状态

A/V,A代表有效,V代表无效

字段3

纬度

ddmm.mmmm

字段4

北纬/南纬

N/SN表示北纬,S表示南纬

字段5

经度

ddmm.mmmm

字段6

东经/西经

E/WE表示东经,W表示西经

字段7

速度

(knots)1 knots=1.852km/h

字段8

方位角

度(以真北为参考基准)

字段9

UTC日期

日月年,ddmmyy

字段10

磁偏角

000~180

字段11

磁偏角方向

E/W,东/西

字段12

模式仅NMEA0183 3.00版本输出

A:自动,D:差分,E:估测,N:无效

字段13

校验

hh

<CR><LF>

回车换行

\r\n


每个字段已经介绍的很清楚了,这里主要说一下校验和。

校验和是将$以后*以前(不包含$和*)的数据进行异或运算得出的十六进制数,代码如下,也很简单。


int checksum(const char* s)
{
    int c = 0;

    while (*s)
        c ^= *s++;

    return c;
}

例如:正确的数据包为" $GPRMC,080655.00,A,4546.40891,N,12639.65641,E,1.045,328.42,170809,,,A*60\r\n",则*后面的0x60是" GPRMC,080655.00,A,4546.40891,N,12639.65641,E,1.045,328.42,170809,,,A"通过上面函数计算出来的校验和。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值