Я знаю, что вы можете получить температуру, используя инструмент vcgencmd, но мне было интересно, есть ли какой-нибудь API, который я могу использовать в C, чтобы получить температуру программно, не читая стандартный вывод vcgencmd?
c
temperature
opc0de
источник
источник
Ответы:
Вы можете прочитать файл
/sys/class/thermal/thermal_zone0/temp
, как указано в этом ответе . Там речь идет об измерении из командной строки, и файл читается с помощьюcat
. Но вы должны иметь возможность просто открыть файл в C. Температура возвращается в миллиградусах по Цельсию и в виде чисел ASCII. Возможно, так, не проверено :)источник
open()
иread()
вместо этого - но YMMV. Есть также "libsysfs", но он был заброшен, и разработчики ядра явно сказали людям держаться подальше от него.Как сказал @Frepa, для RaspberryPi теперь есть драйвер ядра для ядра, поэтому его проще всего использовать. Насколько я знаю, это не так
vgencmd
работает, однако. Он мог считывать температуру даже до того, как появился тепловой драйвер ядра. Он использует специальный механизм связи, доступный на RaspberryPimailbox
, который вызывается для связи с ОС VideoCore, работающей на графическом процессоре. Это частично задокументировано здесь .источник