28069
本帖最后由 jackeyt 于 2017-7-20 09:52 编辑
【MYS-6ULX-IOT试用体验】试用目录:
1、【MYS-6ULX-IOT试用体验】1、开箱上电
2、【MYS-6ULX-IOT试用体验】2、加载WIFI驱动并连接网络
0 前言
本文通过文件操作读取MYS-6ULX-IOT开发板的CPU温度,在linux系统中任何设备的操作都被抽象成为文件读写,通过读取/sys/class/thermal/thermal_zone0/temp文件中的内容便获得MYS-6ULX-IOT开发板的CPU温度。
本文通过以下几个部分说明如何读取和应用该温度参数——1、shell脚本操作;2、linux文件IO操作
1、shell操作
先通过shell操作热身一下。登录MYS-6ULX-IOT开发板之后使用指令查看CPU温度,依次输入以下指令:
# 进入目录
cd /sys/class/thermal/thermal_zone0
# 查看温度
cat temp
# MYS-6ULX-IOT开发板返回
48692
从以上操作可以获得以下几点
【1】CPU温度信息位于文件 /sys/class/thermal/thermal_zone0/temp中,该文件为一个只读文件。
【2】根据网上的资料和实际情况,返回的温度参数应该除以1000,单位为摄氏度。
2、C语言文件IO操作
新建一个名为temp.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("当前温度: %.2fn", temp);
-
- // 关闭文件
- close(fd);
- }
2.1、编译
- arm-linux-gnueabifh-gcc -o temp temp.c
2.1、效果图 实际效果如下图所示:
更多回帖