Создание элемента управления ActiveX для SCADA Vijeo Citect с помощью Microsoft Visual C# 2012

Вернемся обратно в Graphics Builder с отрытой страницей Test. Откроем диалоговое окно свойств элемента управления ActiveX MyFirstActiveX.SampleUI, и свяжем каждое свойство с соответствующим тегом, как показано ниже в таблице (для примера, на рис. 13 показано связывание свойства FloatProperty с соответствующим тегом CitectFloat):

Название свойства  Имя тега  Обновление тега по событию
FloatProperty CitectFloat OnValueChanged
IntProperty CitectInt OnValueChanged
StringProperty CitectString OnValueChanged
 

Cвязывание свойства FloatProperty элемента управления с соответствующим тегом CitectFloat Vijeo Citect

Рис. 13. Связывание свойства FloatProperty элемента управления с соответствующим тегом CitectFloat Vijeo Citect

Теперь, когда будет происходить событие OnValueChanged, Vijeo Citect будет получать значение соответствующего свойства элемент управления ActiveX и обновлять соответствующий тег Vijeo Citect, привязанный к этому свойству.

Программный доступ к элементу управления ActiveX
с помощью Cicode

Используя Cicode можно получить доступ к свойствам и методам элемента управления ActiveX. В этой части статьи мы продемонстрируем как с помощью Cicode выполнять следующие действия:

  • Вызывать методы (Выполнять методы предоставляемые элементом управления ActiveX)
  • Устанавливать свойства (Записывать значения в свойства элемента управления ActiveX)
  • Получать свойства (Читать значения свойств элемента управления ActiveX)
  • Подписываться на события (Выполнять функции Cicode, когда возникают события в ActiveX)

Перед началом использования Cicode, необходимо понять, как обратиться или по-другому как получить ссылку на конкретный элемент управления ActiveX находящийся на графической странице Vijeo Citect из Cicode. Для этого у каждого элемента управления существует два свойства:

  • Object Name (Имя объекта)
  • Event Class (Класс события)

Идентификация элемента управления на графической странице Vijeo Citect

Рис. 14. Идентификация элемента управления на графической странице Vijeo Citect

  • Object Name: используется в Cicode для получения ссылки на элемент управления ActiveX. Получив ссылку, можно использовать ее для записи и чтения значений свойств, а также вызова методов предоставляемых элементом управления.
  • Event Classиспользуется в Cicode для подписки на события предоставляемые элементом управления ActiveX.

Теперь создадим новый файл для функций Cicode с помощью Citect Explorer как показано на рис. 15.

Создания файла Cicode с помощью Citect Explorer

Рис. 15. Создания файла для функций Cicode с помощью Citect Explorer

Вызов метода предоставляемого элементом управления ActiveX

Элемент управления ActiveX, созданный в этой статье, предоставляет 2 метода (см. определение интерфейса IMyFirstActiveX):

  • SampleMethod ()
  • SampleMethodWithArgs (string arg)

Чтобы вызывать эти методы, мы можем определить функции на Cicode, как показано ниже:

FUNCTION CallActiveXMethod()
        OBJECT hObject = ObjectByName("AN503");
        _ObjectCallMethod(hObject, "SampleMethod");
END

и

FUNCTION CallActiveXMethodWithArg(STRING arg)
        OBJECT hObject = ObjectByName("AN503");
        _ObjectCallMethod(hObject, "SampleMethodWithArgs", arg);
END

Функция ObjectByName () используется в нашем Cicode, чтобы помочь нам получить ссылку на элемент управления ActiveX. Эта ссылка используется _ObjectCallMethod () для вызова/выполнения предоставляемых элементом управления ActiveX методов.

Вторая функция CallActiveXMethodWithArg(), показывает как функция _ObjectCallMethod () позволяет передать более чем 2 аргумента, дополнительные аргументы используются для передачи их методу элемента управления ActiveX, который будет вызван.

Примечание: Для более детальной информации смотрите встроенную или веб-помощь по Сicode функциям.?

Запись и чтение значений свойств, предоставляемых элементом управления ActiveX

Запись

Элемент управления ActiveX предоставляет 3 свойства:

  • FloatProperty
  • IntProperty
  • StringProperty

Эти свойства поддерживают методы доступа как GET, так и SET. Это означает, что мы может и читать и писать в эти свойства.

Чтобы сильно не усложнять код, мы можем определить одну функцию на Cicode, которая позволит нам писать в любое из этих свойств. Ниже приведен ее код.

FUNCTION SetActiveXProperty(STRING propertyname, STRING propertyvalue)
        OBJECT hObject = ObjectByName("AN503");
        _ObjectSetProperty(hObject, propertyname, propertyvalue);
END

Функция _ObjectSetProperty() позволяет нам писать в свойство требуемое значение. Первый аргумент определяет контекст элемента управления ActiveX. Второй аргумент используется для определения имени свойства, в которое необходимо писать значение, а третий аргумент указывает какое значение необходимо писать. Второй и третий аргументы имеют строковый тип.

Чтение

Чтение значения свойства предоставляемого элементом управления ActiveX очень похоже на запись. Главное отличие в том, что функция возвращает значение и в коде, для чтения свойства, используется функция _ObjectGetProperty(). Код функции чтения свойства приведен ниже.

STRING FUNCTION GetActiveXProperty(STRING propertyname)
        STRING strValue;

        OBJECT hObject = ObjectByName("AN503");
        strValue = _ObjectGetProperty(hObject, propertyname);

        RETURN strValue;
END

_ObjectGetProperty() – возвращает значение свойства как строку, которая, в свою очередь, возвращается нашей функцией GetActiveXProperty().

Страницы

Теги: