C kullanarak PI sıcaklığını alın


Yanıtlar:


13

Bu cevapta/sys/class/thermal/thermal_zone0/temp belirtildiği gibi dosyayı okuyabilirsiniz . Orada komut satırından ölçüm hakkında ve dosya ile okunur . Ancak dosyayı sadece C cinsinden açabilmelisiniz. Sıcaklık mili derece Santigrat ve ASCII numaraları olarak döndürülür. Belki böyle, test edilmedi :)cat

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);

Tecrübe beni yüksek seviye akış arayüzünün proc / sys dosyalarında güvenilir olmadığına inanmamı sağladı open()ve read()bunun yerine ve kullanmalısınız - YMMV. Bir de "libsysfs" var, ama terk edilmiş ve çekirdek geliştiricileri açıkça insanlardan ondan uzak durmalarını söylemişti.
goldilocks

@goldilocks İlginç! Bunu bilmiyordum, sadece herhangi bir dosya gibi davrandığını düşündüm. Çok haklı olabilirsin.
Frepa

2

@Frepa'nın dediği gibi, RaspberryPi için çekirdek termal sürücüsü var, bu yüzden en kolay yol onu kullanmaktır. Bildiğim kadarıyla böyle değil vgencmd. Termal çekirdek sürücüsü bulunmadan önce bile sıcaklığı okuyabiliyordu. mailboxGPU üzerinde çalışan VideoCore OS ile iletişim kurmak için RaspberryPi'de bulunan özel iletişim mekanizması kullanıyor . Kısmen burada belgelenmiştir .


Pişirme Pi Tabii bununla birlikte orada sadece grafikler için kullanılır biraz daha kutusu malzemesi vardır.
Frepa
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.