// This example shows how to set the filtering criteria to be used for the event subscription. using System; using System.Threading; using OpcLabs.EasyOpc.AlarmsAndEvents; using OpcLabs.EasyOpc.AlarmsAndEvents.OperationModel; using OpcLabs.EasyOpc.DataAccess; using OpcLabs.EasyOpc.OperationModel; namespace DocExamples.AlarmsAndEvents._AESubscriptionFilter { class Properties { // Instantiate the OPC-A&E client object. static readonly EasyAEClient AEClient = new EasyAEClient(); // Instantiate the OPC-DA client object. static readonly EasyDAClient DAClient = new EasyDAClient(); public static void Main1() { var eventHandler = new EasyAENotificationEventHandler(aeClient_Notification); AEClient.Notification += eventHandler; Console.WriteLine("Processing event notifications..."); var subscriptionFilter = new AESubscriptionFilter { Sources = new AENodeDescriptor[] { "Simulation.ConditionState1", "Simulation.ConditionState3" } }; // You can also filter using event types, categories, severity, and areas. int handle = AEClient.SubscribeEvents("", "OPCLabs.KitEventServer.2", 1000, null, subscriptionFilter); // Allow time for initial refresh Thread.Sleep(5 * 1000); // Set some events to active state. try { // The activation below will come from a source contained in a filter and the notification will arrive. DAClient.WriteItemValue("", "OPCLabs.KitServer.2", "SimulateEvents.ConditionState1.Activate", true); // The activation below will come from a source that is not contained in a filter and the notification will not arrive. DAClient.WriteItemValue("", "OPCLabs.KitServer.2", "SimulateEvents.ConditionState2.Activate", true); } catch (OpcException opcException) { Console.WriteLine("*** Failure: {0}", opcException.GetBaseException().Message); return; } Thread.Sleep(10 * 1000); AEClient.UnsubscribeEvents(handle); AEClient.Notification -= eventHandler; } // Notification event handler static void aeClient_Notification(object sender, EasyAENotificationEventArgs e) { Console.WriteLine(); if (!e.Succeeded) { Console.WriteLine("*** Failure: {0}", e.ErrorMessageBrief); return; } Console.WriteLine("Refresh: {0}", e.Refresh); Console.WriteLine("RefreshComplete: {0}", e.RefreshComplete); AEEventData eventData = e.EventData; if (!(eventData is null)) { Console.WriteLine("Event.QualifiedSourceName: {0}", eventData.QualifiedSourceName); Console.WriteLine("Event.Message: {0}", eventData.Message); Console.WriteLine("Event.Active: {0}", eventData.Active); Console.WriteLine("Event.Acknowledged: {0}", eventData.Acknowledged); } } } }
# This example shows how to set the filtering criteria to be used for the event subscription. # The QuickOPC package is needed. Install it using "pip install opclabs_quickopc". import opclabs_quickopc import time # Import .NET namespaces. from OpcLabs.EasyOpc import * from OpcLabs.EasyOpc.AlarmsAndEvents import * from OpcLabs.EasyOpc.DataAccess import * from OpcLabs.EasyOpc.OperationModel import * # Notification event handler def notification(sender, e): if not e.Succeeded: print('*** Failure: ', e.ErrorMessageBrief, sep='') return print('Refresh: ', e.Refresh, sep='') print('RefreshComplete: ', e.RefreshComplete, sep='') eventData = e.EventData if eventData is not None: print('Event.QualifiedSourceName: ', eventData.QualifiedSourceName, sep='') print('Event.Message: ', eventData.Message, sep='') print('Event.Active: ', eventData.Active, sep='') print('Event.Acknowledged: ', eventData.Acknowledged, sep='') # Instantiate the OPC-A&E client object. aeClient = EasyAEClient() # Instantiate the OPC-DA client object. daClient = EasyDAClient() # aeClient.Notification += notification print('Processing event notifications...') subscriptionFilter = AESubscriptionFilter() subscriptionFilter.Sources = [ AENodeDescriptor('Simulation.ConditionState1'), AENodeDescriptor('Simulation.ConditionState3'), ] # You can also filter using event types, categories, severity, and areas. handle = IEasyAEClientExtension.SubscribeEvents(aeClient, '', 'OPCLabs.KitEventServer.2', 1000, None, subscriptionFilter) # Allow time for initial refresh time.sleep(5) # Set some events to active state. try: # The activation below will come from a source contained in a filter and the notification will arrive. IEasyDAClientExtension.WriteItemValue(daClient, '', 'OPCLabs.KitServer.2', 'SimulateEvents.ConditionState1.Activate', True) # The activation below will come from a source that is not contained in a filter and the notification will not # arrive. IEasyDAClientExtension.WriteItemValue(daClient, '', 'OPCLabs.KitServer.2', 'SimulateEvents.ConditionState2.Activate', True) except OpcException as opcException: print('*** Failure: ' + opcException.GetBaseException().Message) exit() time.sleep(10) aeClient.UnsubscribeAllEvents() aeClient.Notification -= notification print('Finished.')
' This example shows how to set the filtering criteria to be used for the event subscription. Imports System.Threading Imports OpcLabs.EasyOpc.AlarmsAndEvents Imports OpcLabs.EasyOpc.AlarmsAndEvents.OperationModel Imports OpcLabs.EasyOpc.DataAccess Imports OpcLabs.EasyOpc.OperationModel Namespace AlarmsAndEvents._AESubscriptionFilter Friend Class Properties _ Private Shared ReadOnly AEClient As New EasyAEClient() _ Private Shared ReadOnly DAClient As New EasyDAClient() Public Shared Sub Main1() Dim eventHandler = New EasyAENotificationEventHandler(AddressOf AEClient_Notification) AddHandler AEClient.Notification, eventHandler Console.WriteLine("Processing event notifications...") Dim subscriptionFilter As New AESubscriptionFilter subscriptionFilter.Sources = New AENodeDescriptor() {"Simulation.ConditionState1", "Simulation.ConditionState3"} ' You can also filter using event types, categories, severity, and areas. Dim handle As Integer = AEClient.SubscribeEvents("", "OPCLabs.KitEventServer.2", 1000, Nothing, subscriptionFilter) ' Allow time for initial refresh Thread.Sleep(5 * 1000) ' Set some events to active state. Try ' The activation below will come from a source contained in a filter and the notification will arrive. DAClient.WriteItemValue("", "OPCLabs.KitServer.2", "SimulateEvents.ConditionState1.Activate", True) ' The activation below will come from a source that is not contained in a filter and the notification will not arrive. DAClient.WriteItemValue("", "OPCLabs.KitServer.2", "SimulateEvents.ConditionState2.Activate", True) Catch opcException As OpcException Console.WriteLine("*** Failure: {0}", opcException.GetBaseException().Message) Exit Sub End Try Thread.Sleep(10 * 1000) AEClient.UnsubscribeEvents(handle) RemoveHandler AEClient.Notification, eventHandler End Sub ' Notification event handler Private Shared Sub AEClient_Notification(ByVal sender As Object, ByVal e As EasyAENotificationEventArgs) Console.WriteLine() If Not e.Succeeded Then Console.WriteLine("*** Failure: {0}", e.ErrorMessageBrief) Exit Sub End If Console.WriteLine("Refresh: {0}", e.Refresh) Console.WriteLine("RefreshComplete: {0}", e.RefreshComplete) If e.EventData IsNot Nothing Then Dim eventData As AEEventData = e.EventData Console.WriteLine("EventData.QualifiedSourceName: {0}", eventData.QualifiedSourceName) Console.WriteLine("EventData.Message: {0}", eventData.Message) Console.WriteLine("EventData.Active: {0}", eventData.Active) Console.WriteLine("EventData.Acknowledged: {0}", eventData.Acknowledged) End If End Sub End Class End Namespace
Rem This example shows how to set the filtering criteria to be used for the event subscription. Option Explicit Dim DAClient: Set DAClient = CreateObject("OpcLabs.EasyOpc.DataAccess.EasyDAClient") Dim AEClient: Set AEClient = CreateObject("OpcLabs.EasyOpc.AlarmsAndEvents.EasyAEClient") WScript.ConnectObject AEClient, "AEClient_" WScript.Echo "Processing event notifications..." Dim ServerDescriptor: Set ServerDescriptor = CreateObject("OpcLabs.EasyOpc.ServerDescriptor") ServerDescriptor.ServerClass = "OPCLabs.KitEventServer.2" Dim SubscriptionFilter: Set SubscriptionFilter = CreateObject("OpcLabs.EasyOpc.AlarmsAndEvents.AESubscriptionFilter") Dim SourceDescriptor1: Set SourceDescriptor1 = CreateObject("OpcLabs.EasyOpc.AlarmsAndEvents.AENodeDescriptor") SourceDescriptor1.QualifiedName = "Simulation.ConditionState1" Dim SourceDescriptor2: Set SourceDescriptor2 = CreateObject("OpcLabs.EasyOpc.AlarmsAndEvents.AENodeDescriptor") SourceDescriptor2.QualifiedName = "Simulation.ConditionState3" SubscriptionFilter.Sources = Array(SourceDescriptor1, SourceDescriptor2) Rem You can also filter using event types, categories, severity, and areas. Dim SubscriptionParameters: Set SubscriptionParameters = CreateObject("OpcLabs.EasyOpc.AlarmsAndEvents.AESubscriptionParameters") SubscriptionParameters.Filter = SubscriptionFilter SubscriptionParameters.NotificationRate = 1000 Dim handle: handle = AEClient.SubscribeEvents(ServerDescriptor, SubscriptionParameters, True, Nothing) Rem Allow time for initial refresh WScript.Sleep 5*1000 WScript.Echo "Set some events to active state..." On Error Resume Next Rem The activation below will come from a source contained in a filter and the notification will arrive. DAClient.WriteItemValue "", "OPCLabs.KitServer.2", "SimulateEvents.ConditionState1.Activate", True Rem The activation below will come from a source that is not contained in a filter and the notification will not arrive. DAClient.WriteItemValue "", "OPCLabs.KitServer.2", "SimulateEvents.ConditionState2.Activate", True If Err.Number <> 0 Then WScript.Echo "*** Failure: " & Err.Source & ": " & Err.Description WScript.Quit End If On Error Goto 0 WScript.Sleep 10*1000 WScript.Echo "Unsubscribing..." AEClient.UnsubscribeEvents handle Rem Notification event handler Sub AEClient_Notification(Sender, e) If Not (e.Succeeded) Then WScript.Echo "*** Failure: " & e.ErrorMessageBrief Exit Sub End If WScript.Echo WScript.Echo "Refresh: " & e.Refresh WScript.Echo "RefreshComplete: " & e.RefreshComplete If Not (e.EventData Is Nothing) Then With e.EventData WScript.Echo "EventData.QualifiedSourceName: " & .QualifiedSourceName WScript.Echo "EventData.Message: " & .Message WScript.Echo "EventData.Active: " & .Active WScript.Echo "EventData.Acknowledged: " & .Acknowledged End With End If End Sub
Copyright © 2004-2023 CODE Consulting and Development, s.r.o., Plzen. All rights reserved. Web page: www.opclabs.com
Send Documentation Feedback. Resources: Knowledge Base. Technical support: Online Forums, FAQ.