摘要:今天给大家安利一款最直观、灵活、强大的插件驱动高自由度的上位机VOFA+,作者想向大家传达VOFA+的愿景:在与电气打交道的领域里,如自动化、嵌入式、物联网、机器人等,都能看到VOFA+的身影。同时寓意每一位使用VOFA+的工程师,都可以站在巨人的肩膀上不断创新和探索。
为什么叫VOFA+?
Volt/伏特、Ohm/欧姆、Fala/法拉、Ampere/安培,是电气领域的基础单位,与他们的发明者——4位电子物理学领域的科学巨人,分别同名。他们的首字母共同构成了VOFA+的名字。
设计理念
在嵌入式硬件的调试中,尽管效率低下,工程师们还是十年如一日地使用着串口助手、超级终端这种命令行风格的数据收发工具,对硬件进行调试。以下几个原因限制了硬件工程师在调试中使用图形界面:
- 对于硬件IO,直接输出字节流,编程难度最低;
- 如果使用功能相近的行业专用上位机来进行图形化,需要处理复杂的协议;
- 为了一个临时的调试需求,开发专用上位机,工作量大,得不偿失;
- 工程师同时懂硬件、又懂软件,可遇不可求。
VOFA+特点概览
平台支持:Windows、Linux、MacOS;
接口支持:串口(超高波特率,稳定支持)、网口(TCP客户端/服务端,UDP);
协议支持:协议为插件,已开源,人人可编写。目前已支持CSV风格的字符串协议,和十六进制浮点数组形式的字节流协议;
控件支持:控件为插件,已开源,人人可编写。目前已支持波形图、按钮、状态灯、图片、滑动条、3D立方控件(可更换模型)等;
2维度与3维,一个也不能拉下;
自主研发的波形控件,支持每通道百万采样点的绘制,性能强劲;
自主研发的波形控件,无缝嵌入了实时直方统计和点数可设置的傅里叶变换,可以使用VOFA+进行数据分析。
传统字节流收发调试功能依然支持;
拖拽方式添加控件,交互流畅自然;
快捷的命令、参数绑定系统,发送指令同样优雅。
1、串口调试
如果只是想将本软件当成串口助手使用,选择RawData
协议,可以保证接收到什么打印什么;
RawData模式
1、选择调试方式、irewater协议引擎,并设置好参数。
2、打开串口,点击右上方的按钮。
3、单纯的发送数据
RawData协议适用于不需要解析数据,仅仅查看字节流的需求,做采样数据解析,RawData不做采样数据解析,接收到什么字节,便一五一十打印什么数据。
Firewater模式
本协议是CSV风格的字符串流,直观简洁,编程像printf简单。但由于字符串解析消耗更多的运算资源(无论在上位机还是下位机),建议仅在通道数量不多、发送频率不高的时候使用。
1、选择调试方式、irewater协议引擎,并设置好参数。
2、打开串口,点击右上方的按钮。
3、数据格式解析
如果想要显示波形图,发送给上位机的格式需要按照特定的格式来写。
"<any>:ch0,ch1,ch2,...,chN\n"
- any和冒号可以为空,但换行(\n)不可省略;
- any不可以为"image",这个前缀用于解析图片数据;
- 此处\n为换行,并非指字符斜杠+字符n;
- \n也可以为\n\r,或\r\n。
发送2个曲线的数据长这个样子
"zhiguoxin: 1.38657,1.53566,\n"
4、编写代码
stm322代码实例
#include "delay.h"
#include "usart.h"
#include "math.h"
int main(void)
{
float t1 = 0;
float t2 = 0;
delay_init(168);
uart_init(115200);
while(1)
{
t1 += 0.1;
t2 += 0.5;
printf("zhiguoxin:%f, %f\n", sin(t1), sin(t2));
delay_ms(100);
}
}
2、特色的人机交互
1、控件拖拽添加
您可以通过拖动的方式添加控件;添加完控件,在右键菜单里可以绑定数据通道; 删除控件的操作,也在右键菜单里。
2、控件全屏操作
鼠标移动到控件边沿,会弹出双击全屏的提示;控件全屏状态下,移动到边沿拖拽、或双击,可以退出全屏。
3、采样缓冲控制
采样缓冲控制区类似进度条的部件,可以对缓冲区进行可视化操作。
4、功能栏交换
软件每个功能栏位置可以交换。
5、界面切豆腐
每个功能栏可以通过双击标题位置,切割为独立窗体。
3、数据解析、命令发送
对于VOFA+来说,数据、命令、参数贯穿始终,可以随处绑定,所有丰富的功能都以这3个对象为根基衍生而来。了解了数据、命令、参数这3个元对象,您就把握了VOFA+的设计逻辑,可以举一反三。
数据
数据是指通过协议引擎,从下位机发送的字节流中解析出的数据,它们展示在软件的右边栏。通过控件的右键菜单,数据被可以被绑定到自定义控件上,控件的状态将跟随数据实时改变;通过点击通道的名字,可以对名字进行修改;
如果我们在调试平衡小车或者四轴飞控时,使用下面这个控件就会很方便。数据I0、I1、I2分别被绑定在Cube控件欧拉角的X、Y、Z分量上;图片也指出了修改数据通道名字进行的位置。
如果你在调试小车或者飞控的时候也可以更改模型。把正方体改成你想要的模型,只需要在网站上下载一个.stl文件的模型导入就可以了。
这要你在调试飞机的时候就变成了了这样,帅不帅?
图片数据
图片数据是指通过协议引擎,解析出从下位机发送来的字节流中图片数据,它们可以在图片控件<指定图片>子菜单中查看。下图展示了图片通道img0被选中的样子:
发送命令
命令在左边栏中,由用户自行添加,支持的数量不限,可以保存和载入。通过控件的右键菜单,命令可以被绑定到控件上;这样上位机就可以愉快的向下位机发送数据了。
有时候,我们想要通过操作控件来发送不同的命令,这时候参数就派上用场了。我们可以在命令中输入参数占位符,用来接收控件的参数,不同模式的占位符:
- Str模式(Asci):%f、%d等printf函数可以识别的占位符;
- Hex模式(十六进制):%% 。
控件的不同状态对应不同的参数,控件的参数可以在右键菜单里进行设置。
参数拥有两种模式:
- 当所绑定命令为Str模式时,参数为Float模式,可以在发送参数子菜单中输入抬起、按下分别对应的浮点参数;
- 当所绑定命令为Hex模式时,参数为Hex模式,可以在发送参数子菜单中输入抬起、按下分别对应的十六进制参数;
4、终极大招—皮肤
你以为这样就完了?
这么好看的软件怎么能只有一种皮肤呢?
EyeCareBigBullBluelronmanDarkHelmetPointConnections这么棒的软件收费吗?
这个软件是免费的,所有功能全部免费,而且软件的协议和控件已经开源,人人可以参与编写。下载链接https://www.vofa.plus/。对于个人用户,主题是VOFA+的唯一需要授权解锁的内容。就跟吃鸡王者一样,游戏免费,但是你想买皮肤肯定要收费啦!
最后给大家带来一段利用伏特加播放的:烂苹果。
End