2010-11-02 10 views
7

Ich arbeite mit Sikuli, die (glaube ich) auf Jython aufgebaut ist. Ich möchte ein Skript erstellen, das einen kleinen sanften Signalton ausführt, um die Aufmerksamkeit des Benutzers zu erregen. (Dies ist unter Windows.)Jython: Einen einfachen Piepton unter Windows machen

Wie kann ich das tun? Ich sehe, dass das Modul winsound nicht auf Jython verfügbar ist.

(Beachten Sie, dass ich die Soundkarte verwenden wollen, nicht den eingebauten Beeper.)

+3

FYI, der normale Weg, die Aufmerksamkeit eines Benutzers des Erhaltens in Windows soll die Taskleiste blinken; ein Sound zu spielen ist nervig. –

+0

Danke. Der Kunde fragte nach einem Piepton. –

+0

Sound ist alles andere als einfach, unabhängig von der O/S- oder Sprachumgebung. In Jython verwenden Sie die Java-Umgebung, in der Sie nach etwas Außergewöhnlichem suchen sollten. –

Antwort

3

Wenn seine Jython, dann eine der Java-Klassen verwenden nur das Sound spielen. Es gibt Tonnen von ihnen.

 
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

Jeder Weg, um dies zu tun, ohne mit einer Datei zu tun? Wie macht man eine Sinuswelle oder so? Ich bin völlig ignorant in Java. –

+0

Sicher ist, Schleife über: Amplitude * (math.sin (Häufigkeit * 2 * math.pi * count), um eine Sinuswelle zu erzeugen, wo count ist der Zeitschritt.Wenn Sie iterieren, speichern Sie das Ergebnis, und Sie werden im Wesentlichen ein Array von Roh-Sound-Daten.Machen Sie mit, was Sie möchten – user489041

+0

Verdammt, es sagt 'kann Name newAudioClip nicht importieren.Wahrscheinlich ist es nicht in Sikuli enthalten.Jede Ahnung, was zu tun ist? –

0

Da Sie Sikuli verwenden Sie die folgende können.

Fügen Sie Mediendateien wie .mp3 auf dem Desktop eines Windows-Rechners hinzu, und ordnen Sie die Datei einem Medienplayer zu. Nehmen Sie das Bild und beinhalten:

Klick (Muster (desktopnoiseicon.png)

alternatley Sie die gleiche Aufgabe mit OPENapp ausführen kann (C: \ noise.mp3)

Sikuli gibt die Möglichkeit, zahlreiche zu finden Abhilfen

in SikuluXrc2 könnte man sogar ohne die Notwendigkeit, eine URL aus dem Code zeigt ein Bündel Pfad der Einstellung

2

Sie die fllowing Befehlszeile tun können:

Execute "copy con beep.txt" Typ [ctrl + G] als Eingabe und dann [Strg + Z], gefolgt von [Enter]

Dann laufen "Typ beep.txt" und Sie verlassen wird einen Piepton hören.

können Sie platzieren „Typ beep.txt“ in einer Batch-Datei oder verwenden Sie Strg + G direkt im Batch (die Fehler in der Befehlszeile mit Ton erzeugen würde)

1

Da haben wir Zugriff auf die Java-Ebene in Sikuli (dank Jython), sollte dies in erster Linie arbeiten:

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

Test bestanden auf Windows 7. Sie here eine detaillierte Erklärung bekommen kann.

0

Wenn Sie Sikuli-Skripts über die Befehlszeile und nicht über die IDE ausführen, können Sie einfach das Zeichen BEL in die Konsole schreiben, und es ertönt ein Signalton. Dies funktioniert auch über RDP.

Bearbeiten: unter Windows 7, wird dies jetzt durch die Soundkarte piepsen, wie Sie gefragt haben. Unter Windows XP gibt es einen Piepton zum internen Lautsprecher (falls vorhanden).

z.zweimal die folgenden Töne:

print("\007\007") 
0

Da Sie für ein einfaches Sikuli/Python-Skript gefragt, testete ich dieses heraus selbst unter 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() 
Verwandte Themen