TCP/IPプロトコルからの4バイトの信号を読み込み、信号(0001、0002、0101または0102)に応じて適切なビデオを再生するために最近ラズベリーのプロジェクトを作成しました。 。omxplayer dbusコントロールがプロジェクトのエクスポート時に動作を停止する
私はそれで問題を抱えて2:
1-手動で実行時にコードが正常に動作しますが、私はcronのを使用して、再起動時に、それを起動した場合、コードが実行されているが、正常に動作していません。
2コードはPiでコーディングされていますが、他のPisにファイルを転送しても、手動で起動すると同じエラーが表示されますそれは第1のPiのcronを通って。
ここで言及している実行エラーは次のとおりです。 dbusコマンドはビデオを停止しませんが応答しません。
コードはpython 3で、すべてのラズベリーは全く同じパラメータを持っています。ファイルを1 Piにあるものとみなし、他のものにコピーしました。
私のcronファイルが
@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')
私は自分のコードがきれいではありません知っているが、私はPythonとラズベリーに非常に新たなんだと私はちょうど作りたいですそれは今、最適化についてのidcのために働く。
お手数ですが本当にありがとうございます。