Strona 1 z 2

[+] Python, skrypt nie wykonuje się dalej po "os.system"

: 13 grudnia 2015, 12:25
autor: cloudbuster
Witam,
Chciałbym stworzyć coś na wzór odtwarzacza mp3. Dla każdego guzika będzie inny utwór.
Problem polega na tym, że kod działa tylko do odtworzenia dźwięku, potem nie reaguje. Sprzętowo wszystko jest ok. Urządzenie ma działać pod Raspberry Pi, czyli debian.
import time
import RPi.GPIO as GPIO
import os


GPIO.setmode(GPIO.BCM)
GPIO.cleanup()
GPIO.setwarnings(False)
GPIO.setup(4,GPIO.IN)
GPIO.setup(17,GPIO.IN)
GPIO.setup(27,GPIO.IN)
GPIO.setup(22,GPIO.IN)


while True:


if (GPIO.input(4) == False):
os.system('sudo mpg123 1.mp3)
time.sleep(1000)


if (GPIO.input(17) == False): #drugi pin na złączu
os.system('sudo mpg321 -l 0 2.mp3') # nieskonczona ilosc razy

if (GPIO.input(27) == False):
os.system('sudo mpg321 3.mp3')
time.sleep(7000)


Próbowałem też po odtworzeniu dźwięku zabijać proces poprzez
os.system('sudo killall mpg321')
,
ale nic to nie daje.

: 13 grudnia 2015, 12:42
autor: LordRuthwen
Jeśli czekasz 1000 sekund to czemu się dziwisz?

: 13 grudnia 2015, 12:50
autor: liske1
Nie zamknąłeś cudzysłowia w tej linijce:

Kod: Zaznacz cały

os.system('sudo mpg123 1.mp3)

: 13 grudnia 2015, 15:13
autor: cloudbuster
a... to nie gramatyka C++ :) .
To pewnie to, sprawdzę i dam znać.

: 13 grudnia 2015, 23:07
autor: cloudbuster
Problem rozwiązany.
Dzięki!

: 14 grudnia 2015, 07:38
autor: LordRuthwen
Oznacz problem jako rozwiązany, zgodnie z regulaminem forum.

: 14 grudnia 2015, 21:35
autor: cloudbuster
Niemniej.... zostaje jeszcze jedna sprawa:
Chciałbym by program reagował na sygnał nawe, gdy dźwięk jest odtwarzany. W tej chwili dźwięk musi się skończyć, a dopiero potem "słucha" co dalej.

: 15 grudnia 2015, 07:11
autor: LordRuthwen
No to chyba musisz mieć odpalony drugi wątek, inaczej tego nie zrobisz.

: 16 grudnia 2015, 21:02
autor: cloudbuster
Ok... Jak to zrobić? Gdzie szukać jasnego wyjaśnienia?

: 25 grudnia 2015, 19:11
autor: cloudbuster
Dzięki...
Bardzo pomogliście.

Wystarczy po komendzie napisać 2>/dev/null &