串口接收到浮点数如何解析

2019-07-14 20:16发布

最近在做单片机和PLC以modbus方式通信的事情,需要发送浮点数,发现对串口接收数据后怎样处理还有点不明白。比如主机发送一个浮点数(float),占四字节的内存,主机按照顺序将这四个字节连续发出,然后从机接收到这四个字节后,是需要自己写程序来将这四个字节转换为对应的十进制浮点数吗?要不然从机该怎样做?谢谢

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
布莱恩
1楼-- · 2019-07-15 00:31
xia2742 发表于 2016-10-23 22:22
我是把他转换成文本的

那怎么校验呢,MODBUS需要进行CRC检验,需要将帧数据每次取出8位进行运算,如果不先将浮点数转换为二进制或者十六进制,那该怎么校验呢?
cuyebiren
2楼-- · 2019-07-15 01:20
 精彩回答 2  元偷偷看……
he07413
3楼-- · 2019-07-15 04:47
我觉得你把浮点的四个字节,原封不动的以二进制发出去,。接收端再以uint8类型从地址tab(变量名,只是举个例子)存放,原封不动的接收。最后定义一个浮点数指针float* p = tab  。P就是那个浮点数了
布莱恩
4楼-- · 2019-07-15 05:37
cuyebiren 发表于 2016-10-24 10:37
把地址直接赋给浮点数指针,然后在取指针指向单元的值。单片机会自动按浮点数取值
如 : float * fp;  fp = (flaot *)&buf[5];   *fp;

那怎么校验呢,MODBUS需要进行CRC检验,需要将帧数据每次取出8位进行运算,如果不先将浮点数转换为二进制或者十六进制,那该怎么校验呢?
布莱恩
5楼-- · 2019-07-15 06:25
he07413 发表于 2016-10-24 11:35
我觉得你把浮点的四个字节,原封不动的以二进制发出去,。接收端再以uint8类型从地址tab(变量名,只是举个例子)存放,原封不动的接收。最后定义一个浮点数指针float* p = tab  。P就是那个浮点数了

那怎么校验呢,MODBUS需要进行CRC检验,需要将帧数据每次取出8位进行运算,如果不先将浮点数转换为二进制或者十六进制,那该怎么校验呢?这个才是我真正的目的
cuyebiren
6楼-- · 2019-07-15 10:12
不是应该先校验成功再用数据吗?接受buf[]是8位的,直接CRC校验啊。8位数据是可以和32位float相互转换的,就是通过指针。

一周热门 更多>