Ermitteln Sie die Temperatur von PI mit C.


Antworten:


13

Sie können die Datei /sys/class/thermal/thermal_zone0/tempwie in dieser Antwort angegeben lesen . Dort geht es darum, über die Kommandozeile zu messen, und die Datei wird mit gelesen cat. Sie sollten die Datei jedoch nur in C öffnen können. Die Temperatur wird in Milli-Grad Celsius und als ASCII-Zahlen zurückgegeben. Vielleicht so, nicht getestet :)

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

Die Erfahrung hat mich führt die hohe Strom - Schnittstelle zu glauben , ist nicht zuverlässig auf proc / sys - Dateien, und Sie sollten verwenden open()und read()stattdessen - aber YMMV. Es gibt auch ein "libsysfs", aber es wurde aufgegeben und die Kernel-Entwickler haben den Leuten ausdrücklich gesagt, dass sie sich davon fernhalten sollen.
Goldlöckchen

@ Goldlöckchen Interessant! Ich wusste das nicht, dachte, es verhält sich einfach wie jede Datei. Sie können sehr gut recht haben.
Frepa

2

Wie @Frepa sagte, gibt es jetzt einen Kernel-Thermotreiber für RaspberryPi, daher ist es am einfachsten, ihn zu verwenden. Soweit ich weiß, vgencmdfunktioniert das jedoch nicht so. Es war in der Lage, die Temperatur zu lesen, noch bevor ein thermischer Kerneltreiber vorhanden war. Es verwendet einen speziellen Kommunikationsmechanismus, der auf RaspberryPi verfügbar ist mailbox, um mit VideoCore OS zu kommunizieren, das auf einer GPU ausgeführt wird. Es ist teilweise dokumentiert hier .


Der Baking Pi-Kurs enthält etwas mehr Postfachmaterial, wird dort jedoch nur für Grafiken verwendet.
Frepa
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.