参考文章 用Python小程序获取树莓派的CPU和GPU温度
1. Python 程序
<span style="font-family:Microsoft YaHei;font-size:18px;">import commands
def get_cpu_temp():
tempFile = open( "/sys/class/thermal/thermal_zone0/temp" )
cpu_temp = tempFile.read()
tempFile.close()
return float(cpu_temp)/1000
# Uncomment the next line if you want the temp in Fahrenheit
#return float(1.8*cpu_temp)+32
def get_gpu_temp():
gpu_temp = commands.getoutput( '/opt/vc/bin/vcgencmd measure_temp' ).replace( 'temp=', '' ).replace( '\'C', '' )
return float(gpu_temp)
# Uncomment the next line if you want the temp in Fahrenheit
# return float(1.8* gpu_temp)+32
def main():
print "CPU temp: ", str(get_cpu_temp())
print "GPU temp: ", str(get_gpu_temp())
if __name__ == '__main__':
main()</span>
运行结果如下,
$ sudo python read_cpu_temp.py
CPU temp: 49.768
GPU temp: 50.8
2. 直接读取文件
$ cat /sys/class/thermal/thermal_zone0/temp
49768
3. C 程序
#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
#define CPU_THERMAL_FILE "/sys/class/thermal/thermal_zone0/temp"
int main(int argc, char **argv)
{
int fd = 0;
unsigned char temp;
int i = 0;
fd = open(CPU_THERMAL_FILE, O_RDONLY);
if (fd < 0) {
fprintf(stderr, "%s: %s\n", CPU_THERMAL_FILE, strerror(errno));
return 1;
}
printf("CPU temp: ");
for (i = 0; i < 6; i++) {
read(fd, &temp, 1);
printf("%c", temp);
if (i == 1)
printf(".");
}
printf("\n");
return 0;
}
编译运行,结果如下,
$ gcc -o read_cpu_temp read_cpu_temp.c
$ ./read_cpu_temp
CPU temp: 50.306