Dapatkan suhu PI menggunakan C


Jawaban:


13

Anda dapat membaca file /sys/class/thermal/thermal_zone0/temp, seperti yang ditentukan dalam jawaban ini . Ini tentang mengukur dari baris perintah, dan file dibaca dengan cat. Tetapi Anda harus dapat hanya membuka file dalam C. Suhu dikembalikan dalam mili derajat Celcius dan sebagai angka ASCII. Mungkin seperti ini, tidak diuji :)

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

Pengalaman telah membuat saya percaya bahwa antarmuka aliran tingkat tinggi tidak dapat diandalkan pada file proc / sys, dan Anda harus menggunakan open()dan read()sebagai gantinya - tetapi YMMV. Ada juga "libsysfs", tetapi telah ditinggalkan dan devs kernel secara eksplisit mengatakan kepada orang-orang untuk menjauh darinya.
goldilocks

@goldilocks Menarik! Saya tidak tahu ini, berpikir itu hanya berperilaku seperti file apa pun. Anda mungkin benar.
Frepa

2

Seperti @Frepa katakan, sekarang ada driver thermal kernel untuk RaspberryPi jadi cara termudah adalah menggunakannya. Sejauh yang saya tahu, itu bukan cara vgencmdkerjanya. Itu bisa membaca suhu bahkan sebelum driver kernel termal ada. Itu menggunakan mekanisme komunikasi khusus yang tersedia di RaspberryPi yang dipanggil mailboxuntuk berkomunikasi dengan VideoCore OS yang berjalan pada GPU. Itu sebagian didokumentasikan di sini .


Kursus Baking Pi memiliki beberapa bahan kotak surat lagi, namun di sana hanya digunakan untuk grafik.
Frepa
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.