Ich weiß, dass Sie die Temperatur mit dem Tool vcgencmd ermitteln können, aber ich habe mich gefragt, ob es eine API gibt, mit der ich die Temperatur programmgesteuert ermitteln kann, ohne die Standardausgabe von vcgencmd zu lesen.
Ich weiß, dass Sie die Temperatur mit dem Tool vcgencmd ermitteln können, aber ich habe mich gefragt, ob es eine API gibt, mit der ich die Temperatur programmgesteuert ermitteln kann, ohne die Standardausgabe von vcgencmd zu lesen.
Antworten:
Sie können die Datei /sys/class/thermal/thermal_zone0/temp
wie 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);
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.
Wie @Frepa sagte, gibt es jetzt einen Kernel-Thermotreiber für RaspberryPi, daher ist es am einfachsten, ihn zu verwenden. Soweit ich weiß, vgencmd
funktioniert 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 .