使用STM32串口向VOFA上位机发送数据

一、步骤总览:

        ①在项目中添加Vofa.c和Vofa.h两个文件;

        ②在Vofa.c中定义一个共同体;

        ③在 Vofa.c文件中新建一个函数,将float类型的变量拆分成4个字节;

        ④在 Vofa.c文件中新建一个函数,用于发送数据到VOFA+上位机;

        ⑤VOFA+上位机选择JustFloat模式;

        ⑥VOFA+上位机成功接收到数据。

二、具体实现步骤:

        ①在项目中添加Vofa.c和Vofa.h两个文件。

        ②在Vofa.c中定义一个共同体。

/*定义共同体变量类型*/
typedef union
{
    float Fdata;         //以浮点数形式读取变量
    uint32_t Adata;      //以32位无符号形式读取变量
    
}Vofa_Type;

        ③在 Vofa.c文件中新建一个函数,将float类型的变量拆分成4个字节。

/**
  * 函数功能:将浮点数拆分成4个字节
  * 入口参数:Fdata:需要操作的浮点数
  * 入口参数:ArrayByte:数组地址
  * 返 回 值:无
  */
void Float_to_Byte(float Fdata,  uint8_t *ArrayByte)
{
    
    Vofa_Type Vofa;                   //定义Vofa_Type类型的Vofa变量
    
    Vofa.Fdata = Fdata;               //把需要操作的浮点数复制到共同体的Fdata变量中
    ArrayByte[0] = Vofa.Adata;        //0-7位移到数组元素0
    ArrayByte[1] = Vofa.Adata >> 8;   //8-15位移动到数组元素1
    ArrayByte[2] = Vofa.Adata >> 16;  //16-23位移动到数组元素2
    ArrayByte[3] = Vofa.Adata >> 24;  //24-31位移动到数组元素3 
    
}

        ④在 Vofa.c文件中新建一个函数,用于发送数据到VOFA+上位机。

/**
  * 函数功能:串口发送数据到VOFA+上位机
  * 入口参数:无
  * 返 回 值:无
  */
void JustFloat(void)
{
    
    float a = 50;                                  //定义浮点数a变量
    float b = 60;                                  //定义浮点数b变量
    uint8_t Byte[4];                               //定义保存浮点数转换后的数组变量
    uint8_t Tail[4] = {0x00, 0x00, 0x80, 0x7f};    //定义包尾数组
    
    Float_to_Byte(a , Byte);                       //转换第一个浮点数
    Serial_SendArray(Byte, 4);                     //发送第一组数据

    Float_to_Byte(b, Byte);                        //转换第二个浮点数
    Serial_SendArray(Byte, 4);                     //发送第二组数据

    Serial_SendArray(Tail, 4);                     //发送包尾 
    
}

⑤VOFA+上位机选择JustFloat模式。

       ⑥VOFA+上位机成功接收到数据 

作者:GOAT_CR7

物联沃分享整理
物联沃-IOTWORD物联网 » 使用STM32串口向VOFA上位机发送数据

发表回复