Jython: простой звуковой сигнал в Windows

Я работаю с Sikuli, который (я думаю) построен на Jython. Я хочу сделать скрипт, который издает небольшой нежный звуковой сигнал, чтобы привлечь внимание пользователя. (Это в Windows.)

Как я могу это сделать? Я вижу, что модуль winsound недоступен на Jython.

(Обратите внимание, что я хочу использовать звуковую карту, а не встроенный звуковой сигнал.)


person Ram Rachum    schedule 02.11.2010    source источник
comment
К вашему сведению, стандартный способ привлечь внимание пользователя в Windows — мигнуть панелью задач; воспроизведение звука раздражает.   -  person Glenn Maynard    schedule 02.11.2010
comment
Спасибо. Клиент попросил звуковой сигнал.   -  person Ram Rachum    schedule 02.11.2010
comment
Звук далеко не прост, независимо от операционной системы или языковой среды. В Jython вы используете среду Java, поэтому вам следует искать что-то необычное.   -  person Michael Dillon    schedule 14.02.2011
comment
см. решение только с использованием python: stackoverflow.com/questions/4467240/   -  person Loic Mouchard    schedule 07.03.2016


Ответы (6)


Вы можете сделать это, используя командную строку:

Выполните «copy con beep.txt», введите [ctrl+G] в качестве ввода, а затем [ctrl+Z], а затем [Enter] для выхода.

Затем запустите «type beep.txt», и вы услышите звуковой сигнал.

Вы можете поместить «type beep.txt» в пакетный файл или использовать Ctrl + G непосредственно в пакетном режиме (что приведет к ошибке в командной строке со звуком).

person Sergey Stefurak    schedule 02.03.2011

Поскольку у нас есть доступ к уровню Java в Sikuli (благодаря Jython), в принципе это должно работать:

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

Тест пройден на Windows 7. Подробное объяснение можно найти здесь.

person David    schedule 09.09.2012

Поскольку вы используете Sikuli, вы можете сделать следующее.

Добавьте любой медиафайл, например любой .mp3, на рабочий стол компьютера с Windows, свяжите файл с медиаплеером. Захватите изображение и включите:

щелчок (шаблон (desktopnoiseicon.png)

в качестве альтернативы вы можете выполнить ту же задачу с openApp (C:\noise.mp3)

Sikuli дает возможность найти множество обходных путей

в SikuluXrc2 вы даже можете указать URL-адрес из своего кода без необходимости установки пути к пакету

person Surfdork    schedule 13.02.2011

Если запускать скрипты Sikuli из командной строки, а не через IDE, то можно просто прописать в консоль символ BEL и она запищит. Это также работает через RDP.

Изменить: в Windows 7 теперь подается звуковой сигнал через звуковую карту, как вы и просили. В Windows XP он подаст звуковой сигнал во внутренний динамик (если он есть).

Например. следующие звуковые сигналы дважды:

print("\007\007")
person wardies    schedule 13.05.2014

Поскольку вы просили простой скрипт 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()
person Tenzin    schedule 28.08.2015

person    schedule
comment
Любой способ сделать это, не имея дело с файлом? Например, делать синусоиду или что-то в этом роде? Я совершенно не разбираюсь в Java. - person Ram Rachum; 02.11.2010
comment
Конечно, выполните цикл: амплитуда * (math.sin(частота * 2 * math.pi * count), чтобы создать синусоидальную волну, где count — это временной шаг. По мере выполнения итерации сохраните результат, и у вас будет по существу массив необработанных звуковых данных. Делайте с ним, что хотите. - person user489041; 02.11.2010
comment
Блин, там написано cannot import name newAudioClip. Вероятно, он не входит в состав Sikuli. Любая подсказка, что делать? - person Ram Rachum; 05.11.2010
comment
Хм, попробуйте второй пример. Дай мне знать, если это работает. - person user489041; 05.11.2010