Skip to content
  • There are no suggestions because the search field is empty.

OPC Data Client - OPC DA - VB.NET - Getting Server Information from Incoming Subscription Data

How do I determine what server my subscription callback data is coming from?

Example code demonstrating how to subscribe to an item and access data in the callback

Imports OpcLabs.EasyOpc.DataAccess
Imports System.Text

Public Class Form1

    'Define our client object
    Dim EasyDA As EasyDAClient                     

    'Define our Server object
    Dim TOPServer, KitServer As OpcLabs.EasyOpc.ServerDescriptor    

    'Define our item objects
    Dim TOPItem, KitItem As OpcLabs.EasyOpc.DataAccess.DAItemDescriptor

    'Define our group object
    Dim TOPGroup, KitGroup As OpcLabs.EasyOpc.DataAccess.DAGroupParameters

    'Create a State object that can be accessed in the callback.
    ' Allows for direct binding of data to a from control
    Dim State As Object

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        'create a new instance of the client object and setup event handler
        EasyDA = New EasyDAClient
        AddHandler EasyDA.ItemChanged, AddressOf Me.EasyDA_ItemChanged

        'connect to topserver
        'TOPServer = EasyDA.SubscribeItem("", "SWToolbox.TOPServer", Nothing, Nothing)
        TOPServer = New OpcLabs.EasyOpc.ServerDescriptor
        TOPItem = New OpcLabs.EasyOpc.DataAccess.DAItemDescriptor
        TOPGroup = New OpcLabs.EasyOpc.DataAccess.DAGroupParameters(5000)
        TOPServer.MachineName = "127.0.0.1"
        TOPServer.ServerClass = "SWToolbox.TOPServer.V5"
        TOPItem = "Channel_1.Device_1.Tag_1"

        EasyDA.SubscribeItem(TOPServer, TOPItem, TOPGroup, State)

        'connect to  Data .NET sample server
       KitServer = New OpcLabs.EasyOpc.ServerDescriptor
        KitItem = New OpcLabs.EasyOpc.DataAccess.DAItemDescriptor
        KitGroup = New OpcLabs.EasyOpc.DataAccess.DAGroupParameters(5000)
        KitServer.MachineName = "127.0.0.1"
        KitServer.ServerClass = "OPCLabs.KitServer.2"
        KitItem.ItemId = "Demo.Ramp"
        EasyDA.SubscribeItem(KitServer, KitItem, KitGroup, State)

    End Sub

    'event handler that receives new data, displays the data in a Listbox
    Private Sub EasyDA_ItemChanged(ByVal sender As Object, ByVal e As EasyDAItemChangedEventArgs)

        Dim s As StringBuilder = New StringBuilder
        s.AppendFormat("" & vbLf & "Pc: {0}", e.ServerDescriptor.MachineName)
        s.AppendFormat("" & vbLf & "Server: {0}", e.ServerDescriptor.ServerClass)
        s.AppendFormat("" & vbLf & vbTab & "Item: {0}", e.ItemDescriptor.ItemId)
        s.AppendFormat("" & vbLf & vbTab & "Value: {0}", e.Vtq.Value)
        s.AppendFormat("" & vbLf & vbTab & "Quality: {0}", e.Vtq.Timestamp)
        s.AppendFormat("" & vbLf & vbTab & "Time: {0}", e.Vtq.Timestamp)
        ListBox1.Items.Add(s)
    End Sub

End Class