长话短说我试图写一个可以检查CPU温度的应用程序。 使用libsensors(3)手册页,我至less可以得到libsensors_version编号。 截至目前,这是我的代码:
#include <sensors/sensors.h> #include "SensorData.h" #include <string> #include <sstream> using namespace std; SensorData::SensorData() { sensors_init(NULL); } SensorData::~SensorData() { sensors_cleanup(); } string SensorData::GetVersion() { ostringstream Converter; Converter<<"Version: "<<libsensors_version; return Converter.str(); } void SensorData::FetchTemp() { //sensors_get_value() }
通过手册页我知道了sensors_get_value的期望
const sensors_chip_name *name int subfeat_nr double *value
被传递给它。 问题是我不知道这些是什么。 几乎在文档中的每个function都有这个问题。 他们都期望我不知道如何提供模糊的东西。
所以这里是问题的大部分:有没有人可以看到这个库的任何工作的例子? 或者至less有人知道如何赋予这些function所需的价值?
编辑:
由于似乎没有人对这个图书馆有太多了解,有没有人知道有不同的方法来获得温度?
您可以通过浏览源代码来了解如何使用API。 sensors
程序的代码不太复杂。
为了让你开始,这里有一个快速的功能:
你可以直接将它添加到你现有的骨架类。
(此代码仅用于演示目的,未经彻底测试。)
void SensorData::FetchTemp() { sensors_chip_name const * cn; int c = 0; while ((cn = sensors_get_detected_chips(0, &c)) != 0) { std::cout << "Chip: " << cn->prefix << "/" << cn->path << std::endl; sensors_feature const *feat; int f = 0; while ((feat = sensors_get_features(cn, &f)) != 0) { std::cout << f << ": " << feat->name << std::endl; sensors_subfeature const *subf; int s = 0; while ((subf = sensors_get_all_subfeatures(cn, feat, &s)) != 0) { std::cout << f << ":" << s << ":" << subf->name << "/" << subf->number << " = "; double val; if (subf->flags & SENSORS_MODE_R) { int rc = sensors_get_value(cn, subf->number, &val); if (rc < 0) { std::cout << "err: " << rc; } else { std::cout << val; } } std::cout << std::endl; } } } }
Gnome面板传感器小程序与libsensors(和其他后端)一起工作。 Sourceforge提供了完整的源代码,在这里: http ://sensors-applet.sourceforge.net/index.php?content=source
特别是,libsensors插件看起来相当清晰…我相信这应该是一个可用的gitweb链接直接代码: http ://sensors-applet.git.sourceforge.net/git/gitweb.cgi?p=sensors -applet /传感器的小程序;一个=斑点; F =插件/ libsensors / libsensors-plugin.c; H = 960c19f4c36902dee4e20b690f2e3dfe6c715279; HB = HEAD