VOFA+上位机三种协议(FireWater,JustFloat,RawData)C语言参考代码

1.简介

vofa+是一款能很强上位机功,具有常规串口助手显示串口收发数据的作用,还可以进行一些串口数据可视化操作。

2.协议简介

其中有三种常见串口协议FireWater,JustFloat,RawData。

2.1FireWater协议

FireWater是一种非常简单的与vofa+上位机的通讯协议。

简介见下图。

参考C语言发送代码如下:

printf("%d,%d,%d,%d\r\n",data1,data2,data3);//将data1,data2,data3换成相应想要看到的数据即可

一般单片机向串口发送数据就要在后面加上\r\n,因为有些上位机或者平台只认为\r\n才是换行,单纯的\n不一定会让数据换行,所以为了多平台共用,尽量使用\r\n。

/*
    在微软的MS-DOS和Windows中,使用“回车CR('r')”和“换行LF('n')”两个字符作为换行符;
    Windows系统里面,每行结尾是 回车+换行(CR+LF),即“rn”;
    Unix系统里,每行结尾只有 换行CR,即“n”;
    Mac系统里,每行结尾是 回车CR 即'r';
    所以我们平时编写文件的回车符应该确切来说叫做回车换行符;
*/

 该种通信协议在数据量比较大时,发送数据较多时,会产生错位,接收失败,所以在数据量较大,或者发送频率较高时,不建议使用。

2.2JustFloat

该协议简介见下图:

参考c语言发送代码如下:

/*-------------------------------------------------------------------------------------------------------------------
  @brief     利用Vofa发数据
  @param     data1,data2,data3,data4,data5,data6,要发的数据放进入参即可
  @return    null
  Sample     Vofa_data(Err,Steer_Angle,set_speed_right,right_wheel,set_speed_left,left_wheel);
  @note      如果不够用,继续往后加入参即可,继续加参数参考原则见下注释
-------------------------------------------------------------------------------------------------------------------*/
void Vofa_data(int data1,int data2,int data3,int data4,int data5,int data6)
{
    int data[6];     
    float tempFloat[6];   //定义的临时变量
    uint8 tempData[28];   //定义的传输Buffer,一个int占4个字节,如果传6个,4*6=24,后面还有四个校验位,24+4=28

    data[0] = data1;
    data[1] = data2;
    data[2] = data3;
    data[3] = data4;
    data[4] = data5;
    data[5] = data6;

    tempFloat[0] = (float)data[0];     //转成浮点数
    tempFloat[1] = (float)data[1];
    tempFloat[2] = (float)data[2];
    tempFloat[3] = (float)data[3];
    tempFloat[4] = (float)data[4];
    tempFloat[5] = (float)data[5];

    memcpy(tempData, (uint8 *)tempFloat, sizeof(tempFloat));  //通过拷贝把数据重新整理

    tempData[24] = 0x00;//写入结尾数据
    tempData[25] = 0x00;
    tempData[26] = 0x80;
    tempData[27] = 0x7f;

    uart_putbuff(UART_0, tempData, 28);//通过串口传输数据,前面开多大的数组,后面占多大长度
}

 需要注意的是,uart_putbuff(UART_0, tempData, 28);这个函数不同平台函数有所不同,需要根据平台修改,其他内容,根据自己所发送的数据决定。

实测图如下,在调节PID等控制算法时,即使数据量大,速度快仍然保持了较高的准确性。

比较推荐使用。

2.3RawData

仅作为常规串口,没有什么特殊的功能。

发送代码和第一种一样。

printf("%d,%d,%d,%d\r\n",data1,data2,data3);//将data1,data2,data3换成相应想要看到的数据即可

就作为普通串口查看发送的数据而已。

3.总结

作为一款上位机,vofa+功能强大,本文简单讲解了三种传输协议,在低速少量数据情况时,可以使用FireWater协议,在高速大量数据情况建议使用JustFloat协议,相关协议C语言参考代码在文中有所提及。

4.下载链接

下载中心 | VOFA-Plus上位机

  • 10
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值