Python: Haciendo un pitido

Estoy intentando que el progtwig me dé un pitido. Estoy en una máquina de ventanas. He consultado http://docs.python.org/library/winsound.html

Pero no estoy seguro de cómo puedo progtwigr esto con un escáner de código de barras.

Aquí está mi código para el escáner de código de barras en serie.

ser = serial.Serial() ser.baudrate = 9600 #for windows ser.port = 2 #for COM3 ser.open() ser.write('hello') ser.close() 

ACTUALIZACIÓN: Ya que estoy molestando a mis compañeros de trabajo con el pitido. ¿Puedo hacer que venga a través del conector de audio para auriculares?

    En Windows, si solo desea hacer que la computadora emita un pitido:

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

    El winsound.Beep() se puede utilizar donde quiera que se produzca el pitido.

    La forma multiplataforma de hacer esto es print '\a' . Esto enviará el carácter de ASCII Bell a la salida estándar y, con suerte, generará un pitido (para ‘alerta’). Tenga en cuenta que muchos emuladores de terminales modernos ofrecen la opción de ignorar los caracteres de campana.

    Ya que está en Windows, le alegrará saber que Windows tiene su propio Beep API (que le permite a usted mismo), lo que le permite enviar pitidos de duración y tono arbitrarios. Tenga en cuenta que esta es una solución solo para Windows, por lo que probablemente prefiera print '\a' menos que realmente se preocupe por Hertz y milisegundos.

    Se accede a la API de Beep a través del módulo winsound : http://docs.python.org/library/winsound.html

    Linux

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

    O

     $ 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 

    Estaba buscando lo mismo pero para el shell de Linux.

    El tema me trajo una respuesta, -gracias-

    Tal vez de manera más pythonica:

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

    Notas:

    • el valor de reposo (aquí 0.2), depende de la duración (segundos) de su pitido predeterminado
    • os.system utilizar os.system lugar de subprocess.Popen os.system por simplicidad (podría ser malo)
    • el ‘-n’ para el echo es no tener más pantalla
    • el último ‘;’ después de sleep es necesario para la secuencia de texto resultante (* x)
    • También probado a través de ssh en un término X

    He hecho un paquete para ese propósito.

    Puedes usarlo así:

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

    Depende de sox y solo soporta python3.

    El camino multiplataforma:

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

    Hay una respuesta de Windows y una respuesta de Debian, así que aquí hay una de Mac :

    Esto supone que solo estás buscando una forma rápida de crear un sonido de alerta personalizable, y no específicamente el pitido piezoeléctrico que obtienes en Windows:

     os.system( "say beep" ) 

    Descargo de responsabilidad: puede reemplazar os.system con una llamada al módulo de subprocess si le preocupa que alguien piratee su código de sonido.

    Consulte: Cómo hacer que el hardware emita un pitido en Mac OS X 10.6