2016-08-03 4 views
0

私の問題は、各ボタンの下にあるオーディオファイルがかなり長いことです。間違ったボタンを押した場合、再生を終了するまで待たなければなりません。すべてのボタンを押して、1)再生可能なオーディオファイルを停止し、2)それ自身のファイルを再生するようにするにはどうすればよいですか? mpg123を使用してオーディオファイルを再生しています。ファイル名はプレースホルダです。ボタンを押して最初に再生しているオーディオファイルを停止してから、独自のオーディオを再生するにはどうすればよいですか?

コード:

#!/usr/bin/env python 

import os 
from time import sleep 
import RPi.GPIO as GPIO 

GPIO.setmode(GPIO.BCM) 
GPIO.setup(18, GPIO.IN) 
GPIO.setup(19, GPIO.IN) 
GPIO.setup(20, GPIO.IN) 
GPIO.setup(21, GPIO.IN) 
GPIO.setup(22, GPIO.IN) 
GPIO.setup(23, GPIO.IN) 
GPIO.setup(24, GPIO.IN) 
GPIO.setup(25, GPIO.IN) 
GPIO.setup(26, GPIO.IN) 
GPIO.setup(27, GPIO.IN) 

while True: 

    if (GPIO.input(18)==False): 
     os.system('mpg123 audio.mp3 &') 
    if (GPIO.input(19)==False): 
     os.system('mpg123 audio.mp3 &') 
    if (GPIO.input(20)==False): 
     os.system('mpg123 audio.mp3 &') 
    if (GPIO.input(21)==False): 
     os.system('mpg123 audio.mp3 &') 
    if (GPIO.input(22)==False): 
     os.system('mpg123 audio.mp3 &') 
    if (GPIO.input(23)==False): 
     os.system('mpg123 audio.mp3 &') 
    if (GPIO.input(24)==False): 
     os.system('mpg123 audio.mp3 &') 
    if (GPIO.input(25)==False): 
     os.system('mpg123 audio.mp3 &') 
    if (GPIO.input(26)==False): 
     os.system('mpg123 audio.mp3 &') 
    if (GPIO.input(27)==False): 
     os.system('mpg123 audio.mp3 &') 

sleep(0.1): 

答えて

0

関数呼び出しはすぐに戻りますので、あなたは非同期subprocessを使用することができます。私はそれが "kill"それを可能にする外部プロセスと通信するための "ハンドル"オブジェクトを得ることが可能だと思います。

同様に、メインプログラムのキーを確認して、再生するスレッドを開始することができます。http://docs.python.org/3/library/threading.html(他のプログラムは新しいプロセスであるため意味がありません)。

関連する問題