本帖最后由 冥冥 于 2013-5-3 20:48 编辑
估计是标题不给力上一篇送源码送文档的帖子——GPS语句解析代码的一些研究[原创](通用GPS解析代码),没有想象中的反响激烈,但是既然话都放出来了,说要再发点小工具就一定要遵守诺言啊。
相信很多同学已经用过一个很好用的GPS数据分析工具VisualGPS,我这有个汉化版的,当然了,还有其他工具也可以实现例如SiRFdemo,看论坛上有给的3.4的,我给个比较新的版本3.87,这两个工具都不仅可以通过串口读入也可以通过读文件形式读入。
有了这两个工具应付一般的GPS测试就足够了,定点的实时定位散点图,动态误差,实时卫星信号强度都可以轻松取得,但是对于单北斗芯片和双模芯片就有问题了,因为这两款软件都是专为GPS协议制作的工具,所以有了以下工具,先是两款比较好用的文本处理工具。
txttool,这个工具可以方便的提取出你所需要的目标行,譬如你做了一组双模实验,卫星信号GSV必然有两组,如果直接暴力的替换后就会让分析工具不知所措你就会发现卫星信号在不断变化闪烁,甚至你提高命令读取速度后直接就不显示了,所以应该先利用该工具提取有用信息或去掉无用信息后再做分析。txttool你值得拥有!重度vim玩家请无视,给跪orz
TextForever,可以很方便的对文本进行替换操作,方便将北斗协议中的BD更改为GP,双模芯片中GN改为GP,可以同时添加多条规则,这种方法同样适用于GLONASS系统(GL打头,是基佬的意思吗?)和牛逼的三模芯片,因为他们都服从NMEA0183。说的这里有人发话了,记事本不是也可以干嘛?说的好,这个的优势在于批量替换,如果你做了大量实验,一个个来就崩溃了吧。
好吧说了这么多都是别人的工具,有木有,其实不看完全文就急着下完附件走人的,会发现经过以上过程处理过的非GPS命令会无法识别,为什么?这就要说道校验码的问题了。
NEMA校验码算法,姑且这么叫吧,没学过通信没查出来这种校验方式叫什么,简单地说就是把$和*之间的字符的ASCII码依次异或(C里是这个符号^)过去,然后将结果的十六进制形式写在*后面。例如$PMTK103*30<CR><LF> 0x30='P'^'M'^'T'^'K'^'1'^'0'^'3'
所以直接替换后当然校验和就不对了,于是作为c--的coder,果断不能忍自己写了个校验工具,只要符合$XXX*??的规则都可以自动将前面的校验计算好填充到??中,工具会对其所在文件夹下所有txt文件进行校验操作,谨防误伤,工具没有界面报毒的自己用源文件编译。如果你有其他用途源码给了自己改吧,对代码有疑问欢迎提问,有更牛逼的方法欢迎提供。如果你只是想用用,压缩包里有exe。
一闪而过的截图
|