十六进制转浮点数

[复制链接]
2180|7
 楼主| 歇斯底里 发表于 2016-8-14 10:45 | 显示全部楼层 |阅读模式
本帖最后由 歇斯底里 于 2016-8-15 12:34 编辑

通过STM32单片机编程实现串口2连485向传感器发送读取测量数据的指令,传感器返回一些数据,我提取了其中的8位十六进制数的测量值通过串口1发送到蓝牙端接收数据,蓝牙再把数据发到APP端,四位十六进制是一个测量值,主函数如图1。现在的问题是我接收的一直是十六进制的数,如图二,但是APP那里要指数浮点数的格式数据才行,如图3.我自己代码改了好久就是达不到效果,求教。@dirtwillfly
dirtwillfly 发表于 2016-8-14 11:38 | 显示全部楼层

4个16进制数能转化为带小数点的浮点数,就可以显示为指数浮点数啊。
 楼主| 歇斯底里 发表于 2016-8-14 12:51 | 显示全部楼层
dirtwillfly 发表于 2016-8-14 11:38
4个16进制数能转化为带小数点的浮点数,就可以显示为指数浮点数啊。

是这样改吗 我看网上有人这样写但是我试了没反应

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 歇斯底里 发表于 2016-8-14 12:51 | 显示全部楼层
歇斯底里 发表于 2016-8-14 12:51
是这样改吗 我看网上有人这样写但是我试了没反应

@dirtwillfly
dirtwillfly 发表于 2016-8-14 14:07 | 显示全部楼层

你弄的好复杂。一般用类似printf("%e\t",test)的函数就可以把数据以指数形式输出到控制台或者字符串变量。
不懂你到底要输出字符串还是数值。。。
 楼主| 歇斯底里 发表于 2016-8-14 15:25 | 显示全部楼层
dirtwillfly 发表于 2016-8-14 14:07
你弄的好复杂。一般用类似printf("%e\t",test)的函数就可以把数据以指数形式输出到控制台或者字符串变量 ...

可能我表述的不好 就是要显示file:///C:\Users\Administrator.USER-20151031AA\AppData\Roaming\Tencent\Users\864063529\QQ\WinTemp\RichOle\AHJ@F60AO7WGYHK}]G4(@E6.png图片这样的样子 这样的数据给他们才有效@dirtwillfly  

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
linqing171 发表于 2016-8-14 22:01 | 显示全部楼层
float a=1.0f;
unsigned char * b =(unsigned char*)&a;
Uart2SendByte(b[0]);
Uart2SendByte(b[1]);
Uart2SendByte(b[2]);
Uart2SendByte(b[3]);
Uart2SendByte(b[3]);
Uart2SendByte(b[2]);
Uart2SendByte(b[1]);
Uart2SendByte(b[0]);
 楼主| 歇斯底里 发表于 2016-8-15 09:00 | 显示全部楼层
linqing171 发表于 2016-8-14 22:01
float a=1.0f;
unsigned char * b =(unsigned char*)&a;
Uart2SendByte(b[0]);

Uart2SendByte(b[0]);
Uart2SendByte(b[1]);
Uart2SendByte(b[2]);
Uart2SendByte(b[3]);
Uart2SendByte(b[3]);
Uart2SendByte(b[2]);
Uart2SendByte(b[1]);
Uart2SendByte(b[0]);这个什么意思发两次吗@dirtwillfly @linqing171
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

70

帖子

1

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