打印
[其他ST产品]

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

[复制链接]
113|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。

使用特权

评论回复
5
帛灿灿| | 2025-3-24 08:20 | 只看该作者
你可以试试 memcpy,把 float 转成 4 字节数组发出去,在 PC 端再按相同格式解析。

使用特权

评论回复
6
童雨竹| | 2025-3-24 08:21 | 只看该作者
直接把 float 用 sprintf 转成字符串再发送,PC 端解析起来会简单很多。

使用特权

评论回复
7
万图| | 2025-3-24 08:22 | 只看该作者
你是用 UART 传输吗?看看 STM32 这边的字节顺序,PC 端解析时可能需要大小端转换。

使用特权

评论回复
8
Wordsworth| | 2025-3-24 08:23 | 只看该作者
你收到的十六进制数据能贴出来看看吗?可能格式上有些问题。

使用特权

评论回复
9
Bblythe| | 2025-3-24 08:25 | 只看该作者
PC 端用什么语言处理数据的?Python 还是 C#?不同语言解析方式不太一样。

使用特权

评论回复
10
Pulitzer| | 2025-3-24 08:26 | 只看该作者
试试在 STM32 端先把 float 转成整数,比如乘以 100 变成 int16 传输,PC 端再除以 100 还原。

使用特权

评论回复
11
Uriah| | 2025-3-24 08:27 | 只看该作者
你有用 FreeRTOS 的消息队列或者其他同步机制吗?确保读取的数据是正确的。

使用特权

评论回复
12
Clyde011| | 2025-3-24 08:29 | 只看该作者
你用的是哪款传感器?有些传感器本身就支持整数格式输出,可能转换会更简单。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

7

帖子

0

粉丝