2010-11-02 16 views
7

Tôi đang làm việc với Sikuli, mà (tôi nghĩ) được xây dựng trên Jython. Tôi muốn tạo một kịch bản làm một tiếng bíp nhỏ để thu hút sự chú ý của người dùng. (Đây là trên Windows.)Jython: Thực hiện một tiếng bíp đơn giản trên Windows

Tôi làm cách nào để thực hiện việc này? Tôi thấy rằng mô-đun winsound không có sẵn trên Jython.

(Lưu ý rằng tôi muốn sử dụng card âm thanh, không được xây dựng trong máy nhắn.)

+3

FYI, cách tiêu chuẩn nhận được sự chú ý của người dùng trong Windows là để flash thanh tác vụ; chơi một âm thanh gây phiền nhiễu. –

+0

Cảm ơn. Khách hàng yêu cầu một tiếng bíp. –

+0

Âm thanh là bất cứ điều gì ngoại trừ đơn giản, bất kể môi trường ngôn ngữ O/S. Trong Jython, bạn đang sử dụng môi trường Java vì vậy đó là nơi bạn nên tìm kiếm bất cứ điều gì ngoài bình thường. –

Trả lời

3

Nếu Jython của nó, sau đó chỉ cần sử dụng bất kỳ lớp Java mà chơi âm thanh. Có hàng tấn thứ đó.

 
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

Bất kỳ cách nào để thực hiện điều đó mà không cần xử lý tệp? Giống như, làm một làn sóng sin hay gì đó? Tôi hoàn toàn không biết gì về Java. –

+0

Chắc chắn là, lặp lại: biên độ * (math.sin (tần số * 2 * math.pi * đếm) để tạo ra một làn sóng tội lỗi mà đếm là bước thời gian. Khi bạn lặp lại, lưu kết quả, và bạn sẽ về cơ bản là Một số dữ liệu âm thanh thô Hãy làm theo nó những gì bạn muốn – user489041

+0

Chết tiệt, nó nói 'không thể nhập tên newAudioClip' Có lẽ nó không được bao gồm trong Sikuli.Bất cứ điều gì phải làm? –

0

Vì bạn đang sử dụng Sikuli bạn có thể để sau.

Thêm bất kỳ tệp phương tiện nào, chẳng hạn như bất kỳ tệp .mp3 nào trên máy tính để bàn của máy tính windows, liên kết tệp với trình phát đa phương tiện. Chụp ảnh và bao gồm:

nhấp chuột (mẫu (desktopnoiseicon.png)

alternatley bạn có thể thực hiện các nhiệm vụ cùng với openApp (C: \ noise.mp3)

Sikuli cho khả năng tìm thấy nhiều cách giải quyết

trong SikuluXrc2 bạn thậm chí có thể trỏ đến một URL từ mã của bạn mà không cần thiết lập một con đường bó

2

bạn có thể làm fllowing sử dụng dòng lệnh:

Execute "copy con beep.txt" loại [Ctrl + G] như là đầu vào và sau đó [Ctrl + Z] sau đó [Enter] để thoát

Sau đó chạy "loại beep.txt" và bạn sẽ nghe thấy một tiếng bíp.

Bạn có thể đặt "loại beep.txt" trong một tập tin batch hoặc sử dụng tổ hợp phím Ctrl + G trực tiếp trong hàng loạt (mà sẽ tạo ra lỗi trong dòng lệnh với âm thanh)

1

Kể từ khi chúng tôi được tiếp cận với mức Java trong Sikuli (nhờ Jython), điều này chủ yếu nên làm việc:

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

thử nghiệm thông qua trên cửa sổ 7. Bạn có thể nhận được một số lời giải thích chi tiết here.

0

Nếu bạn chạy tập lệnh Sikuli từ dòng lệnh, thay vì thông qua IDE, bạn có thể chỉ cần viết ký tự BEL vào bảng điều khiển và nó sẽ phát ra tiếng bíp. Điều này cũng hoạt động thông qua RDP.

Chỉnh sửa: trên Windows 7, giờ đây sẽ bíp qua thẻ âm thanh, như bạn đã yêu cầu. Trên Windows XP, nó sẽ phát ra tiếng bíp bên trong loa (nếu có).

Ví dụ:tiếng bíp sau hai lần:

print("\007\007") 
0

Kể từ khi bạn yêu cầu một kịch bản Sikuli/Python đơn giản, tôi đã kiểm tra này ra ngoài bản thân mình trên 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()