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