首页 > 其他分享 >Vofa+使用教程

Vofa+使用教程

时间:2024-08-13 23:22:57浏览次数:8  
标签:教程 args Vofa temp float uint8 num 使用

只要你发送的格式符合要求的话就能把数据画出来,效果如下:

当然,也不是随便发个数据就能画的,要遵循某些协议。

简单写了两个函数,实现了傻瓜式使用,如下。 

#include "vofa.h"

// 按printf格式写,最后必须加\r\n
void Vofa_FireWater(const char *format, ...)
{
    uint8_t txBuffer[100];
    uint32_t n;
    va_list args;
    va_start(args, format);
    n = vsnprintf((char *)txBuffer, 100, format, args);

    //....在此替换你的串口发送函数...........
    HAL_UART_Transmit_DMA(&huart1, (uint8_t *)txBuffer, n);
    //......................................

    va_end(args);
}


// 输入个数和数组地址
void Vofa_JustFloat(float *_data, uint8_t _num)
{
    uint8_t tempData[100];
    uint8_t temp_end[4] = {0, 0, 0x80, 0x7F};
    float temp_copy[_num];

    memcpy(&temp_copy, _data, sizeof(float) * _num);

    memcpy(tempData, (uint8_t *)&temp_copy, sizeof(temp_copy));
    memcpy(&tempData[_num * 4], &temp_end[0], 4);

    //....在此替换你的串口发送函数...........
    HAL_UART_Transmit_DMA(&huart1, tempData, (_num + 1) * 4);
    //......................................
}

/*...........示例..............
    float f1=0.5,f2=114.514;
    Vofa_FireWater("%f,%f\r\n", f1, f2);

    float f3[3]={88.77,0.66,55.44};
    Vofa_JustFloat(f3, 3);
*/





如上所示,非常简短的两个函数,对应两种传输模式。 

原理也不难,就是一个知识点:如何使用uint8_t无损传输浮点型,这个以后有机会细说。 

但要注意,虽然原理上支持所有以uint8_t为传输单位的芯片,但要根据自己的芯片库函数去替换掉上图的那两行串口传输函数,我的这个仅适用于hal库dma模式下的stm32芯片。

使用方法也很简单,添加到工程里就能用,可以参考我之前的文章。

标签:教程,args,Vofa,temp,float,uint8,num,使用
From: https://blog.csdn.net/weixin_74923758/article/details/141171540

相关文章

  • Vue:Vuex-Store使用指南
    一、简介1.1Vuex是什么Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex也集成到Vue的官方调试工具devtoolsextension(opensnewwindow),提供了诸如零配置......
  • 微信小程序 网络请求使用封装好的mina-request
    1、安装、安装不了的时候使用手机热点npminstallmina-request2、构建npm3、使用 importWxRequestfrom'mina-request'import {getStorage,clearStorage,setStorage}  from './storage'import {ApiPathConst,DESKeyConst} from './constVar'//对WxRe......
  • kubernetes基于csi使用rbd存储
    描述ceph-csi扩展各种存储类型的卷的管理能力,实现第三方存储ceph的各种操作能力与k8s存储系统的结合。通过ceph-csi使用cephrbd块设备,它动态地提供rbd以支持Kubernetes持久化存储,并将这些rbd映射给pod做为块设备持久化数据使用。Ceph将pod存在块设备的数据以副本......
  • MySQL使用教程笔记(远程访问)
    远程连接MySQL数据库_mysql远程访问数据库-CSDN博客如何远程连接mysql数据库服务器_mysql如何连接远程数据库服务器_如何连接远程数据库mysql-腾讯云开发者社区-腾讯云(tencent.com)如何使用C#连接远程MySQL服务器?_webrtc_weixin_0010034-MySQL数据库(csdn.net)c#中mysq......
  • Java数组03:数组使用
    数组的元素类型和数组的大小都是确定的,所以当处理数组元素时候,我们通常使用基本循环或者ForEach循环。【该实例完整地展示了如何创建、初始化和操纵数组】publicclassTestArray{ publicstaticvoidmain(String[]args){ double[]myList={1.9,2.9,3.4,3.5}; /......
  • Vue3如何使用v-model写一个多条件联合搜索
    在Vue3中,使用v-model进行多条件联合搜索通常涉及到绑定多个输入字段到组件的数据属性上,并在搜索逻辑中根据这些属性的值来过滤数据。虽然v-model本身是针对单个表单元素进行双向数据绑定的,但你可以通过结合使用多个v-model和计算属性或方法来处理多条件搜索。以下是一个简单......
  • JDBC在java代码中的使用
    声明对于数据库的增删改查,在使用jdbc的过程中分二类,查(DQL)语句和增,删,改(DML语句)他们的整体都分为以下五部分,只是DQL语句多了数据的处理部分。在使用之前需要导入相关的jar包 1,加载驱动器(非必要,但是建议手动加载养成好习惯)2,创建连接3,创建会话4,执行会话5,关闭会话1,数据......
  • 【Azure Developer】使用Python SDK去Azure Container Instance服务的Execute命令的疑
    AzureContainerInstance服务介绍Azure容器实例(AzureContainerInstances,简称ACI)是一个无服务器容器解决方案,允许用户在Azure云环境中运行Docker容器,而无需设置虚拟机、集群或编排器。ACI适用于任何可以在隔离容器中操作的场景,包括事件驱动的应用程序、从容器开发管道......
  • 基于springboot的美食推荐菜谱教程管理系统-开题免费【论文、源码】
      博主介绍:......
  • Django-rest-framework(DRF)怎么使用celery
    目录一、什么是celery1、celery简介2、celery的使用场景3、celery的架构二、Django使用celery1、安装celery2、Django配置三、定时任务和异步任务一、什么是celery1、celery简介Celery是一个基于Python开发的分布式异步消息任务队列,它专注于实时处理的异步任务队......