Pythonで音楽を鳴らしながら別の処理を実行させ、その後で音楽を止めたい。
方法の一つとして並列処理をさせることを思いつき、下記のコードを書いてみました。
音楽を再生してから、並列でjudge_wakeup()を実行し、
関数が終了した時点で音楽を止めたいのですが、関数が終了せず上手く動きません。
どのように改善すれば上手くいくか、他の方法だとどんなものがあるか教えてください。
Python3.4.2
1# -*- coding: utf-8 -*- 2import multiprocessing 3import subprocess 4import RPi.GPIO as GPIO, time 5import sys 6 7def judge_wakeup(): 8 led_pin = 40 9 sensor_pin = 38 10 11 GPIO.setmode(GPIO.BOARD) 12 GPIO.setup(led_pin, GPIO.OUT) 13 GPIO.setup(sensor_pin, GPIO.IN) 14 15 flag = 0 16 17 try: 18 while True: 19 print(str(GPIO.input(sensor_pin))) 20 if(GPIO.input(sensor_pin)==1): 21 flag = 1 22 GPIO.output(led_pin, 1) 23 if(GPIO.input(sensor_pin)==0): 24 GPIO.output(led_pin, 0) 25 if(flag == 1): 26 break 27 except KeyboardInterrupt: 28 print('[Ctrl]+[C]でキーボード割り込みしました。') 29 GPIO.cleanup() 30 31from multiprocessing import Process 32p = Process(target=judge_wakeup) 33p.start() 34subprocess.call("aplay TaurusDemon.wav", shell=True) 35p.join() 36#print('hello')** ← #p.join()の後の処理が実行されていません。** 37#sys.exit() 38subprocess.call("stop", shell=True)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/14 15:22