查看: 4968|回复: 3

[其他] 串口发送float数据

[复制链接]

该用户从未签到

2

主题

5

帖子

0

新手上路

Rank: 1

积分
18
最后登录
1970-1-1
发表于 2010-4-9 18:28:56 | 显示全部楼层 |阅读模式
工作原因,需要用串口向上位机发送float数据。
网上找了一下,很多人都说用定义共同体的方式将float数据转换成4个char型数据,于是我依葫芦画瓢了以下代码:
union Floattochar{
      float f;
      char u[4];
    };
   
   
    float time = 10/250;
    char cha;
    char chb;
    char chc;
    char chd;
   
    union Floattochar sc;
    sc.f = time;
    cha = sc.u[0];
    chb = sc.u[1];
    chc = sc.u[2];
    chd = sc.u[3];

      Serial_SendChar(cha);
      Serial_SendChar(chb);
      Serial_SendChar(chc);
      Serial_SendChar(chd);

    但是不成功,串口收不到任何字符。有人能解决下这个问题吗?或者有别的数据类型转换的方法吗??
我知道答案 目前已有2人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2010-4-12 09:40:13 | 显示全部楼层

    RE:串口发送float数据

    union Floattochar{
          float f;
          char u[4];
        };
    好像与u[4]和F好像没有什么关系啊。输出应该是不正确的。
    你想实现浮点数的输出,可以使用将浮点数转换为字符串输出就行了。
    该会员没有填写今日想说内容.

    该用户从未签到

    2

    主题

    5

    帖子

    0

    新手上路

    Rank: 1

    积分
    18
    最后登录
    1970-1-1
     楼主| 发表于 2010-4-13 18:16:09 | 显示全部楼层

    回复:串口发送float数据

    已经解决了,方法是对的,利用共用体成员共享内存地址的原理。输出不正确是因为10/250得到的是整型不是浮点,数据类型不对。
    你说的把浮点数转成字符型是用什么方法呢?

    该用户从未签到

    3

    主题

    40

    帖子

    0

    新手上路

    Rank: 1

    积分
    19
    最后登录
    1970-1-1
    发表于 2010-4-18 17:58:34 | 显示全部楼层

    RE:串口发送float数据

    10.0/250.0
    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-21 00:21 , Processed in 0.091941 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表