如何通过串口发送一个float类型的数组
我用下面的这段代码为啥接收到的都是问号?float f1,f2,f3;...
char buf;
sprintf(buf, "%f,%f,%f\n", f1,f2,f3);
Serial.print(buf); czad 发表于 2011-12-21 21:19 static/image/common/back.gif
分拆浮点数吧。
能说的明白点不? // 函数名: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]