Python: создание звукового сигнала, длительность паузы которого зависит от входа датчика в реальном времени - PullRequest
1 голос
/ 26 апреля 2019

Я относительно новичок в Python и пытаюсь разработать функцию, которая работает более или менее как датчик парковки в автомобиле.

То есть: код получает некоторые входные данные датчика, и в режиме реального времени создается звуковой сигнал, период ожидания между двумя звуковыми сигналами которого обратно пропорционален величине сигнала (т. Е. Когда близкие звуковые сигналы находятся близко друг к другу) и наоборот).

Я попытался создать цикл while, включающий winsound.beep () и паузу. Продолжительность паузы будет рассчитываться с использованием входа датчика. Однако даже при выполнении нескольких строк простого кода цикл while кажется асинхронным, и паузы не распределяются равномерно.

Я попытался поместить код в отдельный поток, но это не решило проблему.

Я включу здесь код, чтобы просто выполнить повторный звуковой сигнал, не принимая никаких входных данных для устранения неполадок оттуда.

from time import sleep
import winsound

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

Я ожидаю, что выходной сигнал будет согласованным звуковым сигналом с интервалом 0,05 с, но фактический выходной сигнал - асинхронный звуковой сигнал с паузами, изменяющимися со временем.

1 Ответ

0 голосов
/ 26 апреля 2019

Попробуйте

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

Beep Принимает параметры частоты и длительности.Поэтому вместо изменения длительности сна вы можете изменить частоту в соответствии с величиной сигнала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...