Obtenez la température de PI en utilisant C

11

Je sais que vous pouvez obtenir la température en utilisant l'outil vcgencmd mais je me demandais s'il y avait une API que je peux utiliser en C pour obtenir la température par programme sans lire la sortie standard de vcgencmd?

opc0de
la source
Vous pourriez trouver cela utile: mjmwired.net/kernel/Documentation/sysfs-rules.txt
goldilocks

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);
Frepa
la source
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 .

Krzysztof Adamski
la source
Le cours Baking Pi a plus de matériel de boîte aux lettres, mais il n'est utilisé que pour les graphiques.
Frepa