Python: robienie hałasu

Staram się, żeby program dawał mi sygnał dźwiękowy. Jestem na maszynie z windows. Spojrzałem na http://docs.python.org/library/winsound.html

Ale nie wiem, jak Mogę to zaprogramować skanerem kodów kreskowych. Oto Mój kod do seryjnego skanera kodów kreskowych.
ser = serial.Serial()
ser.baudrate = 9600

#for windows
ser.port = 2 #for COM3

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

UPDATE: ponieważ denerwuję moich współpracowników sygnałem dźwiękowym. Czy mogę go dostać przez gniazdo audio dla słuchawek?

Author: dsolimano, 2011-06-30

6 answers

W systemie Windows, jeśli chcesz po prostu sprawić, aby komputer wydał sygnał dźwiękowy:

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

The winsound.Beep() może być używany wszędzie tam, gdzie ma wystąpić sygnał dźwiękowy.

 95
Author: CyanRook,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-16 09:16:03

Wieloplatformowym sposobem na to jest print '\a'. Spowoduje to wysłanie znaku ASCII Bell na stdout i, miejmy nadzieję, wygeneruje sygnał dźwiękowy (a dla 'alert'). Zauważ, że wiele nowoczesnych emulatorów terminali zapewnia opcję ignorowania znaków dzwonka.

Ponieważ jesteś w systemie Windows, z przyjemnością usłyszysz, że Windows ma swój własny (nawiń klamrę) Beep API , który pozwala wysyłać sygnały dźwiękowe o dowolnej długości i wysokości. Zauważ, że jest to rozwiązanie tylko dla Windows, więc prawdopodobnie powinieneś preferuj print '\a', chyba że zależy Ci na hercach i milisekundach.

Interfejs Beep API jest dostępny przez moduł winsound: http://docs.python.org/library/winsound.html

 100
Author: jforberg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-30 16:07:16

Linux.

$ apt-get install beep

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

Lub

$ 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
 15
Author: YumYumYum,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-24 14:25:43

Szukałem tego samego, ale dla powłoki Linuksa.

Temat przyniósł mi odpowiedź, -dzięki -

Może bardziej pythoniczny sposób:

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

Uwagi:

  • wartość uśpienia (tutaj 0.2), zależy od długości (sekund) domyślnego sygnału dźwiękowego
  • wybrałem os.system zamiast subprocess.Popen dla prostoty (może być źle)
  • '- N ' dla {[3] } ma nie mieć już wyświetlacza
  • ostatni"; " po {[4] } jest niezbędny do uzyskania Sekwencja tekstu (*x)
  • testowane również przez ssh na X term
 10
Author: s4mdf0o1,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-03 15:00:53

Zrobiłem pakiet w tym celu.

Możesz go użyć tak:

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

To zależy od sox i obsługuje tylko python3.

 2
Author: qed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-05 16:05:58

Droga Krzyżowa:

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')
 0
Author: foo bar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-13 11:36:02