VOFA+是一款功能强大、完全免费的上位机软件,通过直观简洁的协议将字节流翻译成多通道数据的软件,可以作为串口示波器软件,支持十六进制浮点数据,也支持CSV格式字符串流,非常适合数据处理。

VOFA+特点概览:

  1. 接口支持串口、TCP,UDP等,波特率最高4000000

  2. 三种数据协议将数据绘制成波形图、频域图等,更直观的读取数据内容

  3. 以创建命令和命令组的方式一键发送数据包

  4. 十几种交互控件,自由拖拽绑定数据通道,可插入到命令发送数据

  5. 可将导入和保存数据、窗口和命令

三种数据数据格式:

1.RawData

        如果只把VOFA+当成串口调试助手,不做任何采样数据和图片解析,可选用RawData协议,选择后上位机接收到什么字节就直接打印不做处理,没有数据格式。

下位机:

SBUF<-0X01 0X02 0X03

VOFA+显示:

01 02 03

2.FireWater

        本协议是CSV风格的字符串流,直观简洁格式操作简单,下位机可直接使用函数printf发送数据。下位机以FireWater格式发送数据后,VOFA+可解析到每个通道上通过控件显示在窗口上。但由于字符串解析上位机以及下位机都会消耗更多的运算资源,仅建议在通道数量不多、发送频率不高的时候使用。

下位机:

printf("channels: 1.3,0.9,-0.6,-0.9\n")//” channels:”可选,”\n”必选

VOFA+显示:

I0: 1.3  I1: 0.9  I2: -0.6  I3: -0.9

3.JustFloat

        本协议是小端浮点数组形式的字节流协议,纯十六进制浮点传输,节省带宽,能够更加高效的传输数据。此协议非常适合用在通道数量多、发送频率高的情况。在使用时需要将数据类型转换成浮点数,并小端输出浮点数据的四个字节,在一组数据发送完必须加上数据结尾0x00, 0x00, 0x80, 0x7f的4个固定字符。下位机通过JustFloat数据格式发送同样可以被解析成通道被控件操作,与FireWater协议相比,JustFloat对下位机的发生频率上限更高,但数据格式更复杂。

下位机:

union{              //使用联合体将浮点数转换为4个 u8类型数据

unsigned char a[4];

    float b;

} temp;//小端数据发送

temp.b=0XA0;  SBUF<- temp.a[3] temp.a[2] temp.a[1] temp.a[0]

temp.b=0XB0;  SBUF<- temp.a[3] temp.a[2] temp.a[1] temp.a[0]

SBUF<-0x00, 0x00, 0x80, 0x7f

VOFA+显示:

I0: 10.0  I1:11.0

命令功能

        VOFA+中可以通过命令和命令组代替窗口输入发送数据,一个命令组里可嵌套若干命令和命令组,实现数据包发送和周期型发送数据。命令也可以被保存和导入,生成json命令文件,每个命令和命令组可以设置重复发送次数和发送一次后的等待时间,若要保持周期发送数据,可选择负数次重复发送次数代表无限次重复发送。命令组里的命令可设置为不可见,在发送时不生效。

例:帧头、数据类型、帧尾命令重复次数1,延时100ms,内容命令组中X命令重复次数3,延时0ms,Y命令重复次数2,延时0ms。

控件功能

        在控件栏有波形图、按键、测量仪、摇杆、图像、滑块等,数据通过协议传入 VOFA+通道,与控件绑定实现数据可视化分析。控件也可以自定义添加,自定义控件使用qml编写,使用Qt的集成开发环境QtCreator 编辑QML文件,在VOFA+官网有详细的开发教程,将编写好的控件文件夹放置到widgets目录,重启软件便可在控件界面看到与文件夹同名的控件。

1.波形图使用

        选择FireWater或JustFloat数据格式,使用时将波形图件拖拽到窗口,双击或者右击选择填充可扩大到整个窗口,右击设置中还有数据绑定、刻度最值设置等。解析后的通道数据可通过波形图显示,在图下方△t表示X刻度单位,最好设置成数据刷新的时间,有助于频率图的准确性,缓冲区上限用于设置图容纳最大数据量。

        波形图控件与VOFA+有深度的嵌合,在数据分析上有许多功能。在分析波形时,每个通道的数据波形可以任意放缩和拖动,支持X、Y同时缩放,也可以X轴、Y轴单独缩放拖动,点击AUTO模式可以自动放缩,右键单击实现放缩到中间两格,长按实现放缩至整个屏幕,缩放的波形长度通过AUTO点数对齐设置。

        通道的波形没有显示,需右击选择Y轴绑定的通道,或在数据栏眼睛是否为可见,没有绑定或不可见的数据通道,不会在波形图上显示。X轴的时间单位可以设置为s/ms/us/ns,初时间外,X轴单位也可设置为某通道数据,显示为两通道数据生成的李萨如图。

除显示波形外,VOFA+还能绘制通道的条形图、直方图、频域图在同一窗口:

选择条形图,VOFA+以波形图Y轴参考绘制显示通道最新一组数据的条形图

选择直方图,VOFA+将一个数据范围分割成多个区间,统计当前画面里落在每个区间内的采样点数量,X轴为数据大小区间,Y轴为落在区间的数据点数可以点击X轴两侧端点设置区间的最值,可以同时和单独缩放波形图和直方图的X,Y轴坐标。

选择频域图,对当前画面里的采样点做快速傅里叶变换,分析采样信号的频谱特征并显示。X轴为波形频率,Y轴为幅值。采样点数越多,并大于设置FFT采样点的两倍,测得频率越准确。

        右击波形图可修改设置,其中直方图统计格数为在最大区间内分割的份数,例直方图测量区间为(-5,5),统计格数为100,则直方图显示数值在(-5,5)内每0.1区间的采样点数量,FFT点数修改可调整频域图精度,以当前画面采样点数设置合适的FFT点数。

        双击波形图、直方图、频域图中X轴可添加添加游标, 显示固定时间点的数据,可右击设置游标测量的通道,移动X轴的游标点也能修改游标测量的时间位置,在频域图上则为某频率的幅值,在直方图上为某数据数据区间的采样点。暂停传输后点击波形可实现测量点与点、点与游标、游标与游标之间的时间差与占空比,测量点仅支持波形图。

        在波形图下方绿线用来控制波形图的可视采集点和缓冲区,图中整条线(包含绿线左侧)代表所有缓冲区(100000/ch),在下方显示33631/100000表示采集了33631组数据,未采集的区域为0(波形图左侧直线),整条绿线代表当前窗口可视的波形图的位置,伴随下方绿字43190为可视采样点数量,红点表示可视区域的左端点,向左(拉长)向右(缩小)可控制可视采样长度(X轴放缩),紫色点最新数据点(0s),即缓冲区端点,下方蓝字4318.9代表图中每虚线之间区间长度。

数据窗口中,可设置每个通道的数据增益和偏置,增益改变通道波形的幅值,X,Y偏置改变波形的相位,可通过鼠标移动和滚轮放缩自动调整波形的偏置和增益。

2.Image使用

        传入一张图片的数据,要通过image控件显示,需要先发送一组前导帧数据,内容包括图片ID、图片尺寸、图片高度和宽度、以及图片格式,一个图像有8BIT灰度图,RGB565图等,通过ImgFormat枚举选择格式的数据,前导帧数据需要VOFA+解析,选用JustFloat或FireWater数据协议发送,之后直接按顺序发送图片数据,即能在image控件上显示图像。

JustFloat协议发送前导帧数据:

int preFrame[7] = {

    IMG_ID,

    IMG_SIZE,

    IMG_WIDTH,

    IMG_HEIGHT,

    IMG_FORMAT,

    0x7F800000,

    0x7F80000  

};

FireWater协议发送前导帧数据:

printf("image:%d,%d,%d,%d,%d\n",

        IMG_ID,    

        IMG_SIZE,   

        IMG_WIDTH,  

        IMG_HEIGHT, 

        IMG_FORMAT  

);

图片前导帧加上后续图片数据,被并称为图片数据包,图片数据会缩略打印,右击可设置图片特性,使用内置的算法实现边缘检测等效果。

3.测量仪使用

测量仪把最新数据的显示在有刻度的控件上,将解析后的数据通道绑定后,设置测量仪上下限和刻度单位后使用,不能发送数据和绑定命令,仅用于数据可视化。

4.按键、摇杆、滑块、灯使用

向下位机发送指令时,使用按键、摇杆、滑块、灯控件可以更便捷的发送动态的数据。在控件1-7中除控件6外都能实现绑定通道,绑定通道功能与测量仪相似,可以显示最新数据,可在右击设置修改阈值,模拟通道数据控制灯光开闭、开关控制。

控件1-7可绑定命令,控制控件产生的数据,触发命令发送,在命令中加入%f、%d(Str发送)或%%(Hex发送),可以在操作控件发送命令时,加入控件参数,但是在主动发送命令或命令组时,不能发送当前控件的数据。

右击控件设置对应的名称、触发事件和参数等,每个控件对应的设置略有不同。

其他

VOFA+下载网站:https://www.vofa.plus/

控件开源网址:https://gitee.com/gutega/Vodka/

IMG_FORMAT图片格式宏定义:

enum ImgFormat {

    Format_Invalid,

    Format_Mono,

    Format_MonoLSB,

    Format_Indexed8,

    Format_RGB32,

    Format_ARGB32,

    Format_ARGB32_Premultiplied,

    Format_RGB16,

    Format_ARGB8565_Premultiplied,

    Format_RGB666,

    Format_ARGB6666_Premultiplied,

    Format_RGB555,

    Format_ARGB8555_Premultiplied,

    Format_RGB888,

    Format_RGB444,

    Format_ARGB4444_Premultiplied,

    Format_RGBX8888,

    Format_RGBA8888,

    Format_RGBA8888_Premultiplied,

    Format_BGR30,

    Format_A2BGR30_Premultiplied,

    Format_RGB30,

    Format_A2RGB30_Premultiplied,

    Format_Alpha8,

    Format_Grayscale8,

   

    // 以下格式发送时,IMG_WIDTH和IMG_HEIGHT不需要强制指定,设置为-1即可

    Format_BMP,

    Format_GIF,

    Format_JPG,

    Format_PNG,

    Format_PBM,

    Format_PGM,

    Format_PPM,

    Format_XBM,

    Format_XPM,

    Format_SVG,

};

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐