目录
概述
1 认识VOFA
1.1 VOFA特点
1.2 应用简介
2 数据格式介绍
2.1 FireWater格式
2.2 JustFloat格式
概述
本文主要介绍使用可视化工具VOFA打印数据的方法,该工具可以支持字符串类型和float类型的数据可视化操作,使用者只需按照协议要求填充数据即可。笔者通过具体的案例介绍这两类数据的协议格式,并实现其代码。
1 认识VOFA
软件下载地址:
https://www.vofa.plus/
打开页面如下:
1.1 VOFA特点
- 平台支持:Windows、Linux、MacOS;
- 接口支持:串口(超高波特率,稳定支持)、网口(TCP客户端/服务端,UDP);
- 协议支持:协议为插件,已开源,人人可编写。目前已支持CSV风格的字符串协议,和十六进制浮点数组形式的字节流协议;
- 控件支持:控件为插件,已开源,人人可编写。目前已支持波形图、按钮、状态灯、图片、滑动条、3D立方控件(可更换模型)等;
- 2维度与3维,一个也不能拉下;
- 自主研发的波形控件,支持每通道百万采样点的绘制,性能强劲;
- 自主研发的波形控件,无缝嵌入了实时直方统计和点数可设置的傅里叶变换,可以使用VOFA+进行数据分析。
- 传统字节流收发调试功能依然支持;
- 拖拽方式添加控件,交互流畅自然;
- 快捷的命令、参数绑定系统,发送指令同样优雅。
1.2 应用简介
数据引擎,选择数据格式:
JustFloat: 数据类型为float 格式,每个数据占4个byte
FireWater: 字符串格式
RawData: 数据流格式,此时该工具仅仅被作为串口工具使用
串口参数:
配置串口工作的参数,包括端口号和波特率
2 数据格式介绍
2.1 FireWater格式
数据格式
- any和冒号可以为空,但换行(\n)不可省略;
- any不可以为"image",这个前缀用于解析图片数据;
- 此处\n为换行,并非指字符斜杠+字符n;
- \n也可以为\n\r,或\r\n。
"<any>:ch0,ch1,ch2,...,chN\n"
使用printf函数为例,定义一个数组vallist[10],打印数据方法如下:
printf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d \r\n",
vallist[0],vallist[1],
vallist[2],vallist[3],
vallist[4],vallist[5],
vallist[6],vallist[7],
vallist[8],vallist[9]);
2.2 JustFloat格式
数据以float的格式发送,每个数据四个字节,数据帧尾以0x7f80000作为结束字节。小端模式其可以被表示为:
{ 0x00, 0x00, 0x80, 0x7f }
#define CH_COUNT <N>
struct Frame {
float ch_data[CH_COUNT];
unsigned char tail[4]{0x00, 0x00, 0x80, 0x7f};
};
使用范例如下:
定义一个float类型的数组,使用串口发送数据
void sendJustFloat( void )
{
float justFloatbuff[10];
for( int i = 0 ; i < 10; i++ )
{
justFloatbuff[i] = sin((i+1)*t);
}
//发送数据
Debug_PrintfJustFloat((uint8_t*)justFloatbuff, sizeof(float)*10);
}
void Debug_PrintfJustFloat( const uint8_t *pData, uint16_t Size )
{
uint8_t tail [4] = {0x00, 0x00, 0x80, 0x7f};
// send data packet
// PRINTWAVE_TX( pData, Size);
// PRINTWAVE_TX( tail, 4);
HAL_UART_Transmit( &huart2, pData, Size, 1000);
// if(HAL_UART_Transmit_DMA(&huart2, (uint8_t*)pData, Size)!= HAL_OK)
// {
// /* Transfer error in transmission process */
// Error_Handler();
// }
// 发送数据帧尾的数据包
HAL_UART_Transmit( &huart2, tail, 4, 1000);
// if(HAL_UART_Transmit_DMA(&huart2, (uint8_t*)tail, 4)!= HAL_OK)
// {
// /* Transfer error in transmission process */
// Error_Handler();
// }
}
打印数据格式如下: