梧桐uuu 发表于 2025-3-23 23:30

PC这边收到的是十六进制字节数据,如何变成小数呢?

使用 stm32cubeide 开发项目,用了 FreeRTOS 的 task。在一项task中,我从传感器读取温度值并尝试在变量中设置该值。读取温度是两位小数,也就是float型数据。我想在pc端应用中将该数值显示,但在PC这边收到的是十六进制字节数据,如何变成小数呢?


lidi911 发表于 2025-3-24 08:01

串口传送的是字符,PC收到后将字符转换为浮点数。

公羊子丹 发表于 2025-3-24 08:17

你在 STM32 端是怎么发送数据的?用的是浮点数直接转换成字节发,还是先转换成字符串?

周半梅 发表于 2025-3-24 08:19

PC 端是怎么接收数据的?如果是原始字节流,可能要按 IEEE 754 格式解析成 float。

帛灿灿 发表于 2025-3-24 08:20

你可以试试 memcpy,把 float 转成 4 字节数组发出去,在 PC 端再按相同格式解析。

童雨竹 发表于 2025-3-24 08:21

直接把 float 用 sprintf 转成字符串再发送,PC 端解析起来会简单很多。

万图 发表于 2025-3-24 08:22

你是用 UART 传输吗?看看 STM32 这边的字节顺序,PC 端解析时可能需要大小端转换。

Wordsworth 发表于 2025-3-24 08:23

你收到的十六进制数据能贴出来看看吗?可能格式上有些问题。

Bblythe 发表于 2025-3-24 08:25

PC 端用什么语言处理数据的?Python 还是 C#?不同语言解析方式不太一样。

Pulitzer 发表于 2025-3-24 08:26

试试在 STM32 端先把 float 转成整数,比如乘以 100 变成 int16 传输,PC 端再除以 100 还原。

Uriah 发表于 2025-3-24 08:27

你有用 FreeRTOS 的消息队列或者其他同步机制吗?确保读取的数据是正确的。

Clyde011 发表于 2025-3-24 08:29

你用的是哪款传感器?有些传感器本身就支持整数格式输出,可能转换会更简单。
页: [1]
查看完整版本: PC这边收到的是十六进制字节数据,如何变成小数呢?