Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Не воспроизводится звук в скриптах по-изменению  (Прочитано 3687 раз)

Timothy Clement

  • Постоялец
  • ***
  • Сообщений: 166
  • ОАО Борисовский завод "Металлист"
    • Просмотр профиля
    • Полымя
Добрый день!
Обнаружилась следующая проблема при использовании функции PlayUserSound с параметром GetClientName (Версия 6.3.3):
- если скрипт вызван кнопкой, звук всегда воспроизводится
- в скрипте по-изменению если указать в первом параметре имя клиента, звук воспроизводится
- в скрипте по-изменению если указать в первом параметре GetClientName, звук НЕ воспроизводится

Для проверки создал тестовый проект - в нем 2 звука t1.ogg и t2.ogg. Добавил 2 кнопки для воспроизведения звуков по нажатию с следующим кодом:
Код: (delphi)
begin
  PlayUserSound(GetClientName,'t'+IntToStr(Sender.Tag)+'.ogg',False);
end.

Также добавил 1 внутреннюю переменную типа Word и привязал её к полю ввода. По-изменению этой переменной добавил второй скрипт:
Код: (delphi)
begin
  if TestWord.Value = 1 then PlayUserSound(GetClientName,'t'+IntToStr(TestWord.Value)+'.ogg',False);
  if TestWord.Value = 2 then PlayUserSound('serv','t'+IntToStr(TestWord.Value)+'.ogg',False);
end.

В итоге оба звука воспроизводятся при нажатии кнопок, при вводе в поле значения 2 звук воспроизводится, при вводе 1 нет. Проект и звуки прилагаю.

Simple Scada

  • Глобальный модератор
  • *****
  • Сообщений: 285
    • Просмотр профиля
    • Simple-Scada
Здравствуйте.

Цитировать
в скрипте по-изменению если указать в первом параметре GetClientName, звук НЕ воспроизводится
Функция GetClientName работает только в скриптах, к вызову которых приводят действия пользователя, выполненные через клиент скады - см. перечень по ссылке. В остальных скриптах данная функция работать не будет. Вызов GetClientName в этих скриптах будет всегда возвращать пустую строку, т.к. сервер не знает, для какого именно клиента нужно вернуть имя.