Я пытаюсь заставить программу издавать звуковой сигнал. Я на Windows-машине. Я посмотрел 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()
ОБНОВЛЕНИЕ: так как я раздражаю своих коллег звуковым сигналом. Можно ли заставить его выходить через аудиоразъем для наушников?
python
audio
serial-port
Марк Бригам
источник
источник
Ответы:
В 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()
Может использоваться везде , где вы хотите , чтобы произойти звуковой сигнал.источник
def annoy(): for i in range(1, 10): winsound.Beep(i * 100, 200)
def sos(): for i in range(0, 3): winsound.Beep(2000, 100) for i in range(0, 3): winsound.Beep(2000, 400) for i in range(0, 3): winsound.Beep(2000, 100)
. Я, наверное, должен вернуться к работе сейчас: DКросс-платформенный способ сделать это -
print('\a')
. Это отправит символ ASCII Bell на стандартный вывод и, надеюсь, сгенерирует звуковой сигнал (для «предупреждения»). Обратите внимание, что многие современные эмуляторы терминала позволяют игнорировать символы звонка.Поскольку вы работаете в Windows, вы будете счастливы услышать, что в Windows есть собственный (приготовьтесь) Beep API , который позволяет отправлять гудки произвольной длины и высоты. Обратите внимание, что это решение только для Windows, поэтому вам, вероятно, следует предпочесть
print('\a')
если вы действительно не заботитесь о Герцах и миллисекундах.Доступ к Beep API осуществляется через модуль winsound : http://docs.python.org/library/winsound.html
источник
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
источник
os.system
это нормально, особенно с жестко заданным значением, не все пишут веб-сервер.-f 1047-l
, должно быть-f 1047 -l
, пробел отсутствуетЯ искал то же самое, но для оболочки Linux.
Тема привела меня к ответу, -спасибо-
Может быть, более питоническим образом:
import os beep = lambda x: os.system("echo -n '\a';sleep 0.2;" * x) beep(3)
Примечания :
os.system
а неsubprocess.Popen
для простоты (это могло быть плохо)echo
означает, что больше не отображаетсяsleep
необходимо для результирующей текстовой последовательности (* x)источник
echo
(print
) иsleep
, поэтому на самом деле это не pythonic для выполнения внешних вызовов, особенно когда они (непереносимые) вызовы Unix.Есть ответ Windows и ответ Debian, так что вот ответ Mac :
Это предполагает, что вы просто ищете быстрый способ сделать настраиваемый звуковой сигнал, а не пьезоэлектрический сигнал, который вы получаете в Windows:
os.system( "say beep" )
Отказ от ответственности: вы можете заменить
os.system
вызовомsubprocess
модуль, если беспокоитесь о том, что кто-то взломает ваш звуковой код.См .: Как сделать звуковой сигнал оборудования в Mac OS X 10.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')
источник
sys.stdout.write('\a')
Я сделал для этого пакет .
Вы можете использовать это так:
from pybeep.pybeep import PyVibrate, PyBeep PyVibrate().beep() PyVibrate().beepn(3) PyBeep().beep() PyBeep().beepn(3)
Это зависит от sox и поддерживает только python3.
источник
Использование
pygame
на любой платформеПреимущество использования в
pygame
том, что его можно заставить работать на любой платформе ОС. Однако ниже пример кода предназначен для GNU / Linux .Сначала установите
pygame
модуль,python3
как подробно описано здесь .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()
источник
В Linux:
print('\007')
будет звучать системный звонок.источник