誰もlibsensorsを適切に使うことができましたか?

私はCPUの温度をチェックできるアプリケーションを書こうとしています。 libsensors(3)のマニュアルページを使用して、少なくともlibsensors_version番号を取得できました。今のところ、ここに私のコードです:

#include 
#include "SensorData.h"
#include 
#include 


using namespace std;

SensorData::SensorData()
{
   sensors_init(NULL);
}

SensorData::~SensorData()
{
    sensors_cleanup();
}

string SensorData::GetVersion()
{
    ostringstream Converter;
    Converter<<"Version: "<

マニュアルページでは、sensors_get_valueが期待していることを知っています

const sensors_chip_name *name
int subfeat_nr
double *value 

それに渡される。問題はそれらが何であるか全く分かりません。ドキュメントのすべての機能にこの問題があります。彼らは私が供給する方法がわからない漠然としたことをすべて期待しています。

だからここに質問の大部分があります:誰かが私が見ることができるこのライブラリの任意の作業の例がありますか?あるいは、少なくとも、誰も、これらの関数に必要な値を与える方法を知っていますか?

編集:

誰もこの図書館について多くのことを知っているようには見えないので、誰も気温を得るための別の方法を知っていますか?

6

2 答え

ソースコードをブラウズすることで、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;
            }
        }
    }
}
12
追加された
実際に見ているコードは多くの助けになります。ありがとうございました。私は今夜​​後にこれを行かなければならないでしょう。
追加された 著者 CountMurphy,
それはすごくうまくいった!
追加された 著者 CountMurphy,

Gnomeパネルのセンサーアプレットはlibsensors(および他のバックエンド)で動作します。完全なソースは、Sourceforgeから入手できます: http://sensors-applet.sourceforge .net/index.php?content = source

… in particular, the libsensors plug-in looks fairly legible… I believe this should be a usable gitweb link straight to that code: http://sensors-applet.git.sourceforge.net/git/gitweb.cgi?p=sensors-applet/sensors-applet;a=blob;f=plugins/libsensors/libsensors-plugin.c;h=960c19f4c36902dee4e20b690f2e3dfe6c715279;hb=HEAD

2
追加された