This is topic Вывод звука in forum Общие вопросы / Common questions at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/45/t/000152.html

Posted by Kidim1975 (Участник № / Member № 4421) on :
 
Возникла проблема. Имеется канал класса событие. к нему привязан словарь сообщений, в котором всем сообщениям (кроме нулевого) установлено напрвление AR+G+PlayLoopStop и заданы сообщения. В папку проекта выложены файлы с именами соответствующими сообщениям и типом wav. При возникновении события начинает бесконечно воспроизводиться файл соответствующий первому сообщению - то что и нужно, но при квитировании события или его ичезновении и пр. первый файл прерывается а вот вместо воспроизведения других циклически выводиться стандартный звук windows как будто нужный звуковой файл отсутствует. хотя он там точно есть и имена 100% соответствуют. Что не так?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Если имя файла не содержит служебных символов и пробелов, то файл должен вызываться.
Если не получится, присылайте на техподдержку проект со звуковыми файлами и с подробными комментариями по моделированию ситуации.
 
Posted by Kidim1975 (Участник № / Member № 4421) on :
 
Проект отправлен на 'hotline@adastra.ru'. Кстати, воспроизведению первого файла пробелы в имени не мешают.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Если задать Отчет тревог, направить туда сообщения от канала СОБЫТИЕ, то можно увидеть фактические тексты сообщений, которые генерирует
канал СОБЫТИЕ.
Во всех случаях, когда звуковой файл не найден (звучит стандартный сигнал Windows), текст сообщения не совпадает с именем файла.

В сообщении кроме заданного Вами текста содержится еще и временная метка.
Это сделано специально для канала СОБЫТИЕ, который может получать от источника данные с его собственными метками времени, чтобы можно было при соответствующих настройках фиксировать эти метки времени в Отчете тревог.
Таким образом,Ваша идея может быть реализована только путем создания дополнительного числового канала (например, HEX16 с установленным флажком DEC), копирующего значения канала СОБЫТИЕ и генерирующего соответствующие звуковые сообщения.
 
Posted by Kidim1975 (Участник № / Member № 4421) on :
 
Да, я понял. Спасибо. Непонятно правда, почему возникновение события не обременяется такой меткой времени, а квитирование и исчезновение эту метку получают. Может быть потому, что воспроизведение завукового файла таким методом тестировалось разработчиками только в одном варианте? Неплохо бы в руководстве отметить эту особенность канала событие, чтобы никто не пытался сгенрировать звуковое сообщение на квитирование, например.
Ваше предложение начет канала НЕХ16 я не очень понял - каким образом этот канал должен генрировать звуковые сообщения? тоже через словарь сообщений? То есть на установку/снятие конкретного бита?
И еще один вопрос в тему - в руководстве написано: "Монитор ведет очередь воспроизведения звуковых файлов." Размер очереди можно определить, а можно ли определить ее состав? И как я понял при циклическом воспроизведении одного файла размер очереди будет показывать 0, а можно ли определить воспроизводится ли что-то в данный момент?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. Формировать звуковые сообщения через канал НЕХ16 нужно тоже через словарь сообщений.
"Если канал HEX16 связан со словарем, алгоритм генерации сообщений зависит от вида представления канала (флага DEC (84, HD) – см. Канал класса HEX16 ):
если HD=0 (вид представления HEX), сообщение генерируется при изменении любого бита реального значения;
если HD=1 (вид представления DEC), сообщение генерируется при каждом изменении реального значения канала. Текст сообщения зависит от нового значения канала:
при R=0...31 в ОТ выводится сообщение из словаря с соответствующим номером;
при других значениях R в ОТ выводится выражение вида =<число>, где <число> – величина реального значения канала (DEC). "

2. Очередь звуковых файлов динамическая. Прочитать ее текущий состав нельзя.
 
Posted by Kidim1975 (Участник № / Member № 4421) on :
 
Спасибо. Понял. Придется мне писать программу которая будет управлять выводом сообщений. Но может я ошибаюсь и есть другой способ? Если есть, подскажите пожалуйста. Задача такая: Имеется несколько независимых событий при возникновении любого из них нужно циклически выводить его сообщение. Однако если при этом возникло и второе событи то бесконечно должны выводится уже два сообщения по-очереди. Ну и так далее сколько активных событий столько сообщений должны крутиться в цикле. если событие квитируется или исчезает, выдается об этом подтверждающее сообщение (добавляется в очередь) а сообщение о соответствующем событии исчезает остаются только активные события. Ну и, естественно, чтобы очередь сообщений не разрасталась до бесконечности.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Такую задачу придется решать созданием Вашей пользовательской программы в проекте.
 
Posted by Kidim1975 (Участник № / Member № 4421) on :
 
Да, спасибо. Я уже почти сделал. Только одно работает не так как я ожидал - если я в канал привязанный к @Sound_File вторично посылаю тоже самое значение, он не повторяет воспроизведение. Вероятно канал думает что значение не изменилось и не отрабатывает его. Приходится для повторения одного и того же звукового файла в промежутке посылать в канал другое значение.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Достаточно одновременно с подачей значения в канал, привязанный к @Sound_File, взвести его атрибут EXEC (39). Канал будет отрабатывать даже в том случае, если его значение не измениллось.
 
Posted by Kidim1975 (Участник № / Member № 4421) on :
 
Спасибо, я что-то стормозил.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2