串口收发浮点数加示例代码(共用体)

#include "stdio.h"
#include "string.h"

union Data
{

    char str[4];//float占用4个字节所以给四个字符
    float num;
};


int main()
{
    union Data  send_data,receive_data;
    send_data.num=43.43;//通过串口发送43.43,只需要放入共用体里面,然后通过发送四个char 数据,下面是模拟的,还没试过在串口上。
        
    receive_data.str[0]=send_data.str[0];
    receive_data.str[1]=send_data.str[1];
    receive_data.str[2]=send_data.str[2];
    receive_data.str[3]=send_data.str[3];

        
   printf("接收到的数据receive_data.num:%f\n",receive_data.num);

}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
点数是一种表示实数的数据类型,可以包含小数部分。而串口发送通常使用的是u16(无符号16位整数)类型,它只能表示整数,没有小数部分。 当我们需要通过串口发送点数时,需要先将点数转换为整数形式再发送。常见的转换方法有以下几种: 1. 乘以一个固定倍数:将点数乘以一个固定倍数,然后取整,得到一个整数。在接收端,再将这个整数除以相同的倍数,得到原始的点数。 例如,我们可以将点数乘以1000,然后发送整数形式的值。接收端收到后再将这个整数除以1000,还原为原始的点数。 2. 转换为整数位和小数位两个部分:将点数的整数部分和小数部分拆分开,分别发送整数部分和小数部分。在接收端,再将这两个部分合并为点数。 例如,点数3.14可以拆分为整数部分3和小数部分14,然后分别发送3和14,接收端再将它们合并为3.14。 3. 使用特定的协议:一些串口通讯协议,如MODBUS协议,提供了点数的传输格式。可以使用这些协议的相关函数库将点数转换为协议要求的格式,然后发送。 无论选择哪种方法,都需要在发送和接收端进行相应的转换才能保证点数的正确传输。同时,在进行点数传输时,需要注意字节序(大端序或小端序)和精度(位数)的匹配,以免出现数据解析错误的问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值