Подтвердить что ты не робот

Python: создание звукового сигнала

Я пытаюсь заставить программу подавать звуковой сигнал. Я нахожусь на оконной машине. Я посмотрел на http://docs.python.org/library/winsound.html

Но не знаю, как я могу запрограммировать это с помощью сканера штрих-кода.

Вот мой код для последовательного сканера штрих-кода.

ser = serial.Serial()
ser.baudrate = 9600

#for windows
ser.port = 2 #for COM3

ser.open()
ser.write('hello')
ser.close()

ОБНОВЛЕНИЕ: Поскольку я раздражаю своих сотрудников звуковым сигналом. Могу ли я получить его через аудиоразъем для наушников?

4b9b3361

Ответ 1

В Windows, если вы хотите просто заставить компьютер сделать звуковой сигнал:

import winsound
frequency = 2500  # Set Frequency To 2500 Hertz
duration = 1000  # Set Duration To 1000 ms == 1 second
winsound.Beep(frequency, duration)

winsound.Beep() может использоваться везде, где вы хотите получить звуковой сигнал.

Ответ 2

Кросс-платформенный способ сделать это - print '\a'. Это отправит символ ASCII Bell в stdout и, мы надеемся, будет генерировать звуковой сигнал (a для "alert" ). Обратите внимание, что многие современные терминальные эмуляторы предоставляют возможность игнорировать символы колокола.

Поскольку вы находитесь в Windows, вы будете счастливы услышать, что Windows имеет свой собственный (привязать себя) Beep API, который позволяет отправлять звуковые сигналы произвольной длины и высоты тона. Обратите внимание, что это решение только для Windows, поэтому вам, вероятно, следует предпочесть print '\a', если вы действительно не заботитесь о Герцах и миллисекундах.

Доступ к API Beep осуществляется через модуль winsound: http://docs.python.org/library/winsound.html

Ответ 3

Linux.

$ apt-get install beep

$ python
>>> os.system("beep -f 555 -l 460")

ИЛИ

$ beep -f 659 -l 460 -n -f 784 -l 340 -n -f 659 -l 230 -n -f 659 -l 110 -n -f 880 -l 230 -n -f 659 -l 230 -n -f 587 -l 230 -n -f 659 -l 460 -n -f 988 -l 340 -n -f 659 -l 230 -n -f 659 -l 110 -n -f 1047-l 230 -n -f 988 -l 230 -n -f 784 -l 230 -n -f 659 -l 230 -n -f 988 -l 230 -n -f 1318 -l 230 -n -f 659 -l 110 -n -f 587 -l 230 -n -f 587 -l 110 -n -f 494 -l 230 -n -f 740 -l 230 -n -f 659 -l 460

Ответ 4

Я искал то же самое, но для оболочки Linux.

Тема привела меня к ответу, -thanks -

Возможно, более питоническая манера:

import os
beep = lambda x: os.system("echo -n '\a';sleep 0.2;" * x)
beep(3)

Примечания:

  • значение sleep (здесь 0.2), зависит от длины (секунд) вашего звукового сигнала по умолчанию
  • Я решил использовать os.system, а не subprocess.Popen для простоты (это может быть плохо)
  • '-n' для echo не должен больше отображаться
  • последний ';' после sleep необходимо для полученной текстовой последовательности (* x)
  • также проверяется через ssh на X-члене

Ответ 5

Я сделал пакет для этой цели.

Вы можете использовать его следующим образом:

from pybeep.pybeep import PyVibrate, PyBeep
PyVibrate().beep()
PyVibrate().beepn(3)
PyBeep().beep()
PyBeep().beepn(3)

Это зависит от sox и поддерживает только python3.

Ответ 6

Кросс-платформенный способ:

import time
import sys
for i in range(1,6):
    sys.stdout.write('\r\a{i}'.format(i=i))
    sys.stdout.flush()
    time.sleep(1)
sys.stdout.write('\n')

Ответ 7

Там есть ответ Windows и ответ Debian, так что вот Mac :

Это предполагает, что вы просто ищете быстрый способ создания настраиваемого звукового сигнала, а не пьезоэлектрический звуковой сигнал, который вы получаете в Windows:

os.system( "say beep" )

Отказ от ответственности: Вы можете заменить os.system вызовом модуля subprocess, если вы беспокоитесь о том, что кто-то взломает ваш звуковой код.

См.: Как сделать аппаратный звуковой сигнал в Mac OS X 10.6

Ответ 8

Использование pygame на любой платформе

Преимущество использования pygame заключается в том, что его можно заставить работать на любой платформе ОС. Ниже приведен пример кода для GNU/Linux.

Сначала установите модуль pygame для python3, как подробно описано здесь.

$ sudo pip3 install pygame

Модуль pygame может воспроизводить файлы .wav и .ogg из любого местоположения файла. Вот пример:

#!/usr/bin/env python3
import pygame
pygame.mixer.init()
sound = pygame.mixer.Sound('/usr/share/sounds/freedesktop/stereo/phone-incoming-call.oga')
sound.play()