我是Python的新手,我正在尝试开发一个功能,该功能或多或少像汽车中的 parking 传感器一样工作。

即:该代码接收一些传感器输入数据,并实时发出蜂鸣声,其中两次蜂鸣之间的等待时间与信号的大小成反比(即,当蜂鸣声接近时,蜂鸣声会彼此靠近,反之亦然) )。

我试图创建一个while循环,其中包括winsound.beep()和一个暂停。暂停持续时间将使用传感器输入来计算。但是,即使以几行简单的代码运行,while循环也似乎是异步的,并且暂停之间的间隔也不均匀。

我试图将代码放在单独的线程中,但这不能解决问题。

我将在此处包含代码以仅执行重复的蜂鸣声,而不从那里进行任何输入来排除故障。

from time import sleep
import winsound

while True:
    winsound.Beep(1500,100)
    sleep(0.05)

我希望输出是相距0.05s的一致蜂鸣声,但是实际输出是异步蜂鸣,并且暂停会随时间变化。

最佳答案

尝试

from time import sleep
import winsound

while True:

    winsound.Beep("SystemExit", winsound.SND_ALIAS)
    sleep(0.05)

编辑:
试试这个
from time import sleep
import winsound

while True:
    frequency = 10 # change it based on sensor input
    duration = 1000 # keep this constant
    winsound.Beep(frequency,duration)
    sleep(duration) # i'm assuming beep is not blocking so this delay keep the program waiting until beep duration is completed

提示音取参数频率和持续时间。
因此,您可以更改频率以匹配信号的大小,而不是更改睡眠时间。

07-24 19:15