PDA

Просмотр полной версии : Звуковые оповещения на СПК207



РустамДж
01.10.2018, 12:30
Добрый день!
Согласно высланному мне примеру Евгением Кисловым, я добавил звуковое оповещение в СПК, создал переменную STRING указал путь к звуковому оповещению, добавил в Sound. При срабатывании переменной BOOL TRUE звуковое оповещение срабатывает, как становится FALSE перестает играть.
1. Как можно реализовать в СПК несколько звуковых оповещений, от разных условий чтобы срабатывала определенное звуковое оповещение?.
2. И чтобы звуковое оповещение доигрывала до конца не зависимо от состояния переменной?

Осинский Алексей
02.10.2018, 09:23
Добрый день!

1. Как можно реализовать в СПК несколько звуковых оповещений, от разных условий чтобы срабатывала определенное звуковое оповещение?.
Перед тем, как подать команду на воспроизведение аудиофайла задайте его имя на вкладке I/O Mapping:
38972
Не смотря на то, что тип указан как "ARRAY OF BYTE" на самом деле это строка длиной 80 символов.


2. И чтобы звуковое оповещение доигрывала до конца не зависимо от состояния переменной?
На текущий момент штатными средствами этого сделать нельзя.
Можно (воспользовавшись библиотекой CmpSysExec) давать команды Linux на воспроизведение файла следующего вида:


/usr/bin/aplay -N ПУТЬ_К_ФАЙЛУ


например так:



VAR
m_fb_rtPlayCommand : Standard.R_TRIG;
m_xPlaySound : BOOL;
END_VAR

m_fb_rtPlayCommand.CLK := m_xPlaySound;
m_fb_rtPlayCommand();
IF m_fb_rtPlayCommand.Q THEN
CmpSysExec.sysExecute('/usr/bin/aplay -N ПУТЬ_К_ФАЙЛУ');
END_IF

По переднему фронту m_xPlaySound будет проигран файл ПУТЬ_К_ФАЙЛУ 1 раз.

Примечание:
Ключ -N дает плееру команду на проигрывание в неблокирующем режиме. Т.е. если аудиоустройство занято воспроизведением другого файла, то новый файл не будет проигран.
Без этого ключа плеер, если устройство занято, поставит файл в очередь на воспроизведение.