我是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
提示音取参数频率和持续时间。
因此,您可以更改频率以匹配信号的大小,而不是更改睡眠时间。