如何暂停读取串行数据以便调用函数?

how to pause reading serial data so I can call a function?

我制作了一个程序,它从微控制器接收温度传感器数据,微控制器通过串口 (USB) 连接到我的 Raspberry Pi 我使用 import serial 连接它们。我已经可以打印数据了,但我想制作一个警报系统,如果数据超过 35 摄氏度,则会播放“温度超过 35”的音频,但如果不超过 35,则继续打印数据。这段代码的问题是,如果我得到 35.1,那么下一个数据是 35.4,音频继续播放但还没有结束。所以输出音频将是“tempe- temperature is over 35”。我希望它是如果数据是 35.1 那么音频将播放直到它结束,然后如果下一个数据再次超过 35 那么音频将再次播放,而不会被切断。我是 python 和 raspberry pi 的初学者,如有任何帮助,我们将不胜感激!

这里是读取串行数据并打印到标签的代码

    def readserial(self):
        response=ser.readline().decode('utf-8').rstrip()
        response=float(response)
        if response > 35.00:
            self.label2.setText(str(response))
            self.alarm()
        elif response <= 35.00:
            self.label2.setText(str(response))
            self.timer=QTimer()
            self.timer.timeout.connect(self.readserial)
            self.timer.start(500)

    def alarm(self):
        pygame.mixer.music.load("over.mp3")
        pygame.mixer.music.play()

您可以添加 if 语句您可以 pygame.mixer.music.get_busy()

if not pygame.mixer.music.get_busy(): # returns true if music is playing
    pygame.mixer.music.play()