最近在做6轴的姿态解算模组,调试过程中,总是想看一下中间数据的滤波情况,也想同时监测一下最终的姿态状况,苦于找不到一个比较好的观察工具,使用FreeMaster只能看看曲线,不够直观。
偶然发现了VOFA这个串口工具,第一眼就被它的界面UI给震惊到了。相比其他的串口工具,真的可以用惊艳来形容,下面是大名鼎鼎的SSCOM,界面从眼前窜出一股老古董的味道,好用是好用,不能曲线显示。
VOFA就不同,除了可以看到实际打印的调试信息,还可以快速的将数据展示成曲线,不仅直观,而且好看。欣赏一下:
先说优点
VOFA 支持各种皮肤,氪金后是可以更自由的张扬自己的个性。同时,VOFA支持很多空间,利用这些控件,我们可以直观的展示数据曲线,折现,直方图,还有各式各样的仪表盘和3D模型展示。
另一方面,我们如果想将数据通过串口发送给VOFA,也同样的直观,只需要我们实现了字符串的打印即可,这里肯定是重定向后的printf最好用。
只需要使用printf将我们需要展示的数据以数值的形式打印出来即可,别忘了最后面的换行符号。
uart_printf("%.2f,%.2f,%.2f\n",(float)g_Imu.swPitch/1000,
(float)g_Imu.swRoll/1000,
(float)g_Imu.swYaw/1000);
向上面这样,我就可以在VOFA中看到我算法输出的欧拉角数据了。
我们选择FireWater选项,然后就可以在下方的原始数据窗口看到打印的数据,同时在右侧的数据栏中看到跳动的数据。
这时候,我们只需要在右侧的菜单中,选择一个曲线控件,拖到我们的中央面板中,就可以将数据映射到曲线空间的Y轴上,此时各种颜色的线条就活跃起来了。
同样的,我们把3D模型展示的空间拖动进来,选择欧拉角模式,也可以快速的将打印的数据和3D模型空间链接,这样就可以非常直观的展示姿态解算的结果了。
除了使用printf来直接输出字符串的方式以外,他还提供了一种字节码的方式
这种方式其实本质上类似字符串的输出方式,首先我们吧逗号分割的字符串变成一个浮点型数组,然后在数组的最后面增加一个固定4字节数据做为结尾,比如图中的0x00 0x00 0x80 0x7f
这样的方式有什么优点呢?
那就是当浮点数的小数点后面位数比较多的时候,可以节省很多串口的带宽。
另外,VOFA通SSCOM一样,也支持很多命令调试模式,可以定义一些固定的命令发送,这对于调试一些AT指令的设备非常有好。
综合来看,只有一个缺点,那就是安装文件太多,不像SSCOM那样,一个exe搞定。