Bonjour à tous
Débutant en Python, je viens chercher de l'aide pour résoudre un problème sur lequel je butte depuis plusieurs semaines.
J'essaie d'écrire un programme pour faire un jukebox RFID sur un raspberry.
J'utilise le lecteur 'mpg123' sur lequel il est possible d’interagir pendant la lecture pour faire une pause ou passer au morceau suivant.
Le problème est que 'mpg123' ne se ferme pas à la fin du morceau quand je le lance depuis mon script python (alors qu'il se ferme si je le lance depuis un script bash)
Voici la partie du code qui concerne ce problème
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #!/usr/bin/env python
import os
import pty
import subprocess
import popen
import RPi.GPIO as GPIO
Pause = 7
GPIO.setup(Pause, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
master, slave = os.openpty()
path = "/home/pi/Desktop/07.mp3"
p = subprocess.Popen(['mpg123', '-C',path ], stdin=master)
while p.returncode == "None" :
pause = GPIO.input(Pause)
if pause:
os.write(slave, 's')
time.sleep(0.5) |
Du fait que 'mpg123' ne se ferme pas, p.returncode reste à "None" et je ne peux pas sortir de la boucle.
Par contre, une fois la lecture terminée, 'mpg123' retourne
[0:22] Decoding of 07.mp3 finished.
Je voudrais récupérer ce message dans une variable pour sortir de la boucle.
C'est peut-être très simple mais je n'ai pas trouvé.
merci de votre aide et de votre indulgence
Jihem74
Partager