树莓派:创建无限自启动python的脚本,以及遇到的难题

一、创建一个脚本

#!/bin/bash
while [ 1 ];do
    python /home/pi/Desktop/ssh_test/Fanban/main.py
done

二、修改/ect/rc.local

在exit 0 前写入

bash ./home/pi/Desktop/ssh_test/Fanban/startup_1.sh

【注】这些路径根据你的实际来定义,用绝对路径

 

三、python程序的处理

好了,我先说明一下,这个main.py是实现硬件控制,最终是脱离电脑显示屏,鼠标和键盘。最终的作品只有OLED显示屏和一个16键的矩阵键盘。

在程序中,我使用了多个线程。所以,程序该如何处理,才能让脚本实现自启动呢????

通常,多线程报错,它只是对应子线程出错,不会影响到整个进程。

最后,我想到一个办法,先把错误找出来,怎么找呢?比如,我故意把串口通信的端口拔出来,它就出来一个错误。

然后,用try..except..来捕捉这个错误。而且..而且..而且...在每个线程在while里都重复用上try..except...

捕捉到之后,直接执行 os._exit(0) 退出整个程序,那么,脚本就自动重启python程序了。

 

不过,遇到了奇怪的事情,当I2C设备(OLED小屏幕)的接口端口后,后台它会报错,但是try...except..在所有线程上没有捕捉到,我连main函数都用上了try...except.. 后平台还是没有直接退出整个程序。

只抛出一个错误 : OSerror:[Errno 121] Remote I/O error   ,然后其它线程依然正常运行。

难道不可以 except OSerror ???  

既然这样,只能手动重启整个程序。

因为整个程序还在运行,其它线程是没问题的,所以,我设定一个重启按键,它能直接执行os._exit(0),

这样,整个程序又恢复正常了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值