2011-12-19 12 views
4

私はCPUの温度をチェックできるアプリケーションを作成しようとしています。 libsensors(3)のマニュアルページを使用して、少なくともlibsensors_version番号を取得できました。私はsensors_get_valueが誰かがlibsensorsを正しく使用できましたか?

const sensors_chip_name *name 
int subfeat_nr 
double *value 

が渡されることを知っているmanページで

#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() 
} 

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

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

EDIT:誰もが、このライブラリについて多くを知っているようだしないので

は、誰もが温度を取得するための別の方法を知っていますか?

答えて

10

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; 
          } 
         } 
        } 
    } 
    
  • +0

    が実際にコードが役立ちます見て:でプラグインがかなり読みやすくなりますhttp://sensors-applet.sourceforge.net/index.php?content=source

    ...特に、libsensorsが...私は、これはまっすぐそのコードに使用可能なgitwebリンクする必要があります信じていますたくさん。ありがとうございました。私は今夜​​後にこれを行かなければならないでしょう。 – CountMurphy

    +0

    それは素晴らしく働いた! – CountMurphy

    関連する問題