VOFA+ 显示数据、波形

本篇,以最常用的串口通信作展示,示范如何通过VOFA+显示数据波形。


一、VOFA+ 下载

VOFA+ 是一款面向嵌入式开发上位机软件,专注于硬件数据实时可视化与调试。它通过高效协议(如FireWater、JustFloat)将原始字节流转化为动态图形(波形图、3D控件等),兼具高性能通信(串口/网口)与零代码可视化优势。

软件提供全功能免费版本,无注册限制。

官网下载:https://www.vofa.plus


二、数据格式

1、数据协议种类

VOFA+,支持三种数据协议。

  1. FireWater默认且最常用。功能强大,即能作为串口助手显示文本数据,也能解析并显示波形。
  2. JustFloat: 专为超高频率的浮点数据传输优化。用于极高刷新率的波形显示场景。较少用到。
  3. RawData: 纯粹的串口助手模式。仅显示原始数据(文本、16进制)。不解析数据,因此无法显示波形。

本篇将重点介绍最常用的 FireWater 协议。

2、FireWater 数据格式详解

FireWater 协议的核心思想是将数据点(通常是数值)嵌入到字符串帧中,VOFA+ 通过识别特定的分隔符来提取这些数据点并绘制波形。

它提供两种灵活的格式以适应不同场景:

  • 方式1:"<any>:ch0,ch1,ch2,......chN\n"
  • 方式2:"ch0,ch1,ch2,......chN\n"

格式解释:

  1. <any> 指任意前缀文本, 可以是任何字符组合 (英文字母、中文、符号、空格等),这部分内容会原样显示在VOFA+的“数据”区域,方便阅读调试信息、时间戳、标签等。
  2. 方式1中,<any>与数据之间,用英文的冒号":"作分隔!它是关键分隔符!VOFA+通过寻找第一个冒号来识别数据的开始位置。如果缺少这个冒号,或使用了中文冒号(:),该帧只能显示文本,无法解析波形。
  3. 方式2中,没有<any>,无需":"分隔符。
  4. ch0,ch1,ch2,......chN: 是实际的数据点,通常是整数、浮点数。每个chX代表1个通道的值。
  5. 数据点之间,用英文的分号","作分隔!它是关键分隔符!
  6. 数据点之间(逗号周围),允许存在任意空格。例如 "23.5, 24.0\n"  或 " 23.5  ,      24.0  \n",都有效。
  7. 每帧数据,以"\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个调整,可以把波形合适地显示出来。

(下图为了清晰地展示效果,只保留一个通道的波形)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/93290.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/93290.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 插入数据提示字段超出范围?一招解决 DECIMAL 类型踩坑

MySQL 插入数据提示字段超出范围&#xff1f;一招解决 DECIMAL 类型踩坑 在日常数据库操作中&#xff0c;我们经常会遇到各种字段类型相关的问题。今天就来聊聊一个常见的错误&#xff1a;插入数据时提示字段值超出范围&#xff0c;以实际案例带你搞懂 MySQL 中 DECIMAL 类型的…

一周学会Matplotlib3 Python 数据可视化-绘制误差条形图

锋哥原创的Matplotlib3 Python数据可视化视频教程&#xff1a; 2026版 Matplotlib3 Python 数据可视化 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 课程介绍 本课程讲解利用python进行数据可视化 科研绘图-Matplotlib&#xff0c;学习Matplotlib图形参数基本设置&…

JVM垃圾回收器

垃圾回收算法标记-复制缺点&#xff1a;内存利用率低&#xff0c;有一块区域无法使用。标记-清除缺点&#xff1a;1. 效率问题 (如果需要标记的对象太多&#xff0c;效率不高)2. 空间问题&#xff08;标记清除后会产生大量不连续的碎片&#xff09;标记-整理分代收集根据对象存…

科研工具的一些注意事项

Origin Origin导入数据之后&#xff0c;可以考虑 [删除数据连接器…] 导入数据之后&#xff0c;删除数据连接&#xff0c;这样当原来的文件移动之后&#xff0c;就不影响origin文件里面的数据。不然就会出现空白数据&#xff1a;当然&#xff0c;没有数据了也可以加载出来&…

美国服务器环境下Windows容器工作负载智能弹性伸缩

在北美数据中心加速数字化转型的今天&#xff0c;企业客户日益重视Windows容器工作负载的智能化管理。本文将深入探讨基于Azure Stack HCI&#xff08;混合云基础设施&#xff09;的弹性伸缩方案如何突破传统资源调度瓶颈&#xff0c;通过分析指标收集、策略配置、混合云联动三…

欧姆龙CP系列以太网通讯实现上位机与触摸屏监控

一、行业痛点在现代工业生产中&#xff0c;自动化生产线的控制系统的高效性与智能化程度对生产效率和产品质量有着至关重要的影响。然而&#xff0c;许多传统工业生产线中使用的欧姆龙CP系列系列PLC以太网模块&#xff0c;由于自身设计原因&#xff0c;并未配备以太网接口&…

【大语言模型 00】导读

【大语言模型00】导读&#xff1a;你的LLM全栈工程师进阶之路关键词&#xff1a;大语言模型、LLM、Transformer、深度学习、AI工程化、全栈开发、技术路线图摘要&#xff1a;这是一份完整的大语言模型学习指南&#xff0c;涵盖从数学基础到商业落地的200篇深度文章。无论你是AI…

Business Magic

题目描述There are n stores located along a street, numbered from 1 to n from nearest to farthest. Last month, the storek had a net profit of rk . If rk is positive, it represents a profit of rk dollars; if rk is negative, it represents a loss of −rk dolla…

在ubuntu系统上离线安装jenkins的做法

作者&#xff1a;朱金灿 来源&#xff1a;clever101的专栏 1.安装java环境和下载war包&#xff1a; Jenkins 依赖于 Java 环境&#xff08;OpenJDK 11 或更高版本&#xff09;&#xff1a; # 安装OpenJDK 11和字体依赖 sudo dpkg -i openjdk-11-jre-headless_*.deb fontconfi…

图像相似度算法汇总及Python实现

下面整理了一些图像相似度算法&#xff0c;可根据不同的需求选择不同的算法&#xff0c;对每种算法进行了简单描述并给出Python实现&#xff1a; 1. 基于像素的算法&#xff1a; (1).MSE(Mean Squared Error)&#xff1a;均方误差&#xff0c;通过计算两幅图像对应像素值差的平…

IO流与单例模式

单例模式 单例模式是指一个类只能有一个对象。 饿汉模式 在单例模式下&#xff0c;在程序开始&#xff08;main函数运行前&#xff09;的时候创建一个对象&#xff0c;这之后就不能再创建这个对象。 class HungryMan { public:static HungryMan* getinstance(){return &ins…

Java设计模式之依赖倒置原则使用举例说明

示例1&#xff1a;司机驾驶汽车 问题场景&#xff1a;司机类直接依赖奔驰车类&#xff0c;新增宝马车需修改司机类代码。 // 未遵循DIP class Benz { public void run() { /*...*/ } } class Driver { public void drive(Benz benz) { benz.run(); } } // 遵循DIP&#xff1a;…

【Docker】openEuler 使用docker-compose部署gitlab-ce

docker-compose配置 services:gitlab:image: gitlab/gitlab-ce:latestcontainer_name: gitlabrestart: alwayshostname: gitlab.example.comenvironment:GITLAB_OMNIBUS_CONFIG: |# Add any other gitlab.rb configuration here, each on its own lineexternal_url https://gi…

ElasticSearch 父子文档使用简记

一. ES parent-child 文档简介 ES 提供了类似数据库中 Join 联结的实现&#xff0c;可以通过 Join 类型的字段维护父子关系的数据&#xff0c;其父文档和子文档可以单独维护。 二. 父子文档的索引创建与数据插入 ES 父子文档的创建可以分为下面三步&#xff1a; 创建索引 M…

【Linux】编辑器vim的使用

目录 1. vim的基本概念 2. vim的基本使用 3. vim命令模式操作 3.1 移动光标 3.2 删除 3.3 复制 3.4 替换 3.5 撤销 3.6 更改 3.7 跳转 4. vim底行模式操作 4.1 列出行号 4.2 跳到文件中的某行 4.3 查找字符 4.4 保存文件 4.5 离开vim 1. vim的基本概念 Vim&…

《零基础掌握飞算Java AI:核心概念与案例解析》

前引&#xff1a;飞算科技是一家专注于企业级智能化技术服务的公司&#xff0c;核心领域包括AI、大数据、云计算等。其Java AI解决方案主要面向企业级应用开发&#xff0c;提供从数据处理到模型部署的全流程支持&#xff01;飞算Java AI是一款基于人工智能技术的Java开发辅助工…

Chrome腾讯翻译插件transmart的安装

文章目录一、官网地址二、安装过程1. 下载插件2. 解压crx3, chrome安装三、如何使用一、官网地址 腾讯翻译插件官网 二、安装过程 1. 下载插件 点击上面的官网地址&#xff0c;下拉到如图所示chrome插件位置&#xff0c;点击立即下载 2. 解压crx 从压缩文件中解压出crx文…

IOMMU的2级地址翻译机制及多级(2~5)页表查找

IOMMU的2级地址翻译机制及多级(2~5)页表查找 摘要:IOMMU是现代计算机系统中用于I/O设备(如GPU、NIC、网络接口卡)的地址翻译和保护机制,类似于CPU的MMU(Memory Management Unit),但专为设备DMA(Direct Memory Access,直接内存访问)设计。它支持虚拟化环境(…

C++STL标准模板库详解

一、引言STL&#xff08;Standard Template Library&#xff09;是 C 标准库的核心组成部分&#xff0c;其中容器&#xff08;Containers&#xff09; 作为数据存储的基础组件&#xff0c;为开发者提供了丰富的数据结构选择。本文将聚焦 STL 容器的核心类型&#xff0c;结合具体…

神经网络 常见分类

&#x1f4da; 神经网络的常见分类方式可以从不同角度来划分&#xff0c;以下是几种主流思路&#xff0c;帮你快速梳理清晰&#xff1a;1️⃣ 按网络结构分类前馈神经网络&#xff08;Feedforward Neural Network, FNN&#xff09; 数据从输入层→隐藏层→输出层单向传递&#…