项目实战:Qt监测操作系统cpu温度v1.1.0(支持windows、linux、国产麒麟系统)

若该文为原创文章,转载请注明出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/136277231
红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门)

Qt开发专栏:项目实战(点击传送门)


需求

  使用Qt软件开发一个检测cpu温度的功能。
  兼容windows、linux,国产麒麟系统(同为linux)

Demo

  windows上运行(需要管理员权限):
  在这里插入图片描述

  国产麒麟操作上运行(需要管理员权限):
  在这里插入图片描述

windows运行包下载地址

  CSDNf粉丝0积分下载:https://download.csdn.net/download/qq21497936/88874614
  QQ群:博客首页扫码进入QQ技术群,点击“文件”搜索“monitorCpuT”,群内与博文同步更新)


功能描述 v1.1.0

  • windows上定时检测输出cpu温度。
  • linux上定时检测输出cpu温度。
  • 国产银河麒麟操作系统上输出cpu温度。

模块化部署

  在这里插入图片描述


关键源码

#ifndef LINUXQString cmd = QString("wmic /namespace:\\\\root\\wmi PATH MSAcpi_ThermalZoneTemperature get CurrentTemperature");QProcess process;process.start(cmd);process.waitForFinished();QString result = process.readAllStandardOutput();LOG << result;result = result.replace("\r", "");LOG << result;QStringList list = result.split("\n", QString::SkipEmptyParts);LOG << list;bool ok = false;int t = 0;for(int index = 0; index < list.size(); index++){QString str = list.at(index);str = str.trimmed();LOG << str;t = str.toInt(&ok);if(ok){break;}}// false失败if(!ok){emit signal_detectTemperature(false, _t);// 下一次检测QTimer::singleShot(_intervalMs, this, SLOT(slot_loop()));return;}// 转换_t = (t - 2732) * 1.0f / 10;// 抛出温度emit signal_detectTemperature(true, _t);#else// sensors,有些电脑可能没安装,安装方法如下:// sudo apt-get install lm-sensors hddtemp// sudo sensors-detect// sensorsQProcess process;process.start("sensors");process.waitForFinished();QString result = process.readAllStandardOutput();LOG << result;result = result.replace("\r","");LOG << result;bool ok = false;QStringList list = result.split("\n", QString::SkipEmptyParts);LOG << list;
#if 1for(int index = 0; index < list.size(); index++){QString str = list.at(index);// 注意://      1.虚拟机是无法获取温度的// Physical id 0: +39.0°C  (high = +80.0°C, crit = +100.0°C)// Core 0:        +33.0°C  (high = +80.0°C, crit = +100.0°C)// Core 1:        +35.0°C  (high = +80.0°C, crit = +100.0°C)// Core 2:        +36.0°C  (high = +80.0°C, crit = +100.0°C)// Core 3:        +39.0°C  (high = +80.0°C, crit = +100.0°C)if(str.contains("Core 0")){LOG << str;QStringList subList = str.split(" ", QString::SkipEmptyParts);LOG << subList;if(subList.size() > 3){QString s = subList.at(2);// ("Core", "0:", "+33.0°C", "(high", "=", "+80.0°C,", "crit", "=", "+100.0°C)")if(s.startsWith("+") && s.endsWith("°C")){_t = s.mid(1, s.size() - 1 - 2).toDouble(&ok);}}break;}}
#elseQString str = "Core 0:        +33.2°C  (high = +80.0°C, crit = +100.0°C)";if(str.contains("Core 0")){LOG << str;QStringList subList = str.split(" ", QString::SkipEmptyParts);LOG << subList;if(subList.size() > 3){QString s = subList.at(2);// ("Core", "0:", "+33.0°C", "(high", "=", "+80.0°C,", "crit", "=", "+100.0°C)")if(s.startsWith("+") && s.endsWith("°C")){_t = s.mid(1, s.size() - 1 - 2).toDouble(&ok);}}}
#endif// false失败if(!ok){emit signal_detectTemperature(false, _t);// 下一次检测QTimer::singleShot(_intervalMs, this, SLOT(slot_loop()));return;}// 抛出温度emit signal_detectTemperature(true, _t);#endif
#endif

入坑

入坑一:windows获取不到输出

问题

  在这里插入图片描述

原因

  win10获取系统设备相关信息,需要管理员权限。

解决

  发布时:1.点击exe右键,使用管理员运行。
  发布时/开发时:1.可以直接exe鼠标右键属性,勾选管理员权限运行,后面开发就可以了。
  开发时:2.开发的时候,可以直接使用管理员权限打开QtCreator即可。

入坑二:linux获取不到温度

问题

  没有传感器输出:
  在这里插入图片描述

原因

  因为是使用虚拟机上开发,实际是没有传感器等一些数据的,都是No。(注意:直接开发ubuntu驱动时,查看操作系统上设备树,所有寄存器地址都是0x0000000,也是一样的道理,与硬件相关的,虚拟机是模拟的,没有实际)

解决

  重新装了一台物理麒麟机,测试可以。
  在这里插入图片描述


本文章博客地址:https://hpzwl.blog.csdn.net/article/details/136277231

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/492310.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

随机分布模型

目录 前言 一、离散型随机变量 1.1 0-1分布 1.2 二项分布 1.3 帕斯卡分布 1.4 几何分布 1.5 超几何分布 1.6 泊松分布 二、连续型随机变量 2.1 均匀分布 2.2 指数分布 2.3 高斯分布/正态分布 2.4 分布&#xff08;抽样分布&#xff09; 2.5 t分布&#xff08;抽样…

NotePad2轻便够用的文本编辑器

下载方式&#xff1a; 360软件管家里就可以安装&#xff0c;非常的方便。 打开后&#xff0c;界面如下&#xff1a; 可以拖拽打开文本&#xff0c;和notepad的功能差不多&#xff0c;可以平行替代。

【力扣白嫖日记】178.分数排名

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 178.分数排名 表&#xff1a;Scores 列名类型idintscoredecimal 在 SQL 中&#xff0c;id 是该表的主键。 …

linux查看服务器内核CUP版本相关命令

服务器参考 计算架构&#xff1a;x86-64产品系列&#xff1a;华为云耀云服务器操作系列&#xff1a;CentOS 7 执行uname -a查看服务器内核版本 Linux hecs-82210 3.10.0-1160.92.1.el7.x86_64 #1 SMP Tue Jun 20 11:48:01 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux执行hostn…

LeetCode 1038.从二叉搜索树到更大和树

给定一个二叉搜索树 root (BST)&#xff0c;请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。 提醒一下&#xff0c; 二叉搜索树 满足下列约束条件&#xff1a; 节点的左子树仅包含键 小于 节点键的节点。 节点的右子树仅包含键 大于 节点键的节点。 左…

【力扣 - 有效的括号】

题目描述 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同…

如何在 Shopify 中配置产品比较以获得最佳性能

引言 在竞争激烈的电子商务世界中&#xff0c;为在线零售商提供良好的购物体验至关重要。为了增强用户体验并帮助客户做出明智的购买决策&#xff0c;一种方法是提供产品比较功能。Shopify作为领先的电子商务平台&#xff0c;提供了各种工具和功能来以优秀方式配置产品比较。在…

docker 容器访问 GPU 资源使用指南

概述 nvidia-docker 和 nvidia-container-runtime 是用于在 NVIDIA GPU 上运行 Docker 容器的两个相关工具。它们的作用是提供 Docker 容器与 GPU 加速硬件的集成支持&#xff0c;使容器中的应用程序能够充分利用 GPU 资源。 nvidia-docker 为了提高 Nvidia GPU 在 docker 中的…

微信小程序 --- 小程序基础知识

小程序基础知识 1. 认识什么是小程序 什么是微信小程序 微信小程序是一种运行在微信内部的 轻量级 应用程序。 在使用小程序时 不需要下载安装&#xff0c;用户 扫一扫 或 搜一下 即可打开应用。它也体现了 “用完即走” 的理念&#xff0c;用户不用关心安装太多应用的问题…

【python】0、超详细介绍:json、http

文章目录 一、json二、http2.1 json 读取 request 序列化 三、基本类型3.1 decimal 四、图像4.1 颜色格式转换 一、json import json f open(data.json) # open json file data json.load(f) # 读出 json object for i in data[emp_details]: # 取出一级属性 emp_details, …

springboot219基于SpringBoot的网络海鲜市场系统的设计与实现

网络海鲜市场系统的设计与实现 摘 要 计算机网络发展到现在已经好几十年了&#xff0c;在理论上面已经有了很丰富的基础&#xff0c;并且在现实生活中也到处都在使用&#xff0c;可以说&#xff0c;经过几十年的发展&#xff0c;互联网技术已经把地域信息的隔阂给消除了&…

SQLServer sp_help使用方法

给大家介绍一个在SQLServer中非常实用的一个存储过程&#xff0c;在SQL Server中&#xff0c;sp_help 存储过程用于显示有关数据库对象&#xff08;如表、视图或存储过程&#xff09;的信息。它提供有关指定对象的结构和属性的详细信息。使用 sp_help 的语法如下&#xff1a; …