ЖУРНАЛ СТА 4/2009

92 СТА 4/2009 www.cta.ru В VBA коде объекта ThisDisplay (экранная форма GraphWorX) необходимо написать следующий код: Private Sub GwxDisplay_PostRuntimeStart() UserForm1.Show End Sub Данная процедура выполняется автоматически после перехода экранной формы в режим исполнения и иници ирует объект UserForm1 (созданную нами VBA форму, внешний вид которой представлен на рис. 3). Запустить выполнение этой процедуры можно также по нажатию кнопки или по другому событию объекта ThisDisplay. Описанный метод имеет ряд недостатков, главными из которых является использование нового окна Windows и невозможность выполнения VBA инструкций при публи кации проекта в Web (для этой задачи у ICONICS имеется специальный программный продукт WebHMI). С ОЗДАНИЕ СОБСТВЕННОГО A CTIVE X ОБЪЕКТА Довольно распространённым методом решения данной задачи является создание собственного объекта ActiveX Control, который будет использоваться в качестве контей нера для ActiveX объекта IP видеокамеры. Такой объект можно создать в различных средах прог раммирования. В данном примере мы будем использовать Visual Basic 6.0 из состава пакета Visual Studio 6.0. При создании нового проекта необходимо выбрать тип ActiveX Control (рис. 4). Далее необходимо импортировать в форму объекта ActiveX компонент IP видеокамеры. Для этого нужно с помощью команды Components меню Project подключить библиотеку данного объекта анало гично тому, как мы делали это в предыдущем пункте, а за тем появившийся на панели ToolBox объект импортиро вать в форму создаваемого ActiveX Control. Для выполне ния описанного действия подключаемая библиотека должна быть предварительно зарегистрирована в системе. В окне текстового кода создаваемого объекта пишем: Public IP As String Public Sub Play() UserControl.Gif89a1.RemoteHost = IP UserControl.Gif89a1.Play End Sub Public Sub Stopplay() UserControl.Gif89a1.Stop End Sub Private Sub UserControl_Initialize() UserControl.Gif89a1.RemotePort = 8481 UserControl.Gif89a1.Timeout = 5 UserControl.Gif89a1.AuthType = 1 UserControl.Gif89a1.PreviewFrameRate = 1 UserControl.Gif89a1.PreviewWidth = 320 UserControl.Gif89a1.PreviewHeight = 240 UserControl.Gif89a1.Width = 320 UserControl.Gif89a1.Height = 240 End Sub Строки Public IP As String, Public Sub Play() и Public Sub Stopplay() объявляют свойство IP и методы начала и оста нова трансляции изображения соответственно. При инициализации созданного нами объекта (проце дура UserControl_Initialize()) задаются значения свойств ActiveX Control видеокамеры (объект Gif89a1). Теперь скомпилируем созданный нами объект (команда Build Outputs меню Tools/Publish) и зарегистрируем его в операционной системе с помощью команды regsvr32 (в моём примере команда имеет вид regsvr32 c:\IPCam.ocx). Запустим компонент GraphWorX, создадим экранную форму и импортируем в неё скомпилированный ActiveX объект, как это описано в разделе «Интеграция со SCADA системами». В VBA коде объекта ThisDisplay (экранная форма GraphWorX) необходимо написать следующее: Private Sub GwxDisplay_PostRuntimeStart() ThisDisplay.Cam1.IP = «192.168.2.1» ThisDisplay.Cam1.Play End Sub Private Sub GwxDisplay_PreRuntimeStop() ThisDisplay.Cam1.Stopplay End Sub Процедура GwxDisplay_PostRuntimeStart() выполняется автоматически после перехода экранной формы в режим исполнения. Она присваивает свойству нашего ActiveX объекта IP адрес видеокамеры и инициирует выполнение метода Play. Данный метод присваивает значение пере менной IP соответствующему свойству исходного объекта и инициирует его метод Play, включающий трансляцию видеоизображения. Процедура GwxDisplay_PreRuntimeStop() выполняется автоматически перед переходом экранной формы в ре жим разработки. Она инициирует выполнение метода Stopplay созданного нами объекта. Данный метод выпол няет процедуру Stop ActiveX объекта видеокамеры, пре кращающую трансляцию изображения. Запустить выполнение этих процедур можно также по нажатию кнопки или по другому событию объекта ThisDisplay. Результат данного примера представлен на рис. 3. В ЗАПИСНУЮ КНИЖК У ИНЖЕ Н Е РА Рис. 4. Окно выбора типа создаваемого проекта в MS Visual Basic 6.0 © СТА-ПРЕСС

RkJQdWJsaXNoZXIy MTQ4NjUy