之前写的乱七八糟一大堆5
int/int32 -> double/float
主要思想:先扩大1000倍,用数据时再缩小1000倍 (1000倍可视情况而定,100倍或者10000倍等)
其中涉及强制转换
/* 9541 read */
res95 = rt_device_read(sm95_dev, 0, &sm95_data, 2);
if(res95 == 0)
{
rt_kprintf("read data failed! result is %d \n", res95);
rt_device_close(sm95_dev);
return;
}
else
{
/****写法一可以实现完整转换*******************************************/
sm9541_p = sm95_data[0].data.baro; //!
sm9541_t = sm95_data[1].data.temp;
LOG_I("sm9541 fetch pressure is %f, %d\r\n",
sm9541_p / 1000,
sm95_data[0].timestamp);
LOG_I("sm9541 fetch temperature is %f, %d\r\n",
sm9541_t / 100,
sm95_data[1].timestamp);
/*****************************************************************/
}
?
/* 3041 read */
res30 = rt_device_read(sm30_dev, 0, &sm30_data, 2);
if(res30 == 0)
{
rt_kprintf("read data failed! result is %d \n", res30);
rt_device_close(sm30_dev);
return;
}
else
{
/****写法二无法实现真正完整转换*****************************************/
sm3041_p = sm30_data[0].data.baro / 1000; //!
sm3041_t = sm30_data[1].data.temp / 100;
LOG_I("sm3041 fetch pressure is %f, %d\r\n",
sm3041_p,
sm30_data[0].timestamp);
LOG_I("sm3041 fetch temperature is %f, %d\r\n",
sm3041_t,
sm30_data[1].timestamp);
/******************************************************************/
}
?