2010-11-02 77 views
7

我正在與Sikuli一起工作,我認爲這是基於Jython構建的。我想做一個小小的溫柔嘟嘟的腳本來吸引用戶的注意力。 (這是在Windows上。)Jython:在Windows上發出簡單的嘟嘟聲

我該怎麼做?我發現winsound模塊在Jython上不可用。

(請注意,我想使用的聲卡,而不是內置蜂鳴器。)

+3

僅供參考,讓用戶的注意力的標準方式Windows將閃爍任務欄;播放聲音很煩人。 – 2010-11-02 14:52:24

+0

謝謝。客戶要求發出嘟嘟聲。 – 2010-11-02 17:56:58

+0

無論O/S或語言環境如何,聲音都非常簡單。在Jython中,您使用的是Java環境,因此您應該在這裏尋找任何不尋常的東西。 – 2011-02-14 01:15:46

回答

3

如果它的Jython,那麼就使用任何播放聲音的Java類。他們有很多。

 
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

任何方式來做到這一點,而不處理文件?喜歡,做一個正弦波或什麼?我在Java中完全無知。 – 2010-11-02 17:57:46

+0

當然,循環:振幅*(math.sin(頻率* 2 * math.pi *計數)來產生一個正弦波,其中count是時間步長,當您迭代時,保存結果,您將基本上 – user489041 2010-11-02 19:10:55

+0

該死的,它說'不能輸入名字newAudioClip'。可能它不包含在Sikuli中,任何線索怎麼辦? – 2010-11-05 11:33:16

0

由於您使用Sikuli你可以到以下。

在Windows機器的桌面上添加任何媒體文件,例如任何.mp3,將文件分配給媒體播放器。捕獲圖像,其中包括:

點擊(模式(desktopnoiseicon.png)

alternatley你可以用openApp(C執行相同的任務:\ noise.mp3)

Sikuli給找到無數的能力解決方法

在SikuluXrc2你甚至可以指向一個URL從您的代碼,而您可以使用命令行做fllowing需要設置一個包路徑

2

的:

執行 「複製CON beep.txt」 型[Ctrl + G]作爲輸入,然後按[Ctrl + Z]接着[確定]退出

然後運行 「型beep.txt」 和你會聽到嗶嗶聲。

您可以將「類型beep.txt」在批處理文件或者直接在批量使用Ctrl + G(其將與聲音命令行產生錯誤)

1

既然我們有機會獲得在Sikuli的Java級別(感謝Jython的),這應該主要工作:在Windows 7 你可能會得到一些詳細的解釋here

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

測試通過。

0

如果您從命令行運行Sikuli腳本而不是通過IDE,那麼您只需將BEL字符寫入控制檯,它會發出蜂鳴聲。這也通過RDP起作用。

編輯:在Windows 7上,現在將按照您的要求在聲卡中發出蜂鳴聲。在Windows XP上,它會向內部揚聲器發出蜂鳴聲(如果有的話)。

E.g.以下蜂鳴聲兩次:

print("\007\007") 
0

既然你問了一個簡單的Sikuli/Python腳本,我測試了這出自己在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()