lklhzu 发表于 2014-1-7 09:25:38

怎样用单片机把GPS的GPRMC信息转换成BCD码?

本帖最后由 lklhzu 于 2014-1-7 09:28 编辑

买了台GPS设备,发到服务器上的数据为十六进制的BCD码,这样挺节省流量的,想自己DIY一个定位器玩玩。GPS输出的数据应该为字符串,怎样用单片机把GPS的GPRMC信息(字符串)转换成BCD码?麻烦做过的朋友给个思路。

STM32_Study 发表于 2014-1-7 09:30:26

这还需要什么思路?你自己都说出来了。按照规则转换就是了

wolyond 发表于 2014-1-7 09:31:42

建议直接保存有用信息不就行了,BCD的话范围太窄了

lklhzu 发表于 2014-1-7 09:38:13

STM32_Study 发表于 2014-1-7 09:30
这还需要什么思路?你自己都说出来了。按照规则转换就是了

主要是需要把GPRMC里面的时间、日期、精度、纬度、速度、方向等信息提取出来,然后转换。
1、提取的信息字节长度不是偶数怎么处理?
2、像精度、纬度、速度、方向等里面有小数点,转换的时候要怎么处理?

lklhzu 发表于 2014-1-7 09:39:16

wolyond 发表于 2014-1-7 09:31
建议直接保存有用信息不就行了,BCD的话范围太窄了

想把gps有用信息通过gprs发送出来,转换成BCD码节省流量。

wolyond 发表于 2014-1-7 09:41:56

每一个数据都以这个数据最宽长度进行BCD压缩,小于最宽长度前面补零

STM32_Study 发表于 2014-1-7 09:42:52

提取部分,直接根据GPRMC的规则来提取,用逗号分割的。
转换部分,那就要看你服务器那边接收的到底是什么数据规则了。小数点、长度之类的怎么处理是要看你服务器的规则

lklhzu 发表于 2014-1-7 09:48:29

STM32_Study 发表于 2014-1-7 09:42
提取部分,直接根据GPRMC的规则来提取,用逗号分割的。
转换部分,那就要看你服务器那边接收的到底是什么数 ...

买了一台设备发出来的数据是这样的:59 00 00 02 FA 00 08 06 53 01 01 14 36 39 82 75 00 11 70 82 96 3E 00 01 73 BF FF FB FF FF 00 3B
里面已经把小数点什么的去掉了,每一部分的数据长度都是偶数,感觉他处理的挺不错的。

STM32_Study 发表于 2014-1-7 10:23:47

连你自己都不知道转换规则呀

那建议你这样,把GPS输出的数据和设备发出的数据同时截取保存下来

然后一条一条慢慢对着分析,把规律找出来

只能帮你到这里了

lklhzu 发表于 2014-1-7 10:29:29

STM32_Study 发表于 2014-1-7 10:23
连你自己都不知道转换规则呀

那建议你这样,把GPS输出的数据和设备发出的数据同时截取保存下来


嗯,谢谢你,我先试试。

liuzhen526 发表于 2014-1-10 11:57:00

一般BCD表示的话可以弄成经度纬度各4个字节这样可以表示ddd ff.fff和dd ff.fff(最高位2个都没用到,可以用最高的bit表示东西南北)。
页: [1]
查看完整版本: 怎样用单片机把GPS的GPRMC信息转换成BCD码?