环境:

  • Ubuntu 16.04 64 bit

  • QT5.13.1/QT5.12

原理

对于Linux来说一切都是文件,温度传感器也是个文件,如果要获取某个温度传感器的数值,可以读取相应的文件,Linux某些版本中,有一些温度传感器对应的文件在目录/sys/class/hwmon,比如我的一台装了ubuntu 1604的电脑,内核是4.15,如下:

其中hwmon0是跟w83627芯片相关的,w83627(DA00-WW83627DHG-P.pdf)是nuvoton(以前的华邦)出的监控IC,hwmon1目录对应的是CPU内部的温度传感器(Kernel driver k10temp)。这些传感器的信息可以使用cat命令读出。

要使用QT编写个程序来显示某个传感器的数值,只需要实现读取温度传感器对应的文件即可。

创建工程

先做个简单的,使用QT的Label显示我的电脑CPU温度,也就是对应hwmon1目录下对应的文件。创建个Qt Widgets Application工程,命名为cpu_temp,基类选择QDialog,选择创建ui,创建之后如下:

修改UI文件

修改UI文件,首先调整下UI的大小,然后添加Label控件并命名为value,如下:

读取的方式

从之前用cat查看CPU温度传感器对应的文件可知,该文件是个文本文件,只要一文本方式读取该文件的全部内容就可以获得该CPU的当前温度了,读出来的数值是CPU温度的实际值的1000倍,接下来只需要实现个读取文本文件的程序就基本上实现了,

然后在dialog.h中添加头文件:

#include "QFile"

并在类声明中声明个QFile变量:

QFile f;

实现代码

定义个宏来表示CPU温度传感器对应的文件:

#define SENSOR_PATH  "/sys/class/hwmon/hwmon1/temp1_input"

然后实现读取的程序并显示到Label控件中:

    QFile f(SENSOR_PATH);
if(!f.open(QIODevice::ReadOnly))
{
this->ui->value->setText("Open faile");
return;
}
QString va = f.readAll();
QString temp = va.left(2) + "." + va.mid(2,2) + "℃";
this->ui->value->setText(temp);
f.close();

编译运行结果如下:

每隔一段时间读取一次

程序还是非常简单的,不过,该程序只能显示运行该程序的那一瞬间CPU的温度,并不能实时显示CPU的温度,也没什么用。为了让该程序更有实用性,使用QT的定时器QTimer,实现每 1 秒读取一次并显示出来,具体代码在:cpu_temp_V0.01

在arm Linux 中运行

代码没有改动,交叉编译后,在一块基于S5P4418的板子上运行如下:

由于该板子自带的传感器的驱动好像有问题,读出来的数据不正常,我接了个LM75,所以上面显示的并不是CPU的温度。

sensors

上面使用到的工具 sensors,有些电脑可能没安装,安装方法如下:

sudo apt-get install lm-sensors hddtemp
sudo sensors-detect
sensors

参考:archlinux lm_sensors

lm_sensors projectinformation

Linux中使用QT读取并显示温度传感器数值的更多相关文章

  1. Linux 中使用 QT Charts 显示温度传感器

    前一篇笔记中实现了QT的Label控件显示CPU的温度,只能显示当前的温度,并不能反映CPU温度的变化情况,现在来实现使用QT Charts的曲线图实现一个实时曲线来显示CPU的温度. 添加对Qt C ...

  2. linux中sudo如何读取标准输入作为密码,避免每次都输入密码?

    需求描述: 今天想要在生产环境中,弄自动部署的脚本,但是现在呢,需要sudo权限,每次都要输入.就想看sudo如何能从标准输入读取密码. 操作过程: 1.原来的方法 [deployer@testvm ...

  3. linux中使用opdir_readdir读取目录中的信息

    #include <dirent.h>#include <stdio.h>#include <stdlib.h> int main(int argc, char * ...

  4. 【Qt开发】【VS开发】【Linux开发】OpenCV、Qt-MinGw、Qt-msvc、VS2010、VS2015、Ubuntu Linux、ARM Linux中几个特别容易混淆的内容

    [Qt开发][VS开发][Linux开发]OpenCV.Qt-MinGw.Qt-msvc.VS2010.VS2015.Ubuntu Linux.ARM Linux中几个特别容易混淆的内容 标签:[Qt ...

  5. Linux中Qt的安装

    1.下载Ot安装包 Qt5.30的下载地址如下,在网页中打开找到需要的资源,下载.run格式的安装软件. http://download.qt.io/archive/qt/5.3/5.3.0/qt-o ...

  6. CMake中添加Qt模块的合理方法

    https://www.jianshu.com/p/7eeb6f79a275 转载自这里 用CMake来组织的工程中要用Qt首先要设置.找到Qt相关模块.主要是通过find_package这个CMak ...

  7. Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式

    Linux就这个范儿 第15章 七种武器  linux 同步IO: sync.fsync与fdatasync   Linux中的内存大页面huge page/large page  David Cut ...

  8. 【转】windows和linux中搭建python集成开发环境IDE

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

  9. Linux中环境变量文件及配置

    Linux中环境变量文件及配置   一.环境变量文件介绍 转自:http://blog.csdn.net/cscmaker/article/details/7261921 Linux中环境变量包括系统 ...

随机推荐

  1. Java_抽象

    抽象的基本使用 抽象的关键字是abstract,可以用来修饰类(抽象类),还可以修饰方法(抽象方法). 1 //抽象类 2 public abstract class Animal{ 3 //抽象方法 ...

  2. 21.File和IO流

    IO就可以对文件进行读写 File表示要读写的文件在哪,也可以对文件进行创建,删除等操作 小结: IO流是什么? 1.可以将数据从本地文件中读取出来 2.可以将数据从内存保存到本地文件 File类时什 ...

  3. [刷题] 347 Top K Frequent Elements

    要求 给定一个非空数组,返回前k个出现频率最高的元素 示例 [1,1,1,2,2,3], k=2 输出:[1,2] 思路 出队逻辑,普通队列是先进先出,优先队列是按最大/最小值出队 通过堆实现优先队列 ...

  4. JQuery 动态加载 HTML 元素时绑定点击事件无效问题

    问题描述 假设项目中有一个列表页面,如下: 当点击列表一行数据可以显示详情页面,而详情页面的数据是根据当前行的数据作为参数,通过 ajax 请求到后台返回的数据,再根据返回的结果动态生成 html 页 ...

  5. mysql数据库-备份与还原-Percona XtraBackup 2.4备份工具使用

    目录 xtrabackup 特点 备份生成的相关文件 xtrabackup 安装 xtrabackup 用法 1 备份 2 预备份 3 还原 4 其他 还原注意事项 xtrabackup实现完全备份及 ...

  6. Go语言web开发---Cronexpr 包实现并发定时任务

    安装Cronexpr包: go get -u github.com/gorhill/cronexpr 这个包支持七位时间控制 *(秒) *(分) *(时) *(日) *(月) *(周) *(年) 栗子 ...

  7. ALD技术产品形态

    ALD技术产品形态 原子层沉积研究设备 TFS 200是适合科学研究和企业研发的最灵活的ALD平台.倍耐克 TFS 200专门设计用于多用户研究环境中把可能发生的交叉污染降至最低. 大量的可用选项和升 ...

  8. Deep Learning部署TVM Golang运行时Runtime

    Deep Learning部署TVM Golang运行时Runtime 介绍 TVM是一个开放式深度学习编译器堆栈,用于编译从不同框架到CPU,GPU或专用加速器的各种深度学习模型.TVM支持来自Te ...

  9. HiCar基本功能介绍

    HiCar基本功能介绍 基本概述 一方面,基于操作系统超强的分布式能力,HUAWEI HiCar通过手机和汽车之间的连接,基于三层标准与能力,构建手机和汽车互助资源池,把手机的服务生态延伸到车内,实现 ...

  10. 车联网V-2X智能汽车驾驶

    车联网V-2X智能汽车驾驶 早期的功能互联汽车无法满足全球车主针对不同应用和定制移动服务的各种需求.这导致较低的客户续订率,较高的建造和运营成本以及较低的组装率.通常,在没有统一平台的情况下,不同的车 ...