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

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

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - GridLink

Страницы: [1]
1
Здравствуйте.

Проверка ActiveState для проверки срабатывания кнопки - плохой вариант, т.к. событие клика по кнопке выполняется моментально, но присвоение значения выполняется асинхронно и может потребовать времени. И только после выполнения присвоения будет изменено активное состояние кнопки.
Выявить изменение бита переменной со 100% гарантией можно через событие OnDataChange кнопки с таким кодом:
, но проблема в том, что событие OnDataChange будет выполняться при каждом изменении переменной для всех кнопок сразу (ведь все эти кнопки связаны с одной переменной) и будет выдано сразу множество сообщений.
Насколько мы понимаем, описанный Вами скрипт нужен чтобы контролировать действия оператора. Но ведь можно использовать стандартный список действий оператора в меню сообщений. В этом списке выводится полная информация обо всех действиях оператора, включая нажатия на кнопки.

Здравствуйте.

Спасибо за ответ. Да Вы правильно поняли, мне нужен был этот скрипт для контроля действий операторов, из-за того, что стандартный список действий оператора не совсем удобочитаемый и выдает на мой взгляд лишнюю информацию. Поясню. - Там указывается название переменной, которая была 0, а стало 1 и т.д., а так же название кнопки из свойства кнопки - name.

Зачем руководству, если они потребуют отчет действий операторов к примеру, знать, что какая-то переменная была 0, а потом стала 1. :)
Возможно это где-то настраиваться, я не нашел по крайне мере ни в руководстве ни на форуме.

Я подумал, логичнее по нажатию кнопки запросить в скрипте в каком состоянии сейчас находится данная кнопка, и выводить ту информацию которая будет информативней и нужна, но оказывается не учел асинхронного присвоение значения состояний кнопок. По этому данный скрипт работает не совсем корректно. Далее пока ждал решения на форуме, я реализовал скрипт по событию OnDataChange, с запросом GetBit..., как Вы и предложили. Данный скрипт был мной забракован, ввиду множество сообщений, из-за изменения переменной. Пока в данном вопросе я не продвинулся. Есть идея написать глобальный скрипт который будет опрашивать в цикле состояния кнопок и присваивать их локальным переменным и уже с этих переменных писать универсальный скрипт, по событию OnClick. Пока что не садился за реализацию.

2
Всем привет. Столкнулся с проблемой работы универсального скрипта. Имеются 8 кнопок с фиксацией в SCADA, у всех кнопок одна и та же заданная переменная, каждая кнопка управляет своим битом в этой перемененной. Написал скрипт, который по нажатии кнопки, выдает одно из двух сообщений, в зависимости от того, в каком из состояний находится данная кнопка :
Код: (delphi)
begin
    if Sender is TM_Button then
      with Sender as TM_Button do
     case ActiveState of
      0: AddMessage(Now, mkMessage, Hint + ' отключено', TRUE, FALSE);
      1: AddMessage(Now, mkMessage, Hint + ' включено', TRUE, FALSE);
      end;
end.

У каждой кнопки в событии OnClick указал данный скрипт. В итоге данный скрипт нормально срабатывает по событию только у кнопки которая отвечает за 0-ой бит заданной переменной, у остальных 7-ми кнопок, нажимай не нажимай выходит только одно сообщение - "отключено". Возможно ли, что если кнопки которые управляют битами, применение универсальных скриптов ставиться под вопрос?. Возможно проблема в самом скрипте!?. Поправьте, если я не прав. Спасибо.

Страницы: [1]