Ermitteln Sie die Temperatur von PI mit C.

11

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.

opc0de
quelle
Sie könnten dies nützlich finden: mjmwired.net/kernel/Documentation/sysfs-rules.txt
Goldlöckchen

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

Krzysztof Adamski
quelle
Der Baking Pi-Kurs enthält etwas mehr Postfachmaterial, wird dort jedoch nur für Grafiken verwendet.
Frepa