EDA365电子论坛网
标题: 如何将2字节温度数据转为单精度格式发给串口屏显示? [打印本页]
作者: guanshen 时间: 2021-12-6 09:53
标题: 如何将2字节温度数据转为单精度格式发给串口屏显示?
本帖最后由 guanshen 于 2021-12-6 10:40 编辑
硬件平台是stm32f107,串口屏是DWIN,串口屏这里设置是单精度数据格式。
stm32f107收到LORA发来的2个字节的温度数据,比如0x03 0x36,其中0x03是高位,0x36是低位;0x0336转为10进制是822,实际温度是82.2,也就是还有个系数0.1。
现在想在串口屏上显示82.2度,找了个转浮点的软件,单精度16进制是42A46666,即0x42 、0xA4、0x66、0x66;把这4个字节发到串口屏,就能显示82.2。
问题是:如何将0x03 0x36 的原码字节转为42A46666

作者: xiaoming11 时间: 2021-12-6 10:37
c语言可以定义结构体,使用关键字union
struct s
{
byte[] b;
float f;
}union
当你给f赋值,b自动成为4字节float类型,反之亦然
作者: unix155 时间: 2021-12-6 10:37
要注意下大小端,如果上下大小端不一致,byte[] b的顺序是刚好相反的
作者: hunterccc 时间: 2021-12-6 10:38
先用sprintf转换成浮点数字符串,然后发送字符串
| 欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) |
Powered by Discuz! X3.2 |