Фе в скрипте запуска, отображающем только изображения при перезагрузке, а не при запуске? - PullRequest
0 голосов
/ 28 января 2019

У меня есть скрипт Python, работающий на Raspberry Pi Zero W, который вызывает программу для обработки изображений feh, чтобы пройтись по некоторым каталогам и отобразить вложенные изображения.Сценарий должен запускаться при запуске - думайте о нем как о программе безголового отображения изображений.Я работаю не с последней версией Stretch, а с версией, выпущенной в октябре 2018 года.

Чтобы все работало при запуске, я отредактировал ~ /.config / lxsessions / LXDE-pi / файл автозапуска.Я использую внешний проектор, поэтому для правильного отображения изображений мой файл автозапуска выглядит так:

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 файл и добавлено

xserver-command=X -s 0 -dpms

Что происходит с feh?Есть ли где-нибудь файл журнала, на который я могу посмотреть, чтобы увидеть, нет ли ошибок?Неужели мой звонок не спит?Почему Питон работает без сбоев, а не фех?Любой вход здесь приветствуется!

1 Ответ

0 голосов
/ 29 января 2019

Для всех, кто сталкивался с этим, ответ - немного поспать.В файле автозапуска добавление строки

sleep 5

между

DISPLAY=:0

и

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

, по-видимому, позволяет загружать все необходимые драйверы дисплея до feh и Pythonзапуск сценария.Проблема решена, если вы не против подождать несколько лишних секунд.

...