仅在启动脚本中仅在重新启动时显示图像,而不在启动时显示图像吗?

时间:2019-01-28 16:00:13

标签: python image raspberry-pi startup

我有一个在Raspberry Pi Zero W上运行的Python脚本,该脚本调用图像程序feh,以循环浏览某些目录并显示随附的图像。该脚本应该在启动时运行-将其视为一种无头的图像显示程序。我没有运行Stretch的最新版本,而是2018年10月发布的版本。

为了使所有内容都能在启动时运行,我编辑了〜/ .config / lxsessions / LXDE-pi / autostart文件。我使用的是外部投影仪,因此为了正确显示图像,我的自动启动文件如下所示:

DISPLAY=:0
/usr/bin/python /home/pi/myscript.py

然后我的Python脚本基本上看起来像

import os
import psutil
import time
while True:
    os.system('feh --hide-pointer -x -q -B black -g 1280x720 ' + img_dir + ' &')
    time.sleep(4)
    for process in psutil.process_iter():
        if 'feh' in process.cmdline():
            process.terminate()

,然后遍历不同的图像目录。我知道不建议使用os进行系统调用,但这是我可以使该特定调用起作用的唯一方法。

这就是问题所在:如果我从命令行重新启动Pi,一切都会顺利进行。 Pi启动,Python开始运行,并且图像正确显示,并永远循环。但是,如果我冷启动,则仅运行Python脚本-不显示任何图像。我知道这种情况的发生是因为我可以远程登录并看到Python程序确实在运行,但是feh没有运行,而重新启动后正在运行。

我认为可能与此有关的另一件事是,我在Pi的投影仪/显示器进入睡眠状态时遇到了问题(即一分钟左右没有外部输入后就变黑了),所以我编辑了{{ }}文件并添加

/etc/lightdm/lightdm.conf

feh怎么了?我是否可以查看某个地方的日志文件,看看是否抛出任何错误?我的不睡觉电话会把事情搞砸吗?为什么Python可以运行而不会失败呢?欢迎在这里输入任何内容!

1 个答案:

答案 0 :(得分:0)

对于遇到此问题的任何人,答案是睡一会儿。在自动启动文件中,添加以下行

sleep 5

之间

DISPLAY=:0

/usr/bin/python /home/pi/myscript.py

显然允许所有必需的显示驱动程序在feh和Python脚本启动之前加载。只要您不介意等待几秒钟,问题就解决了。