2010-11-02 13 views
7

Sto lavorando con Sikuli, che (penso) è costruito su Jython. Voglio creare una sceneggiatura che faccia un piccolo bip delicato per attirare l'attenzione dell'utente. (Questo è su Windows.)Jython: fare un semplice segnale acustico su Windows

Come posso fare questo? Vedo che il modulo winsound non è disponibile su Jython.

(Si noti che voglio usare la scheda audio, non è il built-in del segnale acustico.)

+3

Cordiali saluti, il modo standard di ottenere l'attenzione di un utente in Windows fa lampeggiare la barra delle applicazioni; suonare un suono è fastidioso. –

+0

Grazie. Il cliente ha chiesto un segnale acustico. –

+0

Il suono è tutto tranne che semplice, indipendentemente dall'ambiente operativo o della lingua. In Jython, stai usando l'ambiente Java, quindi è dove devi cercare qualcosa fuori dall'ordinario. –

risposta

3

Se la sua Jython, allora basta usare una qualsiasi delle classi Java che riproducono il suono. Ce ne sono tonnellate.

 
from java import net 
from java.applet.Applet import newAudioClip 
from java import io 
url = io.File("fileName").toURL() 
audio = newAudioClip(url) 
audio.play() 

 
import sun.audio 
import java.io 
inputStream = java.io.FileInputStream("test.wav") 
audioStream = sun.audio.AudioStream(inputStream) 
sun.audio.AudioPlayer.player.start(audioStream) 

+0

Un modo per farlo senza trattare un file? Tipo, facendo un'onda sinusoidale o qualcosa del genere? Sono completamente ignorante in Java. –

+0

Sure is, loop over: ampiezza * (math.sin (frequenza * 2 * math.pi * count) per produrre un'onda sin in cui count è il passo temporale. Mentre si itera, si salva il risultato e si avrà essenzialmente un array di dati audio non elaborati. Esegui ciò che desideri. – user489041

+0

Dannazione, si dice "impossibile importare il nome newAudioClip". Probabilmente non è incluso in Sikuli.) Indizi a cosa fare? –

0

Dal momento che si sta utilizzando Sikuli è possibile a quanto segue.

Aggiungere qualsiasi file multimediale come qualsiasi .mp3 sul desktop di una macchina Windows, asocia il file a un lettore multimediale. Cattura l'immagine e comprendono:

clic (modello (desktopnoiseicon.png)

alternatley si potrebbe eseguire lo stesso compito con openapp (C: \ noise.mp3)

Sikuli dà la possibilità di trovare numerosi soluzioni alternative

in SikuluXrc2 si potrebbe anche puntare a un URL dal codice senza la necessità di impostare un percorso di fascio

2

si può fare il fllowing tramite riga di comando:

Execute "copy con beep.txt" tipo [Ctrl + G] come input e poi [Ctrl + Z] seguito da [Invio] per uscire

Quindi eseguire "tipo beep.txt" e si sentirà un segnale acustico.

Si può mettere "tipo beep.txt" in un file batch o utilizzare Ctrl + G direttamente in batch (che produrrebbe errore nella riga di comando con il suono)

1

Dal momento che abbiamo accesso al livello di Java in Sikuli (grazie a Jython), questo dovrebbe funzionare principalmente:

import java.awt.Toolkit # only once per script 
java.awt.Toolkit.getDefaultToolkit().beep() 

prova superata su Windows 7. Si può ottenere qualche spiegazione dettagliata here.

0

Se si eseguono script Sikuli dalla riga di comando anziché tramite l'IDE, è possibile semplicemente scrivere il carattere BEL nella console e verrà emesso un segnale acustico. Questo funziona anche tramite RDP.

Modifica: su Windows 7, questo ora emetterà un segnale acustico sulla scheda audio, come richiesto. Su Windows XP emetterà un segnale acustico per l'altoparlante interno (se presente).

E.g.le seguenti bip due volte:

print("\007\007") 
0

Poiché hai chiesto un semplice script Sikuli/Python, ho provato questo fuori me stesso su Windows 10:

import java.awt.Toolkit 

class Main(): 
    def __init__(self): 
     # Ask user input. 
     nValue = input('Please enter a value:') 
     # Run the beep definition. 
     self.beepAway(nValue) 

    def beepAway(self, nValue): 
     # Beep nValue number of times, after each beep wait 2 seconds. 
     for i in range(int(nValue)): 
      java.awt.Toolkit.getDefaultToolkit().beep() 
      wait(2) 

# Run class 
Main() 
Problemi correlati