Подключение ActiveX к Wialon

Подключение к COM-серверу ActiveX осуществляется через конструирование объекта WialonActiveX.WialonConnection, реализующего интерфейс IWialonConnection. Пример кода с комментариями (но без проверок на ошибки) на Visual Basic:

        ' Главный компонент системы, обеспечивающий подключение к Wialon
        Dim Wialon As Object
        ' Коллекция доступных объектов
        Dim Units As Object
        ' Отдельный объект
        Dim Unit As Object
        ' Строка ошибки Wialon
        Dim ErrStr As String
        ' Коллекция сообщений от объекта
        Dim Msgs As Object
        ' Счетчик
        Dim i As Long
        ' Количество объектов в коллекции
        Dim CountOfUnits As Long
 
        ' Создание объекта для подключения к Wialon  (для 64-битных приложений — WialonActiveX64)
        Wialon = CreateObject("WialonActiveX.WialonConnection")
        ' Проверка подключения
        If Wialon Is Nothing Then
            ' Если ошибка, то вывод сообщения
            MsgBox("No Object")
            Return
        End If
 
        ' Установка настроек соединения через прокси-сервер
        Wialon.SetProxyMode "ProxyHost", 8080, "Login:Passw"
 
        ' Получение всех доступных объектов пользователю user с паролем passw,
        ' от сервера https://activex.gurtam.com (префикс необходим для подключения
        ' по защищенному соединению) на 443 порту, без прокси сервера
        Units = Wialon.Login("https://activex.gurtam.com", 443, "user", "passw")
        ' Проверка доступности объектов
        If Units Is Nothing Then
            ' Если объекты недоступны, то получаем ошибку элемента ActiveX, а также ошибку от Wialon
            MsgBox("Error = " + Err.Number.ToString() + ": " + Err.Source.ToString() + " (" + Err.Description.ToString() + ")")
            ' Получение ошибки от сервера Wialon
            ErrStr = Wialon.GetLastError()
            MsgBox("Wialon error: " + ErrStr)
            Return
        End If
 
        ' Получение количества доступных объектов
        CountOfUnits = Units.Count
        ' Вывод сообщения о количестве доступных объектов на экран
        MsgBox("Units = " + CountOfUnits.ToString())
 
        ' Запуск цикла для перебора всех объектов
        For i = 1 To CountOfUnits
            ' Получение объекта из коллекции
            Unit = Units.Item(i)
            ' Проверка, получен ли объект
            If Unit Is Nothing Then
                ' Если объект не получен, скорее всего произошла ошибка — выход
                MsgBox("Not unit")
                Return
            End If
            ' Установка флага получения адресов по координатам. False — без адресов (быстрее). True — с адресами (медленнее).
            Unit.ResolveLocations (False)
            ' Получение сообщений от объекта за период (время в UNIX формате с 1 января 1970 г.)
            Msgs = Unit.GetMessages(1255112326, 1256312326)
            ' Проверка, получены ли сообщения
            If Msgs Is Nothing Then
                ' Вывод сообщения, что сообщения не получены
                MsgBox("No messages for unit: " + Unit.Name)
            Else
                ' Вывод количества сообщений, полученных от объекта
                MsgBox("Messages = " + Msgs.Count.ToString())
                ' Уменьшение значения счетчика ссылок для предоставленной вызываемой оболочки среды CLR
                ' (выполнять, если необходимо, явное освобождение памяти после использования объекта)
                System.Runtime.InteropServices.Marshal.ReleaseComObject(Msgs)
                ' Релиз объекта с сообщениями
                Msgs = Nothing
            End If
            ' Уменьшение значения счетчика ссылок для предоставленной вызываемой оболочки среды CLR
            ' (выполнять, если необходимо, явное освобождение памяти после использования объекта)
            System.Runtime.InteropServices.Marshal.ReleaseComObject(Unit)
            ' Релиз объекта с объектом :)
            Unit = Nothing
        Next i
        ' Уменьшение значения счетчика ссылок для предоставленной вызываемой оболочки среды CLR
        ' (выполнять, если необходимо, явное освобождение памяти после использования объекта)
        System.Runtime.InteropServices.Marshal.ReleaseComObject(Units)
        ' Всё, конец программы, больше не будем работать с этими объектами, делаем релиз
        Units = Nothing
        Wialon = Nothing
        ' Конец
        MsgBox("End")

Более подробный пример содержится в прилагающемся к дистрибутиву файле Exсel.

Follow us on Facebook Gurtam Wialon Twitter Gurtam Wialon info@gurtam.com   |   Copyright © 2002-2019 Gurtam