请问利用qt的QSerialPort进行串口通信怎么传输浮点数给下位机?

l7890 2017-12-15 09:37:40

如图所示,10对应0x41 20;11对应0x41 30;0.24对应0x3E 75 C2 8F;0.18对应0x3E 38 51 EC;这是通过什么规则转换来的?利用qt的QSerialPort进行串口通信该怎样写数据转换程序,才能将数据以如图这样的格式传给下位机?
...全文
1253 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyz007 2018-01-05
  • 打赏
  • 举报
回复
这里有一个16进制转换的计算器,可以用来验证你的程序,需要注意的是这个计算器里面将高位写在后面了! 链接:https://pan.baidu.com/s/1qYifpaG 密码:5kjj
lyz007 2018-01-05
  • 打赏
  • 举报
回复
0.18对应0x3E 38 51 EC,规律 0x3E 38 51 EC——是0.18的四位16进制表示方式, 具体换算方法如下: 6进制浮点数与十进制的转化 对于大小为32-bit的浮点数(32-bit为单精度,64-bit浮点数为双精度,80-bit为扩展精度浮点数), 1、其第31 bit为符号位,为0则表示正数,反之为复数,其读数值用s表示; 2、第30~23 bit为幂数,其读数值用e表示; 3、第22~0 bit共23 bit作为系数,视为二进制纯小数,假定该小数的十进制值为x; 则按照规定,该浮点数的值用十进制表示为: = (-1)^s * (1 + x) * 2^(e - 127) 对于49 E4 8E 68来说, 1、其第31 bit为0,即s = 0 2、第30~23 bit依次为100 1001 1,读成十进制就是147,即e = 147。 3、第22~0 bit依次为110 0100 1000 1110 0110 1000,也就是二进制的纯小数0.110 0100 1000 1110 0110 1000,其十进制形式为0.78559589385986328125,即x = 0.78559589385986328125。 这样,该浮点数的十进制表示 = (-1)^s * (1 + x) * 2^(e - 127) = (-1)^0 * (1+ 0.78559589385986328125) * 2^(147-127) = 1872333 可以用windows自带的计算器算一下。
zjh872354984 2017-12-25
  • 打赏
  • 举报
回复
楼主弄出来了吗,能分享一下吗,最近也要学习,没思路
代码运输员 2017-12-25
  • 打赏
  • 举报
回复
一般通讯接收字节码后都保存成unsigned char数组,根据自己的需要将几个字节转换为你要的数据.
Clong玩Linux 2017-12-18
  • 打赏
  • 举报
回复
把浮点转化整数的形式,发送,那边解析的时候解析成浮点数就可以了
huo5896324 2017-12-15
  • 打赏
  • 举报
回复
把0.18 这个浮点数memcpy到一个整数里 整数的大小就是 0x3E 38 51 EC然后你再按字节拆分一下 填充进去 就行了
走好每一步 2017-12-15
  • 打赏
  • 举报
回复
浮点数也是二进制流
Acuity. 2017-12-15
  • 打赏
  • 举报
回复
直接发送,浮点数发送浮点数接收。

extern send(char *buff,int size);
extern recv(char *buff,int size);
float send_f,recv_f;

send((char*)&send_f,4);
recv((char*)&recv_f),4);
课程背景Modbus 协议是工业自动化控制系统中常见的通信协议,协议的全面理解是个痛点。本课程主讲老师集10多年在Modbus协议学习、使用中的经验心得,结合当前物联网浪潮下Modbus协议开发的痛点,推出这套面向Modbus 协议初学者的课程。本课程不同于以往市面课程只是协议讲解无实现代码,而是采用讲解与实践并重的方式,结合STM32F103ZET6开发板进行手把手编程实践,十分有利于初学者学习。涵盖了学习者在Modbus协议方面会遇到的方方面面的问题,是目前全网首个对Modbus协议进行全面总结的课程。课程名称   协议讲解及实现>>课程内容1、Modbus 协议的基础。2、Modbus协议栈函数编程实现。3、Modbus协议在串行链路编程实现。4、Modbus协议在以太网链路编程实现。5、常见问题的解决方法。带给您的价值通过学习本课程,您可以做到如下:1、全面彻底的理解Modbus协议。2、理解在串行链路,以太网链路的实现。3、掌握Modbus协议解析的函数编程方法,调试工具的使用。4、掌握多个串口,网口同时运行同一个Modbus协议栈的方法。5、掌握Modbus协议下,负数,浮点数等处理方法。讲师简介许孝刚,山东大学工程硕士,副高职称,技术总监。10多年丰富嵌入式系统开发经验,国家软考“嵌入式系统设计师”。2017年获得“华为开发者社区杰出贡献者”奖励。

16,213

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧