极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16467|回复: 3

如何通过串口发送一个float类型的数组

[复制链接]
发表于 2011-12-21 18:19:39 | 显示全部楼层 |阅读模式
我用下面的这段代码为啥接收到的都是问号?
  1. float f1,f2,f3;
  2. ...
  3. char buf[100];
  4. sprintf(buf, "%f,%f,%f\n", f1,f2,f3);
  5. Serial.print(buf);
复制代码
回复

使用道具 举报

 楼主| 发表于 2011-12-22 17:57:30 | 显示全部楼层
czad 发表于 2011-12-21 21:19
分拆浮点数吧。

能说的明白点不?
回复 支持 反对

使用道具 举报

发表于 2011-12-22 19:40:12 | 显示全部楼层
// 函数名:unsigned char Float2Char(float Value,char *array)
// 描 述:将浮点数的各个位的数值转换成字符串,通过串口发送至上位机显示
// 参 数:float Value为欲转换的正数浮点数值,转换结果保存在字符数组*array里
unsigned char Float2Char(float value, unsigned char *array)
{
        uint8 IntegerPart;        //整数部分变量
        float DecimalPart;        //小数部分变量
        uint8 i = 0;
        uint8 j = 0;
        char temp;
       
        //分离整数和小数
        if(value >= 1)
        {
           IntegerPart = (uint8)value;
           DecimalPart = value - IntegerPart;
        }
        else
        {
           IntegerPart = 0;
           DecimalPart = value - IntegerPart;
        }
       
        //处理整数部分
        if(IntegerPart == 0)
        {
           array[0] = '0';
           array[1] = '.';
           i = 1;
        }
        else
        {
           while(IntegerPart > 0)
           {
                array[i] = IntegerPart % 10 + '0';
                IntegerPart /= 10;
                i++;
           }
           i--;
                //fix the result
                for(j=0; j<i; j++)
                {
                   temp = array[j];
                   array[j] = array[i - j];
                   array[i - j] = temp;
                }
                i++;
                array[i] = '.';
        }
       
        //处理小数部分
        i++;
        array[i++] = (uint32)(DecimalPart * 10)%10 + '0';
        array[i++] = (uint32)(DecimalPart * 100)%10 + '0';
        array[i++] = (uint32)(DecimalPart * 1000)%10 + '0';
        array[i++] = (uint32)(DecimalPart * 10000)%10 + '0';
        array[i]   = '\0';
        return i;
}
这个不知对你有没有用
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 23:42 , Processed in 0.046146 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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