PC这边收到的是十六进制字节数据,如何变成小数呢?
使用 stm32cubeide 开发项目,用了 FreeRTOS 的 task。在一项task中,我从传感器读取温度值并尝试在变量中设置该值。读取温度是两位小数,也就是float型数据。我想在pc端应用中将该数值显示,但在PC这边收到的是十六进制字节数据,如何变成小数呢?串口传送的是字符,PC收到后将字符转换为浮点数。 你在 STM32 端是怎么发送数据的?用的是浮点数直接转换成字节发,还是先转换成字符串? PC 端是怎么接收数据的?如果是原始字节流,可能要按 IEEE 754 格式解析成 float。 你可以试试 memcpy,把 float 转成 4 字节数组发出去,在 PC 端再按相同格式解析。 直接把 float 用 sprintf 转成字符串再发送,PC 端解析起来会简单很多。 你是用 UART 传输吗?看看 STM32 这边的字节顺序,PC 端解析时可能需要大小端转换。 你收到的十六进制数据能贴出来看看吗?可能格式上有些问题。 PC 端用什么语言处理数据的?Python 还是 C#?不同语言解析方式不太一样。 试试在 STM32 端先把 float 转成整数,比如乘以 100 变成 int16 传输,PC 端再除以 100 还原。 你有用 FreeRTOS 的消息队列或者其他同步机制吗?确保读取的数据是正确的。 你用的是哪款传感器?有些传感器本身就支持整数格式输出,可能转换会更简单。
页:
[1]