企业网站改版新闻,长沙正规制作网站公司,网站建设入门教学,怎么做竞价托管若该文为原创文章#xff0c;转载请注明出处 本文章博客地址#xff1a;https://hpzwl.blog.csdn.net/article/details/136277231 红胖子(红模仿)的博文大全#xff1a;开发技术集合#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结…若该文为原创文章转载请注明出处 本文章博客地址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