Ben vcgencmd aracını kullanarak sıcaklık alabilirsiniz biliyorum ama ben vcgencmd stdout okumadan sıcaklık programlı olarak sıcaklık almak için C kullanabilirsiniz herhangi bir API olup olmadığını merak ediyordum?
Ben vcgencmd aracını kullanarak sıcaklık alabilirsiniz biliyorum ama ben vcgencmd stdout okumadan sıcaklık programlı olarak sıcaklık almak için C kullanabilirsiniz herhangi bir API olup olmadığını merak ediyordum?
Yanıtlar:
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);
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.
@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. mailbox
GPU ü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 .