当前位置:网站首页>树莓派的信息显示小屏幕,显示时间、IP地址、CPU信息、内存信息(c语言),四线的i2c通信,0.96寸oled屏幕
树莓派的信息显示小屏幕,显示时间、IP地址、CPU信息、内存信息(c语言),四线的i2c通信,0.96寸oled屏幕
2022-08-01 21:15:00 【一个人先生咯】
0、前提:树莓派里面已经有了wiringPi这个软件包和cmake,若没有请移步到(wiringPi参考链接)(cmake参考链接)参考链接自己安装
1、连接好线路和打开树莓派i2c
1.1、接线
使用的四线oled gnd vcc scl sda对应连接起来就行
具体接线如下图:
1.2、打开i2c
输入命令 sudo raspi-config,选择第3项启动第5项的i2c
2、下载好我写好的oled驱动代码GitHub链接:GitHub - ShangHTao/Raspberry-sysinfo-display: 树莓派i2c接口驱动的0.96寸的oled显示屏,可以显示ip地址cpu占用率和温度等
2.1例如我们首先进入桌面执行下面操作
cd ~/Desktop
mkdir test
cd test/
git clone https://github.com/ShangHTao/Raspberry-sysinfo-display
这样就在桌面上创建了一个test文件夹里面放着oled显示程序
2.2构建代码,执行下面的操作
cd Raspberry-sysinfo-display/
ls
输入命令把CMakeCache.txt文件删除才能cmake
输入命令
rm CMakeCache.txt
cmake .
make
如图所示,构建出来了一个叫做oled_i2c_show_status的可执行程序
可以简单使用./oled_i2c_show_status执行一下看看oled是否显示了对应内容
推荐后台运行输入指令 ./oled_i2c_show_status & (多加一个&)
3、设置开机自启动
问题1:在 /etc/rc.d/rc.local添加sudo nohup ~/oled_i2c_show_status &开机确实是会自动运行,但是过一段时间这个任务就被杀死了不值得为什么,有没有好心人解释一下。
问题2:在~/.config文件中创建的autostart.desktop中设置开机自启动也是运行sudo nohup ~/oled_i2c_show_status &,运行一段时间后也背杀死,请问有好心人知道吗?
ps:直接运行sudo nohup ~/oled_i2c_show_status &可以一直运行在不会被杀死,为什么?
思考:我创建个shell脚本,然后开机自启动,在shell里面执行sudo nohup ~/oled_i2c_show_status &是不是就可以不被杀死呢?
我知道了如何防止系统杀死命令再更新,格式什么也后期调整,现在还存在很多错误,望指正。。。。。。。(以上内容均为小白学习linux的记录,实属小白,欢迎大家交流,需要原码的同学可以浏览提出建议)
以上问题均已发现,是由于循环调用了popen()函数但是报错段错误,找了很多原因之后无法解决。
后面又使用fopen()函数确实可能提高运行的后台时间,但是还是错误(报错too many open files,可是明明已经使用了fclose()函数还是报错),很让人恼火。怀疑是fopen()毕竟是标准版库函数,后来切换成系统函数open()依然报错too many open files,时钟到了一定程度杀掉后台。
最后也是建了个shell脚本(我起名为)检测有没有被杀,如果被杀就再次执行,否则就继续检测,具体内容如下:
#!/bin/sh
while :
do
if [ $(ps -ef | grep -c "oled_i2c_show_status") -lt 2 ];
then
$( /home/pi/autostart/oled_i2c_show_status &) ;
fi
sleep 60s
done
确实是在被杀死的时候又继续执行了oled_i2c_show_status,但是感觉指标不治本。后去我试试能不能用python里的os.popen(),python调用c库函数。
4、python设计
等待更新。。。。
边栏推荐
- C pitfalls and pitfalls Chapter 7. Portability pitfalls 7.10 Free first, then realloc
- C Expert Programming Chapter 1 C: Through the Fog of Time and Space 1.4 K&R C
- 使用员工管理软件,解锁人力生产力新水平,提高人力资源团队灵活性
- Taobao's API to get the list of shipping addresses
- 牛血清白蛋白-葡聚糖-叶黄素纳米颗粒/半乳糖白蛋白磁性阿霉素纳米粒的制备
- C专家编程 第1章 C:穿越时空的迷雾 1.1 C语言的史前阶段
- C Expert Programming Chapter 1 C: Through the Fog of Time and Space 1.5 ANSI C Today
- ISC2022 HackingClub white hat summit countdown 1 day!Most comprehensive agenda formally announced!Yuan universe, wonderful!
- C Pitfalls and Defects Chapter 5 Library Functions 5.5 Library Function Signal
- C语言_枚举类型介绍
猜你喜欢
随机推荐
附录A printf、varargs与stdarg A.3 stdarg.h ANSI版的varargs.h
C陷阱与缺陷 第7章 可移植性缺陷 7.10 首先释放,然后重新分配
磷酸化甘露糖苷修饰白蛋白纳米粒/卵白蛋白-葡聚糖纳米凝胶的
如何封装 cookie/localStorage/sessionStorage hook?
Interview Blitz 70: What are sticky packs and half packs?How to deal with it?
空间数据库开源路,超图+openGauss风起禹贡
案例:MySQL主从复制与读写分离
idea实用快捷键合集——持续更新
列表页常见的 hook 封装
在Cesium中实现与CAD的DWG图叠加显示分析
C语言_typedef和结构体
JS hoisting: how to break the chain of Promise calls
技术栈概览
C Pitfalls and Defects Chapter 7 Portability Defects 7.9 Case Conversion
微服务负载均衡器Ribbon
封装一个管理 url 状态的 hook
软考 ----- UML设计与分析(上)
使用员工管理软件,解锁人力生产力新水平,提高人力资源团队灵活性
TP5-NPs负载噻吩类化合物TP5白蛋白纳米粒/阿魏酸钠新糖牛血清蛋白纳米粒
C陷阱与缺陷 第7章 可移植性缺陷 7.6 内存位置0