Cを使用してPIの温度を取得する


回答:


13

この回答で/sys/class/thermal/thermal_zone0/temp指定されているように、ファイルを読み取ることができます。コマンドラインから測定することで、ファイルはで読み込まれcatます。ただし、ファイルをCで開くことができるはずです。温度は摂氏ミリ度でASCII番号として返されます。おそらくこのように、テストされていません:)

FILE *temperatureFile;
double T;
temperatureFile = fopen ("/sys/class/thermal/thermal_zone0/temp", "r");
if (temperatureFile == NULL)
  ; //print some message
fscanf (temperatureFile, "%lf", &T);
T /= 1000;
printf ("The temperature is %6.3f C.\n", T);
fclose (temperatureFile);

経験から、高レベルストリームインターフェイスはproc / sysファイルでは信頼性が低いと考えられました。代わりに、YMMVを使用open()してread()ください。「libsysfs」もあるが、それは放棄されており、カーネル開発者は人々にそれから離れるよう明示的に指示している。
ゴルディロックス

@goldilocksおもしろい!私はこれを知りませんでした、それは他のファイルのように動作するだけだと思いました。あなたはとても正しいかもしれません。
Frepa 2013

2

@Frepaが言ったように、RaspberryPi用のカーネルサーマルドライバーが現在あるので、それを使用するのが最も簡単な方法です。私の知る限りでは、これはうまくいきませんvgencmd。サーマルカーネルドライバーが存在する前でも、温度を読み取ることができました。mailboxGPUで実行されているVideoCore OSと通信するために呼び出されるRaspberryPiで利用可能な特別な通信メカニズムを使用しています。これは部分的にここに文書化されています


ベーキングPiはもちろん、しかしそこにそれが唯一のグラフィックスのために使用されているいくつかのより多くのメールボックスの材料を、持っています。
Frepa 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.