Недавно я сделал проект на моей малине, чтобы прочитать 4-байтовый сигнал, поступающий из протокола TCP/IP, и воспроизвести соответствующее видео в зависимости от сигнала (0001, 0002, 0101 или 0102) ,Управление omxplayer dbus перестает работать, когда проект экспортируется
У меня есть 2 проблемы с этим:
1- код работает прекрасно, когда выполняется вручную, но если я запускаю его на перезагрузку, используя хрон, код работает, но не работает должным образом.
2-код работает (вручную) на Pi I, закодировал его, но если я переношу файлы на другой Pis, мне это нужно, я получаю ТОЧНУЮ ту же ошибку (запускаю ее вручную), как если бы я запускал это через cron на 1-м Пи.
Ошибка выполнения, которую я упоминаю здесь, является следующей: Команда dbus не останавливает видео, она не отвечает.
Код находится в python 3, все малины имеют одинаковые параметры, я взял файлы так, как они были на первом Pi, и скопировал их на других.
мой файл хрон является
@reboot python /home/v1_M.py &
мой код:
from time import sleep
import subprocess
import os
import socket
import sys
play_video1 = None
play_video2 = None
play_video3 = None
play_video4 = None
vid_block = 0
check = None
data = None
try:
while True:
subprocess.Popen(["nc -l 1024 -i 1 > /home/resultat.txt"], shell=True)#Listens to port 1024 and writes data in txt file
sleep(2)
a=open('/home/resultat.txt','r')
lines = a.readlines()
a.close()
if lines:
signal = lines[-1]#signal in bytes
data = signal[-4:]#converts signal to string
#print (signal)
subprocess.Popen(["> /home/resultat.txt"], shell=True)#Empties txt file
#print (data)
if data != check :
vid_block = 0
check = data
if data == '0101' and vid_block == 0 : # video 1
os.system('dbuscontrol.sh stop')
play_video1 = subprocess.Popen(['omxplayer -o hdmi -r --no-osd --aspect-mode fill /home/misano_iway_v3.mp4'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True)
vid_block = 1
elif data == '0102' and vid_block == 0 : # video 2
os.system('dbuscontrol.sh stop')
play_video2 = subprocess.Popen(['omxplayer -o hdmi -r --no-osd --aspect-mode fill /home/indy_iway_v2.mp4'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True)
vid_block = 1
elif data == '0001' and vid_block == 0: # Video logo
os.system('dbuscontrol stop')
play_video3 = subprocess.Popen(['omxplayer -r --no-osd --loop --aspect-mode fill /home/Logo.mp4'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True)
vid_block = 1
elif data == '0002' and vid_block == 0: # Video logo
os.system('dbuscontrol.sh stop')
play_video4 = subprocess.Popen(['omxplayer -r --no-osd --loop --aspect-mode fill /home/Logo.mp4'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True)
vid_block = 1
except KeyboardInterrupt:
print("Exit")
data = None
os.system('dbuscontrol.sh stop')
Я знаю, что мой код не очень, но я совершенно новой для питона и малина, и я просто хочу, чтобы сделать он работает на данный момент, idc об оптимизации.
Я бы очень признателен, если вы, ребята, можете помочь.