17586|8

1366

帖子

6

TA的资源

版主

楼主
 

新手学习树莓派3笔记(1)--三种方式获取树莓派CPU信息 [复制链接]

 
本帖最后由 RCSN 于 2016-11-26 22:36 编辑

  由于树莓派在家里连续已经上电了差不多4天,觉得有必要监控下CPU的温度、内存占用等信息。
  再此之前,我都没深入去学习过蟒蛇,以及VI编译器,所以也是看了网友的一些经验,但是自己在操作的时候并不是那么顺畅,但也知道也一些东西。若想深入还是得深造下,消化下基础的东西。
  第一种方式,通过命令打开树莓派的获取温度的临时文件。
  
  如上图所示,对于新手的我犯了个错误,就在于Linux命令的概念的不熟悉。就是cd和cat命令,以为cd命令也可以打开一个文件,但是显示的没有文件存在,用cat命令查看,37014,即是37.014度。
查看了下网页对这两个命令的解读如下:

一个是切换目录命令,一个是输出命令,输出到屏幕等。对概念的不熟悉,才会犯了这种错误。

最后附上命令行:
  cd /sys/class/thermal/thermal_zone0/temp
  cat temp


第二种方式:VI编译器编写程序,新建一个文件。对于树莓派自带的临时文件输出的并不是摄氏度,所以我们要自己弄为摄氏度。命令行:
sudo vi temp.py
写上一下代码。但是问题来了,对于新手来说,如何进入编辑模式,如何保存,如何退出都是很头大。我一开始也是很懵逼。但是基本操作几次也可以上手了。
按i 进入编辑模式
按ESC  退出编辑模式
  :
wq 保存文件并退出vi  :w 保存文件但不退出vi
  :w file 将修改另外保存到file中,不退出vi

  :q 不保存文件,退出vi
      最后回车即可。

然后在进行以下操作:

看上图 一开始我按照网友的chomd +x temp 老是提示没权限。最后前面加了sudo就好了。

网页对sudo的解读如下:
sudo是superuser do的简写,sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者
全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登陆 和管理时间
,同样也提高了安全性。
  最后可以得到温度为38.6度。
   附上VI代码:

#!/usr/bin/python
# -*- coding: utf-8 -*-
# 打开文件
file = open("/sys/class/thermal/thermal_zone0/temp")
# 读取结果,并转换为浮点数
temp = float(file.read()) / 1000
# 关闭文件
file.close()
# 向控制台打印
print "temp : %.1f" %temp


第三种方式是使用蟒蛇来进行获取信息,不过这次获取的信息相对比较多。包括温度、内存、硬盘、CPU。
我也是根据网友的经验来进行获取的,网上也有很多教程,再次我根据我自身情况来说明。此部分是由nano编译器来编写的,我也很不熟悉。特别是一些命令行。跟VI不一样,但是操作起来也蛮顺手。网上的教程可能没那么详细,就是贴了代码后如何退出nano没什么说明。nano保存退出就需要ctrl+o保存文件 ctrl+x退出文件即可。

如下图所示,我要运行这个代码的时候,发现使用./并不能运行,最后使用python后才可以。这个应该是使用nano的话要运行蟒蛇的话就是使用python吧。


附上命令行 有参考了网上的教程,百度上有,我只是总结了下我自身的情况。

第一步 新建脚本:sudo nano get.py

第二步 在编译器输入代码:
  



  • import os
  • # Return CPU temperature as a character string
  • def getCPUtemperature():
  •     res = os.popen('vcgencmd measure_temp').readline()
  •     return(res.replace("temp=","").replace("'C\n",""))
  • # Return RAM information (unit=kb) in a list
  • # Index 0: total RAM
  • # Index 1: used RAM
  • # Index 2: free RAM
  • def getRAMinfo():
  •     p = os.popen('free')
  •     i = 0
  •     while 1:
  •         i = i + 1
  •         line = p.readline()
  •         if i==2:
  •             return(line.split()[1:4])
  • # Return % of CPU used by user as a character string
  • def getCPUuse():
  •     return(str(os.popen("top -n1 | awk '/Cpu\(s\):/ {print $2}'").readline().strip(\
  • )))
  • # Return information about disk space as a list (unit included)
  • # Index 0: total disk space
  • # Index 1: used disk space
  • # Index 2: remaining disk space
  • # Index 3: percentage of disk used
  • def getDiskSpace():
  •     p = os.popen("df -h /")
  •     i = 0
  •     while 1:
  •         i = i +1
  •         line = p.readline()
  •         if i==2:
  •             return(line.split()[1:5])
  • # CPU informatiom
  • CPU_temp = getCPUtemperature()
  • CPU_usage = getCPUuse()
  • # RAM information
  • # Output is in kb, here I convert it in Mb for readability
  • RAM_stats = getRAMinfo()
  • RAM_total = round(int(RAM_stats[0]) / 1000,1)
  • RAM_used = round(int(RAM_stats[1]) / 1000,1)
  • RAM_free = round(int(RAM_stats[2]) / 1000,1)
  • # Disk information
  • DISK_stats = getDiskSpace()
  • DISK_total = DISK_stats[0]
  • DISK_used = DISK_stats[1]
  • DISK_perc = DISK_stats[3]
  • if __name__ == '__main__':
  •   print('')
  •   print('CPU Temperature = '+CPU_temp)
  •   print('CPU Use = '+CPU_usage)
  •   print('')
  •   print('RAM Total = '+str(RAM_total)+' MB')
  •   print('RAM Used = '+str(RAM_used)+' MB')
  •   print('RAM Free = '+str(RAM_free)+' MB')
  •   print('')
  •   print('DISK Total Space = '+str(DISK_total)+'B')
  •   print('DISK Used Space = '+str(DISK_used)+'B')
  •   print('DISK Used Percentage = '+str(DISK_perc))


代码写完后按ctrl+o 再按ctrl+x即可保存退出。

第三步:代入命令行:
  chmod +x get.py
   python get.py


就有上图的输出了。




以上纯属都是新手操作,。高手勿喷,高手求带。
接下来如果有空的话,就搞下根据CPU的温度利用PWM输出来调整风扇。反正也可以玩玩下IO,点点灯什么的。








此帖出自Linux开发论坛

最新回复

汇总贴连接: 新手学习树莓派3笔记——by RCSN https://bbs.eeworld.com.cn/forum ... 0875&fromuid=536508   详情 回复 发表于 2017-2-13 09:15

赞赏

2

查看全部赞赏

点赞 关注(1)
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]


回复
举报

1310

帖子

3

TA的资源

一粒金砂(高级)

沙发
 
不错,顶贴!
此帖出自Linux开发论坛

点评

谢谢54哥  详情 回复 发表于 2016-11-26 22:28
 
 

回复

1366

帖子

6

TA的资源

版主

板凳
 

  谢谢54哥
此帖出自Linux开发论坛
 
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 
 

回复

384

帖子

0

TA的资源

一粒金砂(高级)

4
 
顶= =
此帖出自Linux开发论坛
 
 
 

回复

5979

帖子

8

TA的资源

版主

5
 
顶~~~
此帖出自Linux开发论坛
 
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 

回复

1403

帖子

1

TA的资源

纯净的硅(中级)

6
 
上手了~
此帖出自Linux开发论坛
 
个人签名HELLO_WATER
 
 

回复

324

帖子

2

TA的资源

纯净的硅(初级)

7
 
,不错,赞一个树莓派,所有的嵌入式学习板中,他的资料是最接地气的,用系统上手比较快。
1.建议试试用python调用底层驱动,USB转串口读取,IO控制等。
2.建议试试文件创立.读取与修改。
3.建议试试添加TKINTER库,可以做一些界面。
4.建议试试用户程序开机自启动。
此帖出自Linux开发论坛

点评

谢谢建议,会一步一步尝试的  详情 回复 发表于 2016-12-2 22:55
 
 
 

回复

1366

帖子

6

TA的资源

版主

8
 
ydcman 发表于 2016-12-1 15:21
,不错,赞一个树莓派,所有的嵌入式学习板中,他的资料是最接地气的,用系统上手比较快。
1.建议试试用 ...

谢谢建议,会一步一步尝试的
此帖出自Linux开发论坛
 
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 
 

回复

1万

帖子

203

TA的资源

管理员

9
 
汇总贴连接:
新手学习树莓派3笔记——by RCSN
https://bbs.eeworld.com.cn/forum ... 0875&fromuid=536508

此帖出自Linux开发论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名玩板看这里:
https://bbs.eeworld.com.cn/elecplay.html
EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表