[其他ST产品] PC这边收到的是十六进制字节数据,如何变成小数呢?

[复制链接]
727|11
 楼主| 梧桐uuu 发表于 2025-3-23 23:30 | 显示全部楼层 |阅读模式
使用 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 | 显示全部楼层
你用的是哪款传感器?有些传感器本身就支持整数格式输出,可能转换会更简单。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

58

主题

60

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部