项目实战:Qt监测操作系统物理网卡通断v1.1.0(支持windows、linux、国产麒麟系统)

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

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


需求

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

Demo

  windows上运行:
  在这里插入图片描述
  

  国产麒麟操作上运行:
  在这里插入图片描述
  在这里插入图片描述

windows运行包下载地址

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


功能描述 v1.1.0

  • windows上实时检测出网卡通断(插拔,失联等情况)
  • linux上实时检测出网卡通断(插拔,失联等情况)
  • 国产银河麒麟操作系统上实时检测出网卡通断(插拔,失联等情况)

模块化部署

  在这里插入图片描述


关键源码

#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/136276999

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

爬取链家二手房房价数据存入mongodb并进行分析

实验目的 1.使用python将爬虫数据存入mongodb&#xff1b; 2.使用python读取mongodb数据并进行可视化分析。 实验原理 MongoDB是文档数据库&#xff0c;采用BSON的结构来存储数据。在文档中可嵌套其他文档类型&#xff0c;使得MongoDB具有很强的数据描述能力。本节案例使用的…

第6.4章:StarRocks查询加速——Colocation Join

目录 一、StarRocks数据划分 1.1 分区 1.2 分桶 二、Colocation Join实现原理 2.1 Colocate Join概述 2.2 Colocate Join实现原理 三、应用案例 注&#xff1a;本篇文章阐述的是StarRocks-3.2版本的Colocation Join 官网文章地址&#xff1a; Colocate Join | StarRoc…

【科技素养题】少儿编程 蓝桥杯青少组科技素养题真题及解析第24套

少儿编程 蓝桥杯青少组科技素养题真题及解析第24套 1、A市和B市决定联合建造一个邮件集散中心用于将来自其他地区的邮件运送至两个城市。A 市每周会收到 4000 份邮件,B 市每周会收到 6000 份邮件。假设运送邮件的时间与集散中心距离城市的距离成正比,A市与8市之间的连线长50…

相机选型介绍

摄影测量中&#xff0c;相机是非常重要的角色&#xff0c;合适的相机产出合适的图像&#xff0c;得到合适的重建精度&#xff0c;这是相机的重要性。 您也许第一反应是&#xff0c;摄影测量所需的理想相机&#xff0c;是有着超高分辨率的相机&#xff0c;但事实可能并非如此&a…

中兴通讯携吉林移动迈向5G-A新阶段,完成3CC技术应用

日前&#xff0c;中兴通讯携手中国移动吉林移动分公司&#xff0c;在5G-A领域取得新突破。具体来说&#xff0c;双方基于MTK芯片M80终端&#xff0c;完成了5G-A三载波聚合试点&#xff0c;实测下行速率达到理论峰值4.25Gbps&#xff0c;相比2.6G单载波速率提升2.5倍。如此成绩&…

11-pytorch-使用自己的数据集测试

b站小土堆pytorch教程学习笔记 import torch import torchvision from PIL import Image from torch import nnimg_path ../imgs/dog.png imageImage.open(img_path) print(image) # imageimage.convert(RGB)transformtorchvision.transforms.Compose([torchvision.transforms.…

typecho 给文章创建目录树

受益于 shortcode 短代码插件和泽泽短代码中目录树的显示样式&#xff0c;形成了自己实现添加文章目录的思路&#xff1a; 一、文章目录树的结构 <div id"toc"><div class"toc-left"><div class"toc-btn" type"button&quo…

【机器学习基础】一元线性回归(适合初学者的保姆级文章)

&#x1f680;个人主页&#xff1a;为梦而生~ 关注我一起学习吧&#xff01; &#x1f4a1;专栏&#xff1a;机器学习 欢迎订阅&#xff01;后面的内容会越来越有意思~ &#x1f4a1;往期推荐&#xff1a; 【机器学习基础】机器学习入门&#xff08;1&#xff09; 【机器学习基…

Linux进程【补充】

文章目录 进程概念task_struct 进程创建forkvfork写时拷贝 进程状态僵尸进程孤儿进程守护进程 进程地址空间是什么为什么怎么做 进程概念 进程是一个程序的执行实例或者是担当系统资源分配的实体。当一个程序运行时&#xff0c;被从硬盘加载到内存中&#xff0c;操作系统为每个…

Canvas学习笔记02:canvas的路径扫盲,附代码案例

hello&#xff0c;我是贝格前端工场&#xff0c;最近在学习canvas&#xff0c;分享一些canvas的一些知识点笔记&#xff0c;本期分享canvas的路径知识&#xff0c;欢迎老铁们一同学习&#xff0c;欢迎关注&#xff0c;如有前端项目可以私信贝格。 一、什么是canvas路径 Canvas…

大模型 Advanced-RAG(高级检索增强生成):从理论到 LlamaIndex 实战!

最近关于检索增强生成进行了调查&#xff0c;总结了三种最近发展的范式&#xff1a; Naive RAG&#xff08;简单RAG&#xff09;Advanced RAG&#xff08;高级RAG&#xff09;Modular RAG&#xff08;模块化RAG&#xff09; 本文首先讨论这些技术&#xff0c;接着分享如何使…

数字电路 第二章—第二节(半导体二极管、三极管和MOS管的开关特性)

一、理想开关的开关特性 1、静态特性 &#xff08;1&#xff09;断开时&#xff0c;无论在多大范围内变化&#xff0c;其等效电阻&#xff0c;通过其中的电流。 &#xff08;2&#xff09;闭合时&#xff0c;无论流过其中的电流在多大范围内变化&#xff0c;其等效电阻&…

Spark大数据分析与实战笔记(第三章 Spark RDD 弹性分布式数据集-05)

文章目录 每日一句正能量第3章 Spark RDD弹性分布式数据集章节概要3.7 Spark的任务调度3.7.1 DAG的概念3.7.2 RDD在Spark中的运行流程 总结 每日一句正能量 成功的速度一定要超过父母老去的速度&#xff0c;努力吧。做事不必与俗同&#xff0c;亦不与俗异&#xff1b;做事不必令…

Mysql运维篇(六) 部署MHA--一主二从部署

MAH架构图 一、上传MySQL软件 1、同步MySQL软件 [rootmysql01 ~]# ls -lrt total 626112 -rw-r--r--. 1 root root 641127384 Jan 30 15:13 mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz -rw-------. 1 root root 1697 Feb 3 12:09 anaconda-ks.cfg -rw-r--r--. 1 root…

[SpringDataMongodb开发游戏服务器实战]

背景&#xff1a; xdb其实足够完美了&#xff0c;现在回想一下&#xff0c;觉得有点复杂&#xff0c;我们不应该绑定语言&#xff0c;最好有自己的架构思路。 七号堡垒作为成功的商业项目&#xff0c;告诉我&#xff1a;其实数据是多读少写的&#xff0c;有修改的时候直接改库也…

推荐一个 Obsidian 的 ChatGPT 插件

源码地址&#xff1a;https://github.com/nhaouari/obsidian-textgenerator-plugin Text Generator 是目前我使用过的最好的 Obsidian 中的 ChatGPT 功能插件。它旨在智能生成内容&#xff0c;以便轻松记笔记。它不仅可以在 Obsidian 中直接使用 ChatGPT&#xff0c;还提供了优…

Python staticmethod函数

Python是一种功能强大且灵活的编程语言&#xff0c;具有许多特性和功能&#xff0c;其中之一就是staticmethod函数。staticmethod函数是Python中用于定义静态方法的一种特殊装饰器。在本文中&#xff0c;将深入探讨staticmethod函数的用法、优势以及与其他方法类型的比较。 什…

【力扣 - 将有序数组转化为二叉搜索树】

题目描述 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 题解 前言 二叉搜索树的中序遍历是升序序列&a…

黑马JavaWeb开发跟学(一)Web前端开发HTML、CSS基础

黑马JavaWeb开发一.Web前端开发HTML、CSS基础 引子、Web开发介绍传统路线本课程全新路线本课程适用人群课程收获一、什么是web开发二、网站的工作流程三、网站的开发模式四、网站的开发技术 前端开发基础一、前端开发二、HTML & CSS2.1 HTML快速入门2.1.1 操作第一步第二步…

Arduino中安装ESP32网络抽风无法下载 暴力解决办法 python

不知道什么仙人设计的arduino连接网络部分&#xff0c;死活下不下来。&#xff08;真的沙口&#xff0c;第一次看到这么抽风的下载口&#xff09; 操作 给爷惹火了我踏马解析json选zip直接全部下下来 把这个大家的开发板管理地址下下来跟后面python放在同一目录下&#xff0c…