nomady 发表于 2011-12-21 18:19:39

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

我用下面的这段代码为啥接收到的都是问号?float f1,f2,f3;
...
char buf;
sprintf(buf, "%f,%f,%f\n", f1,f2,f3);
Serial.print(buf);

nomady 发表于 2011-12-22 17:57:30

czad 发表于 2011-12-21 21:19 static/image/common/back.gif
分拆浮点数吧。

能说的明白点不?

mikeliujia 发表于 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';
           array = '.';
           i = 1;
        }
        else
        {
           while(IntegerPart > 0)
           {
                array = IntegerPart % 10 + '0';
                IntegerPart /= 10;
                i++;
           }
           i--;
                //fix the result
                for(j=0; j<i; j++)
                {
                   temp = array;
                   array = array;
                   array = temp;
                }
                i++;
                array = '.';
        }
       
        //处理小数部分
        i++;
        array = (uint32)(DecimalPart * 10)%10 + '0';
        array = (uint32)(DecimalPart * 100)%10 + '0';
        array = (uint32)(DecimalPart * 1000)%10 + '0';
        array = (uint32)(DecimalPart * 10000)%10 + '0';
        array   = '\0';
        return i;
}
这个不知对你有没有用
页: [1]
查看完整版本: 如何通过串口发送一个float类型的数组