Wiem, że możesz uzyskać temperaturę za pomocą narzędzia vcgencmd, ale zastanawiałem się, czy istnieje jakiś interfejs API, którego można użyć w C, aby uzyskać temperaturę programowo bez odczytywania standardowego poziomu vcgencmd?
c
temperature
opc0de
źródło
źródło
Odpowiedzi:
Możesz przeczytać plik
/sys/class/thermal/thermal_zone0/temp
, jak określono w tej odpowiedzi . Tam chodzi o pomiary z linii poleceń, a plik jest odczytywany za pomocącat
. Ale powinieneś być w stanie po prostu otworzyć plik w C. Temperatura jest zwracana w stopniach Celsjusza i jako liczby ASCII. Być może tak, nie testowałem :)źródło
open()
iread()
zamiast tego - ale YMMV. Istnieje również „libsysfs”, ale został on porzucony, a twórcy jądra wyraźnie powiedzieli ludziom, aby trzymali się od niego z daleka.Jak powiedział @Frepa, istnieje teraz sterownik termiczny jądra dla RaspberryPi, więc najłatwiej jest go użyć. O ile wiem, jednak nie tak to
vgencmd
działa. Był w stanie odczytać temperaturę, zanim jeszcze istniał sterownik jądra termicznego. Korzysta ze specjalnego mechanizmu komunikacji dostępnego na RaspberryPi, zwanegomailbox
w celu komunikacji z systemem operacyjnym VideoCore działającym na GPU. Jest to częściowo udokumentowane tutaj .źródło