对接收机的四条语句进行筛选,分割,拼接,最后组成自定义协议 C++实现

目前在一家北斗导航公司做小小实习生,2023.4月任务之一就是为联系编写属于公司的自定义协议。

要求是对rtk接收机通过串口发送过来的四条卫星导航定位信息($GPGGA、$GPRMC、#BESTPOS2A、#HEADINGA开头的四句报文)进行提取,生成一条我想要的信息($XHT开头)

我的思路是先对rtk发过来的这四句话筛选,得到$ 和 #开头的两种,再对两种语句进行校验和计算,如果校验通过,便对其再筛选。

$开头是用异或校验,在$和*之间每一位和后一位进行异或校验,得到校验和

#开头的是把*之前的所有字符进行crc32校验,具体原理自己百度。

 先来句子看看吧,下面这四条语句便是接收机发过来的:

$GPGGA,021658.30,3119.52924134,N,12025.71518728,E,4,53,0.4,25.3666,M,7.9491,M,02,0*55
$GPRMC,021658.30,A,3119.52924134,N,12025.71518728,E,0.002,115.7,040423,6.1,W,D*28
#BESTPOS2A,COM1,0,58.0,FINE,2256,181036.300,119752,19,18;SOL_COMPUTED,NARROW_INT,31.32550422751,120.42859038966,25.3605,7.9491,WGS84,0.0095,0.0076,0.0180,"0",2.300,0.000,54,53,53,50,0,01,03,f3*6ef7d28e
#HEADINGA,COM1,0,58.0,FINE,2256,181036.300,119752,20,18;SOL_COMPUTED,NARROW_INT,1.9061,11.3497,-0.0133,0.0000,0.1247,0.2637,"999",54,47,47,44,3,01,3,f3*1c169c7a

*后面的是校验和,是发过来时候就有的,以第一条为例,我要做的是把第一条语句除了$和*后面的数($和*之间的内容),进行异或校验。校验完得到的数与*后面的数进行对比,一致就表示这条语句合格,这条语句在传输过程中是没有错误的,是完整的,可以利用。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值