【RM2018 心得分享】裁判系统解析数据
633
0
3
2018-04-17
今年是玩robomaster的第三年,也是大学最后一年。以前没有逛论坛发帖子的习惯。但是快要毕业了,希望想留下一点什么。正好最近在调试裁判系统,所以决定写一些心得体会。也帮助一下第一次接触裁判系统数据解析的“萌新”(其实我也是一个新手。。。所以如果有什么写错的地方,希望大家指正。)
↓↓↓论坛上对我启发比较大的关于裁判系统的帖子Start↓↓↓
http://bbs.robomaster.com/thread-4289-1-1.html
这篇帖子写的真的是特别好,我也是看到这篇帖子才知道应该如何解析裁判系统的。所以大家一定要仔细看。
https://bbs.robomaster.com/thread-3650-1-1.html
电科的开源帖,真的全是干货!!!
↑↑↑论坛上对我启发比较大的关于裁判系统的帖子 End ↑↑↑
↓↓↓工具介绍(逻辑分析仪) Start↓↓↓
逻辑分析仪(淘宝购买 30元左右)
建议大家使用逻辑分析仪观察串口的数据。在我不会用之前一直都是使用串口调试助手,或者直接仿真去观察,其实使用仿真直接看数据很多东西是看不出来的。比如:串口调试助手会发来一大长串的数据,但是不会将帧与帧区分开,并且一大堆16进制的数据非常不容易分析。尤其是大疆裁判系统。。。很多实时的数据包,串口调试助手根本无法清晰的看出这些数据。真接仿真也很难观察到,所以建议大家使用逻辑分析仪。这个软件安装非常容易并且也很好找。逻辑分析仪教程在下面下载附件中可以下载(也可以自己在网上搜索)相信大家一定可以看懂
↑↑↑工具介绍(逻辑分析仪) End ↑↑↑
↓↓↓波形分析(打重点号)Start↓↓↓
在不对裁判系统进行任何操作(不记打装甲,不发射子弹)的时候波形如上图。
大家把网页放大看相信你可以发现有的数据帧长有的数据帧短。并且是每四个短的之后有一个长的。这个现象是可以在裁判系统手册上找到原因的。
在手册上用红色部分标注的就是原因所在。下面我们来解析一下数据。
按照裁判系统的协议可以看出来他的第6个字节是ID 0x0004(实时热量与功率)
这一帧数据的后半段的第6个字节是0x0008。所以不难看出这一帧数据是将这两段数据黏连在一起发出来的。因为是同频率的所以一起发来。可以数一下数据字节数一共是54个字节,这样也可以和裁判系统手册对应。
接下来我们解析一下那段长的数据帧。(这帧数据是71个字节,大家可以做一下减法就会知道另外一段数据是哪个了)
71-54=17
So
好啦数据分析完,我们看看应该如何处理这段数据。
1. 相信大家刚拿到这个数据第一想到的是帧头0xA5,这也是我刚开始接触数据解析的时候想到的判断第一位是否为0XA5,但是其实细想这样做其实意义不是很大。因为数据位也有可能会出现0xA5,如果希望通过帧头来判断这一个数据包是否正确,那不如直接使用DJI官方提供的CRC校验。
2. 解决每一帧数据不定长。可以串口的空闲中断配合DMA来使用(通过检测DMA的NDTR寄存器就可以筛选出固定长度的数据帧,电科前年开源程序有使用)
3. 就是CRC校验。大家可以先自行百度一下CRC校验的原理。但是要注意一点就是
大家一定注意,这个是整包校验,我之前以为是每帧的校验(可能这样想有点白痴了,原谅我第一次解析这个数据包),所以以我们之前解析的那个较短的数据帧来看,那个数据帧是有两个数据包的,所以相当于要校验2次。(如果更多的数据包相应需要更多的校验,被这个地方坑了一会,所以提醒大家一下,大佬勿喷。。。)
4. 此处是我的一个疑问。我看电科的开源这个地方其实很迷,因为
这是电科的备注,说明在2016年裁判系统的数据帧中也会有数据包叠加的现象,
但是我并不明白,为什么程序给我的感觉是所有的数据包都是分开发送了,因为如果是一帧过来那么我画横线处的代码相当于都是从这一帧数据的开始进行处理的,那样的话叠加的数据包不是应该减去前面那一帧数据的个数再开始处理嘛??
可能是我水平不够,如果有人明白为什么这样写的可以加QQ私聊,欢迎一起讨论)
5. 我在这里分享一下CRC校验一帧中第二个以后的数据包如何写,我最开始的想法是将第二个包的数据缓存在另外一个数组里。但是感觉好像这样有点太笨了,后来我们老师告诉我直接数组的首地址偏移就好了,瞬间被教做人。。。。好吧,我的水平还是有限。所以我的写法就是在数组地址处加偏移量。亲测有效。
6. 之后的工作就比较简单了,只要使用共用体(电科代码中有提到)就可以进行数据的转换了。
下面我们来看一下敲打装甲时候的数据包,但是貌似今年DJI把这个数据弄的更加“变态”,因为我找到2种方式发送这个数据包
下面是这两种方式,第一种是叠加在某一帧数据的前面。
第二种是独立的数据包。
其实解决方案是有的,如果你将上述解析固定频率的数据搞懂,相信处理这个数据应该不是难题。并且大疆这么做,应该是为了考虑实时性(其实我更相信是大疆研发工程师在为我们出难题,哈哈哈)
↑↑↑波形分析(打重点号) End ↑↑↑
原谅我没法将代码贴出来。所以大家如果有问题可以加我QQ:793831293 并且我的水平也是比较一般,所以可能有好多理解的还不是特别好,希望大家谅解。如果我哪个地方写错了,希望大家指正,我会立刻修改。最后希望我们学校今年可以取得好成绩~~~~~~
文章标签
请问这篇文章对你有用吗?
【RM2018 心得分享】裁判系统解析数据