• 688阅读
  • 7回复

[讨论]QT串口软件显示四字节浮点数 [复制链接]

上一主题 下一主题
离线captain_mh
 

只看楼主 倒序阅读 楼主  发表于: 2023-10-23
自己是QT新手,在学习中,现在QT C++做了个上位机串口软件,下位机上传一包数据,其中有四字节16进制浮点数,怎样转化为小数并在自己上位机的接收框中显示出来,在显示框中要变为Float类型。
离线dbzhang800

只看该作者 1楼 发表于: 2023-10-23
你的问题和串口没关系,看起来似乎也Qt关系也不大


详细说说"四字节16禁止浮点数" 是什么东西。你可以直接修改下面的代码

char bytes[4] = 你的数据;
std::cout << 输出成你想要的格式;







离线uidab

只看该作者 2楼 发表于: 2023-10-23
估计他协议上写的是float类型,占用4个字节,然后他收到4个字节数据,不知道怎么转成浮点数。
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线captain_mh

只看该作者 3楼 发表于: 2023-10-23
回 uidab 的帖子
uidab:估计他协议上写的是float类型,占用4个字节,然后他收到4个字节数据,不知道怎么转成浮点数。 (2023-10-23 12:21) 

对对,就是这个意思,咋转换然后显示
离线captain_mh

只看该作者 4楼 发表于: 2023-10-23
回 uidab 的帖子
uidab:估计他协议上写的是float类型,占用4个字节,然后他收到4个字节数据,不知道怎么转成浮点数。 (2023-10-23 12:21) 

我知道四字节和FLOAT咋转换,联合体或者其他办法,但是QT用的不熟,不会显示这个浮点数
在线20091001753

只看该作者 5楼 发表于: 2023-10-23
首先,建议你买一本Qt的书,先系统性地入门Qt,这样对Qt有些啥能有大概的了解。
然后,不花钱的办法,就是去B站看QT入门视频。

因为你这个问题,只要是看过入门教程的人,一般都不会问出来。
如果你不先去系统性地了解一下,那么你每遇到一个问题,就要发一个帖问一次。这会严重拖累你的进度。

买 Qt5 的入门书籍就好。
第一遍读,并不需要你读得很仔细,只要了解每个章节能实现什么功能就好。所以能读得很快,两三天就能读完。
等你需要用到这个功能的时候,你再仔细去读那部分章节,看看代码的实现。
(づ ̄ 3 ̄)づ
离线captain_mh

只看该作者 6楼 发表于: 2023-10-30
回 20091001753 的帖子
20091001753:首先,建议你买一本Qt的书,先系统性地入门Qt,这样对Qt有些啥能有大概的了解。
然后,不花钱的办法,就是去B站看QT入门视频。
因为你这个问题,只要是看过入门教程的人,一般都不会问出来。
如果你不先去系统性地了解一下,那么你每遇到一个问题,就要发一个帖问一次。这会严重 .. (2023-10-23 15:45) 

谢谢,照您说的,我先系统学习下
离线abc881858

只看该作者 7楼 发表于: 02-22
其实就是 float 转 QString,因为控件要显示的话,都是用的 QString


ui->textEdit->setText(QString::number(receivedFloat, 'f', 2)); // 'f'表示浮点数,2表示小数点后保留两位

当然 你也可能收到的是 4个Hex值,比如协议上用了 uint8_t data[4]
那就要涉及 char 到 float 的转换

  1. #include <iostream>
  2. #include <cstdint>
  3. int main() {
  4.     uint8_t data[4] = {0xAA, 0xBB, 0xCC, 0xDD};
  5.     float result = 0.0f;
  6.     for (int i = 0; i < 4; ++i) {
  7.         result += static_cast<float>(data[i]) * (1 << (8 * i));
  8.     }
  9.     std::cout << "Result: " << result << std::endl;
  10.     return 0;
  11. }


快速回复
限100 字节
 
上一个 下一个