查看原文
其他

VOFA+|一款最直观、灵活、强大的插件驱动高自由度的上位机(文末有福利)

智果芯 果果小师弟 2022-07-15

击上方“果果小师弟”,选择“置顶/星标公众号

干货福利,第一时间送达!

摘要:今天给大家安利一款最直观、灵活、强大的插件驱动高自由度的上位机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、终极大招—皮肤

你以为这样就完了?

这么好看的软件怎么能只有一种皮肤呢?

EyeCare
BigBull
Bluelronman
Dark
Helmet
PointConnections

这么棒的软件收费吗?

这个软件是免费的,所有功能全部免费,而且软件的协议和控件已经开源,人人可以参与编写。下载链接https://www.vofa.plus/。对于个人用户,主题是VOFA+的唯一需要授权解锁的内容。就跟吃鸡王者一样,游戏免费,但是你想买皮肤肯定要收费啦!不过果子哥处处为咱家读者考虑,为大家免费申请了20套价值3000+元的皮肤密钥

如何获取秘钥?

这次就不抽奖了,大家下载软件后写一篇较为详细使用软件的文档介绍,如果你正在参加比赛,或者正在做平衡小车或者调试飞控,写一篇调试心得。然后在9月份之前发给小编即可。这样做的目的主要是为了让真正需要的小伙伴能够愉快的使用

最后给大家带来一段利用伏特加播放的:烂苹果。


End


推荐好文  点击蓝色字体即可跳转

【收藏】烂大街的ESP82666该咋玩
☞【鸡汤】一个普通人的大学四年
☞【干货】基于STM32的PS2遥控小车
☞【干货】手把手教你写一个安卓APP
☞【干货】手把手教你写单片机的指针
☞【干货】手把手教你写一个串口调试助手

欢迎转发、留言、点赞、分享感谢您的支持!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存