C를 사용하여 PI의 온도 얻기


답변:


13

이 답변에/sys/class/thermal/thermal_zone0/temp 지정된대로 파일을 읽을 수 있습니다 . 명령 줄에서 측정하는 데 대한 정보가 있으며 파일은로 읽습니다 . 그러나 C로 파일을 열 수 있어야합니다. 온도는 섭씨 섭씨와 ASCII 숫자로 반환됩니다. 아마도 이것처럼 테스트되지 않았습니다 :)cat

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

경험은 높은 수준의 스트림 인터페이스는 PROC / SYS 파일에 대한 신뢰할 수 없습니다 믿고 나를 이끌어있다, 당신은 사용해야 open()하고 read()대신 -하지만 YMMV. "libsysfs"도 있지만, 버려졌고 커널 개발자는 사람들에게 명시하지 말라고 명시 적으로 지시했습니다.
goldilocks

@goldilocks 재미있는! 나는 이것을 몰랐다. 그것은 단지 어떤 파일처럼 행동한다고 ​​생각했다. 당신이 옳을 수도 있습니다.
Frepa

2

@Frepa가 말했듯이 RaspberryPi 용 커널 열 드라이버가 있으므로 가장 쉬운 방법은 사용하는 것입니다. 내가 아는 한, 그것은 vgencmd작동하지 않습니다 . 열 커널 드라이버가 존재하기 전에 온도를 읽을 수있었습니다. mailboxGPU에서 실행되는 VideoCore OS와 통신하기 위해 호출 된 RaspberryPi 에서 사용 가능한 특수 통신 메커니즘을 사용하고 있습니다 . 여기에 부분적으로 문서화되어 있습니다 .


베이킹 파이는 물론 그러나 거기는 그래픽에 사용되는 좀 더 사서함 재료를 가지고 있습니다.
Frepa
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.