我正在编写一个音频程序,它读取 arduino 发送的串行信息,如果串行信息“正常”则播放一些歌曲,如果“不正常”则停止播放。问题是我正在使用 python 库名称“pyAudio”,它将 .wav 声音再现为字节流,因此每次都会有一个“while”循环写入字节流,所以声音会播放。由于这个while循环,在执行代码的同时我不能做更多的事情。但是我每次都需要读取串口信息才能知道是否必须播放声音。有没有办法让我以循环不停止运行的方式进行串行读取?
谢谢!
我正在编写一个音频程序,它读取 arduino 发送的串行信息,如果串行信息“正常”则播放一些歌曲,如果“不正常”则停止播放。问题是我正在使用 python 库名称“pyAudio”,它将 .wav 声音再现为字节流,因此每次都会有一个“while”循环写入字节流,所以声音会播放。由于这个while循环,在执行代码的同时我不能做更多的事情。但是我每次都需要读取串口信息才能知道是否必须播放声音。有没有办法让我以循环不停止运行的方式进行串行读取?
谢谢!
def play_audio( buffer,play_controller ):
# buffer is the audio buffer to play
# play_controller.is_set lets you pause the playback
while not_finished:
if not play_controller.is_set():
"""
The necessary code for playing a audio buffer/song
"""
else: time.sleep(0.1)
#end
import threading
pause_handler = threading.Event()
player = threading.Thread(
target = play_audio,
args = ( buffer,pause_handler )
)
player.start()
pause_handler.set() # this could pause playback
pause_handler.clear() # this could restart playback
如果我理解正确的话。如您所见,这非常简单。
GStreamer
此处。