Obtenez la température de PI en utilisant C


Réponses:


13

Vous pouvez lire le fichier /sys/class/thermal/thermal_zone0/temp, comme spécifié dans cette réponse . Il s'agit de mesurer à partir de la ligne de commande, et le fichier est lu avec cat. Mais vous devriez pouvoir simplement ouvrir le fichier en C. La température est renvoyée en milli-degrés centigrades et en nombres ASCII. Peut-être comme ça, non testé :)

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

L'expérience m'a amené à croire que l'interface de flux de haut niveau n'est pas fiable sur les fichiers proc / sys, et vous devriez utiliser open()et à la read()place - mais YMMV. Il y a aussi un "libsysfs", mais il a été abandonné et les développeurs du noyau ont explicitement dit aux gens de s'en éloigner.
goldilocks

@goldilocks Intéressant! Je ne le savais pas, je pensais qu'il se comportait comme n'importe quel fichier. Vous pouvez très bien avoir raison.
Frepa

2

Comme l'a dit @Frepa, il existe maintenant un pilote thermique du noyau pour RaspberryPi, donc le moyen le plus simple est de l'utiliser. Pour autant que je sache, ce n'est pas ainsi que cela vgencmdfonctionne. Il était capable de lire la température avant même l'existence du pilote de noyau thermique. Il utilise un mécanisme de communication spécial disponible sur RaspberryPi appelé mailboxafin de communiquer avec VideoCore OS fonctionnant sur GPU. Il est en partie documenté ici .


Le cours Baking Pi a plus de matériel de boîte aux lettres, mais il n'est utilisé que pour les graphiques.
Frepa
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.