新手在这里。尝试编写简单的代码,将播放加载的音频文件并进一步“锁定”按钮,直到文件完成付款为止。我正在使用GPIO输入。我在Thonny中使用python在Raspberry Pi 3b +上编写。使用当前文件,我可以加载文件,并初始化音频和GPIO按钮,但是我无法弄清楚如何锁定另一个按钮的输入。按下其他按钮可触发音频在已经播放的文件上再次播放。
我尝试了pygame事件等待和睡眠功能,但是我找不到有关如何使用它们的明确信息。
import pygame
pygame.init()
from gpiozero import Button, LED
btn_playaudio = Button(27)
playaudio = pygame.mixer.Sound('/home/pi/folder/folder2/audiofile.wav')
btn_playaudio.when_pressed = playaudio.play
我希望文件播放一次直到完成,然后在按下按钮时准备再次播放。
最终,该程序将被加载到无头Pi并使用rc.local自动运行,以便在设备启动时启动,加载程序并准备按下按钮。 (基本上是一个在按下按钮时便会播放音频的按钮信息亭-它将以24/7运行)
答案 0 :(得分:0)
您可以这样做:
import pygame
import time
from gpiozero import Button
pygame.init()
btn_playaudio = Button(27)
playaudio = pygame.mixer.Sound('/home/pi/folder/folder2/audiofile.wav')
def my_player():
global btn_playaudio # We want changes to this to occur in the global scope
length = playaudio.get_length() # Returns the length of the sound, in seconds
btn_playaudio.when_pressed = None # Remove the handler while the sound is playing
playaudio.play()
time.sleep(length)
btn_playaudio.when_pressed = my_player # Restore the handler
btn_playaudio.when_pressed = my_player
策略是在播放声音时删除处理程序,然后在完成处理后将其重新添加。我尚未实际测试过,因此您可能需要对其进行调试。