本篇,以最常用的串口通信作展示,示范如何通过VOFA+显示数据波形。
一、VOFA+ 下载
VOFA+ 是一款面向嵌入式开发的上位机软件,专注于硬件数据实时可视化与调试。它通过高效协议(如FireWater、JustFloat)将原始字节流转化为动态图形(波形图、3D控件等),兼具高性能通信(串口/网口)与零代码可视化优势。
软件提供全功能免费版本,无注册限制。
官网下载:https://www.vofa.plus
二、数据格式
1、数据协议种类
VOFA+,支持三种数据协议。
- FireWater:默认且最常用。功能强大,即能作为串口助手显示文本数据,也能解析并显示波形。
- JustFloat: 专为超高频率的浮点数据传输优化。用于极高刷新率的波形显示场景。较少用到。
- RawData: 纯粹的串口助手模式。仅显示原始数据(文本、16进制)。不解析数据,因此无法显示波形。
本篇将重点介绍最常用的 FireWater 协议。
2、FireWater 数据格式详解
FireWater 协议的核心思想是将数据点(通常是数值)嵌入到字符串帧中,VOFA+ 通过识别特定的分隔符来提取这些数据点并绘制波形。
它提供两种灵活的格式以适应不同场景:
- 方式1:"<any>:ch0,ch1,ch2,......chN\n"
- 方式2:"ch0,ch1,ch2,......chN\n"
格式解释:
- <any> 指任意前缀文本, 可以是任何字符组合 (英文字母、中文、符号、空格等),这部分内容会原样显示在VOFA+的“数据”区域,方便阅读调试信息、时间戳、标签等。
- 方式1中,<any>与数据之间,用英文的冒号":"作分隔!它是关键分隔符!VOFA+通过寻找第一个冒号来识别数据的开始位置。如果缺少这个冒号,或使用了中文冒号(:),该帧只能显示文本,无法解析波形。
- 方式2中,没有<any>,无需":"分隔符。
- ch0,ch1,ch2,......chN: 是实际的数据点,通常是整数、浮点数。每个chX代表1个通道的值。
- 数据点之间,用英文的分号","作分隔!它是关键分隔符!
- 数据点之间(逗号周围),允许存在任意空格。例如 "23.5, 24.0\n" 或 " 23.5 , 24.0 \n",都有效。
- 每帧数据,以"\n"结尾。它是帧结束标志!VOFA+ 只有检测到换行符
\n
,才会开始处理这一帧数据(显示文本并解析波形)。为了提高兼容性,强烈建议使用 "\r\n" 作为行结尾。
下面三个例子,都是有效示范:
printf("samples:1.1,3.2,-0.6,-0.9\n");printf("第%d帧数据: %4.3f, %04d, %d \r\n", myCNT, myFloat, myValue1, myValue5);printf(" %4.3f, %4.3f, %4.3f \r\n", v0, v1, v2);
三、VOFA+ 操作步骤
我们先看看STM32程序的示例,和数据在普通串口助手中的输出。
如下图,很简洁的ADC数据,每1s通过printf (已重定向UART1) 输出一次。
在串口助手XCOM中,输出如下:
程序的输出,能够在串口助手XCOM中正常输出。这些都是最基础、最常用的调试操作。
现在,关掉串口助手(必须关掉,不然它会占用端口,VOFA+无法检测到对应的端口)。
1、VOFA+ 与主流串口助手的操作区别
VOFA+的界面设计,与常用的串口助手有所不同。第一次使用时,可能会有点手足无措。
把它当成一个加强版本的串口助手即可。
最常用的参数配置,如下:
- 数据引擎:FireWater (默认)
- 数据接口:串口(默认)
- 串口参数:如同其它主流串口助手,默认即可
重点:连接按钮(打开串口),在左上角!
2、数据显示
点击 VOFA+ 的连接按钮(打开串口),按钮会从深蓝色,切换为浅蓝色状态。
当有数据传输时,这个按钮还会闪烁提示!
连接后,状态如下图。
- 下方:显示原始数据;
- 右侧:是VOFA+的解析数据; 它们后面可以被添加到控件中显示。
不能显示数据的解决
连接打开后,不能显示数据时,依次检查:
- 端口号、波特率 等通信参数 (用其它串口助手,跑一次相同参数,看看是否能收到数据);
- 检查下图中这个选项 (很多人坑在这个位置);
3、波形显示
① 添加 波形控件
在控件区,把需要的控件,拖到右方显示区。
② 填充方式
右击控件,选择填充方式,一般用全填充。
③ 添加通道
右击控件,Y轴,选择需要的通道。
能用的通道,就是右侧那些解析出来的通道。可以单个选择,也可以All 全部添加!
④ 调整波形
刚显示出来的数据,如图,很多时候是"不太好看"。
一般通过如下3个调整,可以把波形合适地显示出来。
(下图为了清晰地展示效果,只保留一个通道的波形)