串口接收到的一般都为字符串,常见的函数sscanf()只能转化整数型字符串,对于浮点型字符串则不行。
该函数实现将浮点型字符串转化为相应的数值(整数,浮点数据均可)
float SPRTODATA(u8 *p) //将字符串转化为数据(包含小数)
{
u16 i=0,j=0,t=0;
double temp=0;
for(i=0;i<LEN;i++)
{
if(p[i]=='.') //判断小数点存在的位置
{
t=1; //小数点存在标志
j=i; //记下小数点存在的位置
}
else
{
if(t) //如果在小数点后面
{
temp=(double)(p[i]-'0')/pow(10,(i-j))+temp; //改为小数
}
else //在小数点前面
{
temp=(double)(p[i]-'0')+temp*10;
}
}
}
return temp;
}