[python] 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()

업데이트 : 나는 경고음으로 동료를 짜증나게하고 있기 때문에. 헤드폰 용 오디오 잭을 통해받을 수 있습니까?



답변

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()당신이 경고음이 발생하여 원하는 목적지까지 사용할 수 있습니다.


답변

이를 수행하는 크로스 플랫폼 방법은 print '\a'. 그러면 ASCII Bell 문자가 stdout으로 전송되고 경고음이 발생합니다 ( ‘경고’). 많은 최신 터미널 에뮬레이터는 벨 문자를 무시하는 옵션을 제공합니다.

Windows를 사용하고 있기 때문에 Windows 에 임의의 길이와 피치의 경고음을 보낼 수 있는 자체 Beep API 가 있다는 사실에 기뻐할 것 입니다. 이것은 Windows 전용 솔루션이므로 print '\a'Hertz 및 밀리 초에 대해 정말로 신경 쓰지 않는 한 선호 할 것입니다 .

Beep API는 winsound 모듈을 통해 액세스됩니다 . http://docs.python.org/library/winsound.html


답변

리눅스.

$ 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


답변

나는 동일하지만 Linux 쉘을 찾고있었습니다.

이 주제는 저에게 답을주었습니다.-감사합니다-

아마도 더 비단뱀적인 방식 :

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

노트 :

  • 수면 값 (여기서는 0.2)은 기본 경고음의 길이 (초)에 따라 다릅니다.
  • 나는 단순함 을 위해 os.system대신 사용 하기로 결정 subprocess.Popen했습니다 (나쁠 수 있음)
  • ‘-n’ echo은 더 이상 표시되지 않는 것입니다.
  • 마지막 ‘;’ sleep결과 텍스트 시퀀스 (* x)에 after 가 필요합니다.
  • 또한 X 용어에서 ssh를 통해 테스트되었습니다.

답변

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')


답변

나는 그 목적을 위해 패키지 를 만들었습니다 .

다음과 같이 사용할 수 있습니다.

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

sox에 따라 다르며 python3 만 지원합니다.