项目实战: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.mzph.cn/news/705917.shtml

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

相关文章

全面升级!Apache HugeGraph 1.2.0版本发布

图数据库以独特的数据管理和分析能力&#xff0c;在企业数智化转型的过程中正在成为数据治理的核心&#xff0c;根据IDC调研显示&#xff0c;95%的企业认为图数据库是重要的数据管理工具&#xff0c;超过65%的厂商认为在业务上图数据库优于其他选择&#xff0c;尤其是在金融风控…

Unity零基础到进阶 | Unity中的 RectTransformUtility 方法整理汇总

Unity零基础到进阶 ☀️| RectTransformUtility 方法整理汇总一、RectTransformUtility 官方文档1.1 RectTransformUtility.CalculateRelativeRectTransformBounds&#xff08;重&#xff09;1.2 RectTransformUtility.FlipLayoutAxes1.3 RectTransformUtility.FlipLayoutOnAxi…

观察者模式与发布订阅模式

观察者模式 定义&#xff1a; 观察者模式是一种行为型设计模式&#xff0c;定义对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。 结构图&#xff1a; ES6简易代码实现&#xff1a; //ts环境下…

Nginx——安装和反向代理

Nginx安装与应用 1.1 Nginx介绍 Nginx 是一个高性能的HTTP和反向代理服务器,特点是占有内存少&#xff0c;并发能力强 Nginx可以作为静态页面的web服务器&#xff0c;同时还支持CGI协议的动态语言&#xff0c;比如perl、php等。但是不支持java。Java程序只能通过与tomcat配合…

谷歌AI发展史:从阿尔法围棋到Gemini与Gemma的开源创新

谷歌一直是人工智能领域的重要推动者。本文将回顾谷歌AI的发展历程&#xff0c;从阿尔法围棋到现如今的Gemini和Gemma&#xff0c;探讨谷歌在人工智能领域的重大突破和创新。 1. 引言 在计算机科学领域&#xff0c;谷歌一直是人工智能&#xff08;AI&#xff0…

MasterAlign全景视觉点胶应用软件说明书

MasterAlign视觉软件通过高精度的图像处理和机器学习算法&#xff0c;实现了对点胶过程的全面控制和管理。以下是关于MasterAlign在全景视觉点胶应用场景中如何使用的详细说明。看完全文相信一定能让您快速上手使用。

多维时序 | Matlab实现CPO-BiTCN-BiGRU冠豪猪优化时间卷积神经网络双向门控循环单元多变量时间序列预测模型

多维时序 | Matlab实现CPO-BiTCN-BiGRU冠豪猪优化时间卷积神经网络双向门控循环单元多变量时间序列预测模型 目录 多维时序 | Matlab实现CPO-BiTCN-BiGRU冠豪猪优化时间卷积神经网络双向门控循环单元多变量时间序列预测模型预测效果基本介绍程序设计参考资料 预测效果 基本介绍…

基于R语言的Meta分析【全流程、不确定性分析】方法与Meta机器学习技术应用

Meta分析是针对某一科研问题&#xff0c;根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法&#xff0c;对来源不同的研究成果进行收集、合并及定量统计分析的方法&#xff0c;最早出现于“循证医学”&#xff0c;现已广泛应用于农林生态&#xff0c;资源环境等方面。…

设计模式(六)代理模式

相关文章设计模式系列 1.代理模式简介 代理模式介绍 代理模式也叫委托模式&#xff0c;是结构型设计模式的一种。在现实生活中我们用到类似代理模式的场景有很多&#xff0c;比如代购、代理上网、打官司等。 定义 为其他对象提供一种代理以控制这个对象的访问。 代理模式…

Layer1 明星项目 Partisia Blockchain 何以打造互操作、可创新的数字经济网络

我们的目标是创建一个以用户为中心的全新数字经济网络&#xff1a;在去信任化和公平透明的环境下&#xff0c;所有的隐私数据都能够得到天然保障&#xff0c;企业、用户等各角色的协作与共享将会更顺利地进行。 —— Partisia Blockchain 团队 作为一个以 Web3 安全为技术方向的…

Linux学习之vi/vim详细介绍

目录 ​编辑 1. 什么是 vim&#xff1f; 2. vi/vim 的使用 2.1 命令模式 2.2 输入模式 2.3 底线命令模式 3. vi/vim 使用实例 3.1 使用 vi/vim 进入一般模式 3.2 按下 i 进入输入模式(也称为编辑模式)&#xff0c;开始编辑文字 3.3 按下 ESC 按钮回到一般模式…

jenkins+kubernetes+git+dockerhub构建devops云平台

Devops简介 k8s助力Devops在企业落地实践 传统方式部署项目为什么发布慢&#xff0c;效率低&#xff1f; 上线一个功能&#xff0c;有多少时间被浪费了&#xff1f; 如何解决发布慢&#xff0c;效率低的问题呢&#xff1f; 什么是Devops&#xff1f; 敏捷开发 提高开发效率&…

CKA认证,开启您的云原生之旅!

在当今数字化时代&#xff0c;云计算已经成为企业和个人发展的关键技术。而获得CKA&#xff08;Certified Kubernetes Administrator&#xff09;认证&#xff0c;将是您在云原生领域迈出的重要一步。 CKA认证是由Kubernetes官方推出的权威认证&#xff0c;它旨在验证您在Kuber…

vue:实现顶部消息横向滚动通知

前言 系统顶部展示一个横向滚动的消息通知&#xff0c;就是消息内容从右往左一直滚动。 效果如下&#xff1a; 代码 使用 <template><div class"notic-bar"><img :src"notic" class"notice-img" /><div class"noti…

C++之类和对象(2)

目录 1.类的6个默认成员函数 2. 构造函数 2.1 概念 2.2 特性 3.析构函数 3.1 概念 3.2 特性 4. 拷贝构造函数 4.1 概念 4.2 特征 5.赋值运算符重载 5.1 运算符重载 5.2 赋值运算符重载 2. 赋值运算符只能重载成类的成员函数不能重载成全局函数 3. 用户没有显式实现时&…

【Flink CDC(一)】实现mysql整表与增量读取

文章目录 一. 运行前准备1. 依赖1.1. Maven dependency1.2. SQL Client JAR&#xff08;推荐&#xff09; 2. 配置 MySQL 服务器&#xff08;必须&#xff09; 二. 功能说明1. 启动模式2. 全量阶段支持 checkpoint3. 关于无主键表Exactly-Once 处理 三. 实战1. 实现mysql整表与…

如何用生成式AI创建食谱,解决五岁孩童挑食问题?

如何处理孩子挑食问题&#xff0c;对父母来说可能是一个挑战。这需要耐心、创造力和策略的结合。在深入具体策略之前&#xff0c;了解五岁儿童的口味偏好仍在发展中&#xff0c;他们的饮食行为受多种因素影响&#xff0c;包括气质、接触不同类型食物的程度以及父母对饮食的态度…

【ArcGIS】利用DEM进行水文分析:流向/流量等

利用DEM进行水文分析 ArcGIS实例参考 水文分析通过建立地表水文模型&#xff0c;研究与地表水流相关的各种自然现象&#xff0c;在城市和区域规划、农业及森林、交通道路等许多领域具有广泛的应用。 ArcGIS实例 某流域30m分辨率DEM如下&#xff1a; &#xff08;1&#xff09…

微服务学习

一、服务注册发现 服务注册就是维护一个登记簿&#xff0c;它管理系统内所有的服务地址。当新的服务启动后&#xff0c;它会向登记簿交待自己的地址信息。服务的依赖方直接向登记簿要Service Provider地址就行了。当下用于服务注册的工具非常多ZooKeeper&#xff0c;Consul&am…

【深入理解设计模式】装饰者设计模式

装饰者设计模式 装饰者设计模式&#xff08;Decorator Design Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许向现有对象添加新功能而不改变其结构。这种模式通常用于需要动态地为对象添加功能或行为的情况&#xff0c;而且这些功能可以独立于对象本身来进行扩展…