我对Python比较陌生,我试图开发一种功能,或多或少像汽车中的停车传感器。
即:代码接收一些传感器输入数据并且实时地产生蜂鸣声,其中两次蜂鸣声之间的等待时间与信号的幅度成反比(即,当关闭蜂鸣声时,相反,反之亦然)。
我试图创建一个包含winsound.beep()和暂停的while循环。将使用传感器输入计算暂停持续时间。但是,即使作为几行简单代码运行,while循环似乎是异步的,并且暂停不是均匀分开的。
我试图将代码放在一个单独的线程中,但这并没有解决问题。
我会在这里包含代码,只是执行重复的哔声,而不是从那里进行任何输入进行故障排除。
from time import sleep
import winsound
while True:
winsound.Beep(1500,100)
sleep(0.05)
我希望输出是间隔0.05秒的一致蜂鸣声,但实际输出是异步蜂鸣,暂停随时间变化。
尝试
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
蜂鸣声采用参数频率和持续时间。因此,您可以更改频率以匹配信号幅度,而不是更改睡眠持续时间。