本帖最后由 letsgo 于 2017-10-13 20:50 编辑
前面讲了gpio的简单操作,那么这一篇帖子就讲解几种方法来获取cpu内部温度。本篇帖子讲解的是文件操作,因为在linux系统中任何设备的操作都可以抽象成为文件的读写,并且通过读取/sys/class/thermal/thermal_zone0/temp文件中的内容便获得树莓派CPU的温度。我采用以下几种方法来读取:
一、shell命令操作: 1、输入命令,进入到/sys/class/thermal/thermal_zone0目录下: cd /sys/class/thermal/thermal_zone0 2、我们在输入:ls,查看有哪些文件:
3、再用命令:cat temp得到温度值,见下图:
经过百度可知。再除以1000才是具体的温度值,所以温度为t = 23010/1000= = 23.010℃。 当然我们也可以写成一个脚本,这里就不再写了。
二、c语言文件操作:
新建一个cpu.c文件,文件下面写入:
- #include
- #include
-
- #include
- #include
- #include
-
- #define TEMP_PATH "/sys/class/thermal/thermal_zone0/temp"
- #define MAX_SIZE 32
- int main(void)
- {
- int fd;
- double temp = 0;
- char buf[MAX_SIZE];
-
- // 打开/sys/class/thermal/thermal_zone0/temp
- fd = open(TEMP_PATH, O_RDONLY);
- if (fd < 0) {
- fprintf(stderr, "failed to open thermal_zone0/tempn");
- return -1;
- }
-
- // 读取内容
- if (read(fd, buf, MAX_SIZE) < 0) {
- fprintf(stderr, "failed to read tempn");
- return -1;
- }
-
- // 转换为浮点数打印
- temp = atoi(buf) / 1000.0;
- printf("temp: %.2fn", temp);
-
- // 关闭文件
- close(fd);
- }
复制代码
gcc cpu.c -o cpu # 执行
./cpu
# 执行返回
temp: 23.01
三、python语言编程: 1、新建一个.py文件并输入以下内容: # -*- coding: utf-8 -*- file = open("/sys/class/thermal/thermal_zone0/temp")#打开文件 temp = float(file.read()) / 1000 #将读取到的数值除以1000得到温度 file.close() #关闭文件 print "temp : %.2f" %temp #格式化输出
2、执行python ./cpu3.py然后就可以看见下面数值啦。
四、分析与总结 shell命令十分简单,几个命令就能将数据读出来。对于文件操作,前面那篇帖子也讲了,自己也现学现用,可以说对文件的读写也有了一定的了解。对于python更不用说了,十分简单方便,初学者十分容易上手,笔者接下来接下来就会用python编程上传数据到onenet,yeelink平台等等,实现无线点灯等等。
|