Parameters
- millisecondsTimeout
- The number of milliseconds to wait, or System.Threading.Timeout.Infinite (-1) to wait indefinitely.
Return Value
null
if no event is available within the specified time.OpcLabs.EasyOpcClassic Assembly > OpcLabs.EasyOpc.DataAccess.ComTypes Namespace > _EasyDAClient Interface : PullItemChanged Method |
[CanBeNull()] EasyDAItemChangedEventArgs PullItemChanged( int millisecondsTimeout )
[CanBeNull()] EasyDAItemChangedEventArgs^ PullItemChanged( int millisecondsTimeout )
'Declaration
<CanBeNullAttribute()> Function PullItemChanged( _ ByVal millisecondsTimeout As Integer _ ) As EasyDAItemChangedEventArgs
'Usage
Dim instance As _EasyDAClient Dim millisecondsTimeout As Integer Dim value As EasyDAItemChangedEventArgs value = instance.PullItemChanged(millisecondsTimeout)
null
if no event is available within the specified time.Exception | Description |
---|---|
System.ArgumentException | One of the arguments provided to a method is not valid. This is a usage error, i.e. it will never occur (the exception will not be thrown) in a correctly written program. Your code should not catch this exception. |
System.ArgumentOutOfRangeException | The value of an argument is outside the allowable range of values as defined by the invoked method. This is a usage error, i.e. it will never occur (the exception will not be thrown) in a correctly written program. Your code should not catch this exception. |
// This example shows how to subscribe to item changes and obtain the events by pulling them. // // Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . using System; using OpcLabs.EasyOpc.DataAccess; using OpcLabs.EasyOpc.DataAccess.OperationModel; namespace DocExamples.DataAccess._EasyDAClient { partial class PullItemChanged { public static void Main1() { // Instantiate the client object. // In order to use event pull, you must set a non-zero queue capacity upfront. var client = new EasyDAClient { PullItemChangedQueueCapacity = 1000 }; Console.WriteLine("Subscribing item changes..."); client.SubscribeItem("", "OPCLabs.KitServer.2", "Simulation.Random", 1000); Console.WriteLine("Processing item changes for 1 minute..."); int endTick = Environment.TickCount + 60 * 1000; do { EasyDAItemChangedEventArgs eventArgs = client.PullItemChanged(2 * 1000); if (!(eventArgs is null)) // Handle the notification event Console.WriteLine(eventArgs); } while (Environment.TickCount < endTick); Console.WriteLine("Unsubscribing item changes..."); client.UnsubscribeAllItems(); Console.WriteLine("Finished."); } } }
# This example shows how to subscribe to item changes and obtain the events by pulling them. # # Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . #requires -Version 5.1 using namespace OpcLabs.EasyOpc.DataAccess # The path below assumes that the current directory is [ProductDir]/Examples-NET/PowerShell/Windows . Add-Type -Path "../../../Components/Opclabs.QuickOpc/net472/OpcLabs.EasyOpcClassicCore.dll" Add-Type -Path "../../../Components/Opclabs.QuickOpc/net472/OpcLabs.EasyOpcClassic.dll" Add-Type -Path "../../../Components/Opclabs.QuickOpc/net472/OpcLabs.EasyOpcClassicComponents.dll" # Instantiate the client object. $client = New-Object EasyDAClient # In order to use event pull, you must set a non-zero queue capacity upfront. $client.PullItemChangedQueueCapacity = 1000 Write-Host "Subscribing item..." [IEasyDAClientExtension]::SubscribeItem($client, "", "OPCLabs.KitServer.2", "Simulation.Random", 1000) Write-Host "Processing item changes for 1 minute..." $stopwatch = [System.Diagnostics.Stopwatch]::StartNew() while ($stopwatch.Elapsed.TotalSeconds -lt 60) { $eventArgs = [IEasyDAClientExtension]::PullItemChanged($client, 2*1000) if ($eventArgs -ne $null) { # Handle the notification event Write-Host $eventArgs } } Write-Host "Unsubscribing items..." $client.UnsubscribeAllItems() Write-Host "Finished."
# This example shows how to subscribe to item changes and obtain the events by pulling them. # # Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . # OPC client and subscriber examples in Python on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-Python . # The QuickOPC package is needed. Install it using "pip install opclabs_quickopc". import opclabs_quickopc import time # Import .NET namespaces. from OpcLabs.EasyOpc.DataAccess import * # Instantiate the client object client = EasyDAClient() # In order to use event pull, you must set a non-zero queue capacity upfront. client.PullItemChangedQueueCapacity = 1000 print('Subscribing item changes...') IEasyDAClientExtension.SubscribeItem(client, '', 'OPCLabs.KitServer.2', 'Simulation.Random', 1000) print('Processing item changes for 1 minute...') endTime = time.time() + 60 while time.time() < endTime: eventArgs = IEasyDAClientExtension.PullItemChanged(client, 2*1000) if eventArgs is not None: # Handle the notification event print(eventArgs) print('Unsubscribing item changes...') client.UnsubscribeAllItems() print('Finished.')
' This example shows how to subscribe to item changes and obtain the events by pulling them. ' ' Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . Imports OpcLabs.EasyOpc.DataAccess Imports OpcLabs.EasyOpc.DataAccess.OperationModel Namespace DataAccess._EasyDAClient Partial Friend Class PullItemChanged Public Shared Sub Main1() Dim client = New EasyDAClient() ' In order to use event pull, you must set a non-zero queue capacity upfront. client.PullItemChangedQueueCapacity = 1000 Console.WriteLine("Subscribing item changes...") client.SubscribeItem("", "OPCLabs.KitServer.2", "Simulation.Random", 1000) Console.WriteLine("Processing item changes for 1 minute...") Dim endTick As Integer = Environment.TickCount + 60 * 1000 Do Dim eventArgs As EasyDAItemChangedEventArgs = client.PullItemChanged(2 * 1000) If Not eventArgs Is Nothing Then ' Handle the notification event Console.WriteLine(eventArgs) End If Loop While Environment.TickCount < endTick Console.WriteLine("Unsubscribing item changes...") client.UnsubscribeAllItems() Console.WriteLine("Finished.") End Sub End Class End Namespace
// This example shows how to subscribe to changes of multiple items and obtain the item changed events by pulling them. // // Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . using System; using OpcLabs.EasyOpc.DataAccess; using OpcLabs.EasyOpc.DataAccess.OperationModel; namespace DocExamples.DataAccess._EasyDAClient { partial class PullItemChanged { public static void MultipleItems() { // Instantiate the client object. // In order to use event pull, you must set a non-zero queue capacity upfront. var client = new EasyDAClient { PullItemChangedQueueCapacity = 1000 }; Console.WriteLine("Subscribing item changes..."); client.SubscribeMultipleItems( new[] { new DAItemGroupArguments("", "OPCLabs.KitServer.2", "Simulation.Random", 1000, null), new DAItemGroupArguments("", "OPCLabs.KitServer.2", "Trends.Ramp (1 min)", 1000, null), new DAItemGroupArguments("", "OPCLabs.KitServer.2", "Trends.Sine (1 min)", 1000, null), // Intentionally specifying an unknown item here, to demonstrate its behavior. new DAItemGroupArguments("", "OPCLabs.KitServer.2", "SomeUnknownItem", 1000, null) }); Console.WriteLine("Processing item changes for 1 minute..."); int endTick = Environment.TickCount + 60 * 1000; do { EasyDAItemChangedEventArgs eventArgs = client.PullItemChanged(2 * 1000); if (!(eventArgs is null)) // Handle the notification event if (eventArgs.Succeeded) Console.WriteLine($"{eventArgs.Arguments.ItemDescriptor.ItemId}: {eventArgs.Vtq}"); else Console.WriteLine($"{eventArgs.Arguments.ItemDescriptor.ItemId} *** Failure: {eventArgs.ErrorMessageBrief}"); } while (Environment.TickCount < endTick); Console.WriteLine("Unsubscribing item changes..."); client.UnsubscribeAllItems(); Console.WriteLine("Finished."); } } }
# This example shows how to subscribe to changes of multiple items and obtain the item changed events by pulling them. # # Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . #requires -Version 5.1 using namespace OpcLabs.EasyOpc.DataAccess using namespace OpcLabs.EasyOpc.DataAccess.OperationModel # The path below assumes that the current directory is [ProductDir]/Examples-NET/PowerShell/Windows . Add-Type -Path "../../../Components/Opclabs.QuickOpc/net472/OpcLabs.EasyOpcClassicCore.dll" Add-Type -Path "../../../Components/Opclabs.QuickOpc/net472/OpcLabs.EasyOpcClassic.dll" Add-Type -Path "../../../Components/Opclabs.QuickOpc/net472/OpcLabs.EasyOpcClassicComponents.dll" # Instantiate the client object. $client = New-Object EasyDAClient # In order to use event pull, you must set a non-zero queue capacity upfront. $client.PullItemChangedQueueCapacity = 1000 Write-Host "Subscribing item changes..." $handleArray = [OpcLabs.EasyOpc.DataAccess.IEasyDAClientExtension]::SubscribeMultipleItems($client, @( (New-Object DAItemGroupArguments("", "OPCLabs.KitServer.2", "Simulation.Random", 1000, $null)), (New-Object DAItemGroupArguments("", "OPCLabs.KitServer.2", "Trends.Ramp (1 min)", 1000, $null)), (New-Object DAItemGroupArguments("", "OPCLabs.KitServer.2", "Trends.Sine (1 min)", 1000, $null)), # Intentionally specifying an unknown item here, to demonstrate its behavior. (New-Object DAItemGroupArguments("", "OPCLabs.KitServer.2", "SomeUnknownItem", 1000, $null)) )) Write-Host "Processing item changes for 1 minute..." $stopwatch = [System.Diagnostics.Stopwatch]::StartNew() while ($stopwatch.Elapsed.TotalSeconds -lt 60) { $eventArgs = [IEasyDAClientExtension]::PullItemChanged($client, 2*1000) if ($eventArgs -ne $null) { # Handle the notification event if ($eventArgs.Succeeded) { Write-Host "$($eventArgs.Arguments.ItemDescriptor.ItemId): $($eventArgs.Vtq)" } else { Write-Host "$($eventArgs.Arguments.ItemDescriptor.ItemId) *** Failure: $($eventArgs.ErrorMessageBrief)" } } } Write-Host "Unsubscribing item changes..." $client.UnsubscribeAllItems() Write-Host "Finished."
# This example shows how to subscribe to changes of multiple items and obtain the item changed events by pulling them. # # Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . # OPC client and subscriber examples in Python on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-Python . # The QuickOPC package is needed. Install it using "pip install opclabs_quickopc". import opclabs_quickopc import time # Import .NET namespaces. from OpcLabs.EasyOpc.DataAccess import * from OpcLabs.EasyOpc.DataAccess.OperationModel import * # Instantiate the client object client = EasyDAClient() # In order to use event pull, you must set a non-zero queue capacity upfront. client.PullItemChangedQueueCapacity = 1000 print('Subscribing item changes...') client.SubscribeMultipleItems([ EasyDAItemSubscriptionArguments('', 'OPCLabs.KitServer.2', 'Simulation.Random', 1000, None), EasyDAItemSubscriptionArguments('', 'OPCLabs.KitServer.2', 'Trends.Ramp (1 min)', 1000, None), EasyDAItemSubscriptionArguments('', 'OPCLabs.KitServer.2', 'Trends.Sine (1 min)', 1000, None), EasyDAItemSubscriptionArguments('', 'OPCLabs.KitServer.2', 'UnknownItem', 1000, None), ]) print('Processing item changes for 1 minute...') endTime = time.time() + 60 while time.time() < endTime: eventArgs = IEasyDAClientExtension.PullItemChanged(client, 2*1000) if eventArgs is not None: # Handle the notification event if (eventArgs.Succeeded): print(eventArgs.Arguments.ItemDescriptor.ItemId, ': ', eventArgs.Vtq, sep='') else: print(eventArgs.Arguments.ItemDescriptor.ItemId, ' *** Failure: ', eventArgs.ErrorMessageBrief, sep='') print('Unsubscribing item changes...') client.UnsubscribeAllItems() print('Finished.')
' This example shows how to subscribe to changes of multiple items and obtain the item changed events by pulling them. ' ' Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . Imports OpcLabs.EasyOpc.DataAccess Imports OpcLabs.EasyOpc.DataAccess.OperationModel Namespace DataAccess._EasyDAClient Partial Friend Class PullItemChanged Public Shared Sub MultipleItems() ' Instantiate the client object. ' In order to use event pull, you must set a non-zero queue capacity upfront. Dim client = New EasyDAClient With {.PullItemChangedQueueCapacity = 1000} Console.WriteLine("Subscribing item changes...") ' Intentionally specifying an unknown item here, to demonstrate its behavior. client.SubscribeMultipleItems( New DAItemGroupArguments() { New DAItemGroupArguments("", "OPCLabs.KitServer.2", "Simulation.Random", 1000, Nothing), New DAItemGroupArguments("", "OPCLabs.KitServer.2", "Trends.Ramp (1 min)", 1000, Nothing), New DAItemGroupArguments("", "OPCLabs.KitServer.2", "Trends.Sine (1 min)", 1000, Nothing), New DAItemGroupArguments("", "OPCLabs.KitServer.2", "SomeUnknownItem", 1000, Nothing) }) Console.WriteLine("Processing item changes for 1 minute...") Dim endTick As Integer = Environment.TickCount + 60 * 1000 Do Dim eventArgs As EasyDAItemChangedEventArgs = client.PullItemChanged(2 * 1000) If Not eventArgs Is Nothing Then ' Handle the notification event If eventArgs.Succeeded Then Console.WriteLine($"{eventArgs.Arguments.ItemDescriptor.ItemId}: {eventArgs.Vtq}") Else Console.WriteLine($"{eventArgs.Arguments.ItemDescriptor.ItemId} *** Failure: {eventArgs.ErrorMessageBrief}") End If End If Loop While Environment.TickCount < endTick Console.WriteLine("Unsubscribing item changes...") client.UnsubscribeAllItems() Console.WriteLine("Finished.") End Sub End Class End Namespace
// This example shows how to subscribe to OPC XML-DA item changes and obtain the events by pulling them. // // Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . using System; using OpcLabs.EasyOpc.DataAccess; using OpcLabs.EasyOpc.DataAccess.OperationModel; namespace DocExamples.DataAccess.Xml { class PullItemChanged { public static void Main1Xml() { // Instantiate the client object. // In order to use event pull, you must set a non-zero queue capacity upfront. var client = new EasyDAClient { PullItemChangedQueueCapacity = 1000 }; Console.WriteLine("Subscribing item changes..."); client.SubscribeItem( "http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx", "Dynamic/Analog Types/Int", 1000, state: null); Console.WriteLine("Processing item changes for 1 minute..."); int endTick = Environment.TickCount + 60 * 1000; do { EasyDAItemChangedEventArgs eventArgs = client.PullItemChanged(2 * 1000); if (!(eventArgs is null)) // Handle the notification event Console.WriteLine(eventArgs); } while (Environment.TickCount < endTick); Console.WriteLine("Unsubscribing item changes..."); client.UnsubscribeAllItems(); Console.WriteLine("Finished."); } } }
' This example shows how to subscribe to OPC XML-DA item changes and obtain the events by pulling them. ' ' Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . Imports OpcLabs.EasyOpc.DataAccess Imports OpcLabs.EasyOpc.DataAccess.OperationModel Namespace DataAccess.Xml Partial Friend Class PullItemChanged Public Shared Sub Main1Xml() ' In order to use event pull, you must set a non-zero queue capacity upfront. Dim client = New EasyDAClient() With {.PullItemChangedQueueCapacity = 1000} Console.WriteLine("Subscribing item changes...") client.SubscribeItem( "http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx", "Dynamic/Analog Types/Int", 1000, state:=Nothing) Console.WriteLine("Processing item changes for 1 minute...") Dim endTick As Integer = Environment.TickCount + 60 * 1000 Do Dim eventArgs As EasyDAItemChangedEventArgs = client.PullItemChanged(2 * 1000) If Not eventArgs Is Nothing Then ' Handle the notification event Console.WriteLine(eventArgs) End If Loop While Environment.TickCount < endTick Console.WriteLine("Unsubscribing item changes...") client.UnsubscribeAllItems() Console.WriteLine("Finished.") End Sub End Class End Namespace
// This example shows how to subscribe to item changes and obtain the events by pulling them. // // Find all latest examples here : https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . var Client = new ActiveXObject("OpcLabs.EasyOpc.DataAccess.EasyDAClient"); // In order to use event pull, you must set a non-zero queue capacity upfront. Client.PullItemChangedQueueCapacity = 1000; WScript.Echo("Subscribing item changes..."); Client.SubscribeItem("", "OPCLabs.KitServer.2", "Simulation.Random", 1000); WScript.Echo("Processing item changes for 1 minute..."); var endTime = new Date().getTime() + 60*1000 do { var EventArgs = Client.PullItemChanged(2*1000); if (EventArgs !== null) { // Handle the notification event WScript.Echo(EventArgs); } } while(new Date().getTime() < endTime); WScript.Echo("Unsubscribing item changes..."); Client.UnsubscribeAllItems(); WScript.Echo("Finished.");
// This example shows how to subscribe to item changes and obtain the events by pulling them. // // Find all latest examples here : https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . class procedure PullItemChanged.Main; var Client: OpcLabs_EasyOpcClassic_TLB._EasyDAClient; EndTick: Cardinal; EventArgs: _EasyDAItemChangedEventArgs; begin // Instantiate the client object Client := CoEasyDAClient.Create; // In order to use event pull, you must set a non-zero queue capacity upfront. Client.PullItemChangedQueueCapacity := 1000; WriteLn('Subscribing item changes...'); Client.SubscribeItem('', 'OPCLabs.KitServer.2', 'Simulation.Random', 1000); WriteLn('Processing item changes for 1 minute...'); EndTick := Ticks + 60*1000; while Ticks < EndTick do begin EventArgs := Client.PullItemChanged(2*1000); if EventArgs <> nil then // Handle the notification event WriteLn(EventArgs.ToString); end; WriteLn('Unsubscribing item changes...'); Client.UnsubscribeAllItems; WriteLn('Finished.'); end;
// This example shows how to subscribe to item changes and obtain the events by pulling them. // // Find all latest examples here : https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . $Client = new COM("OpcLabs.EasyOpc.DataAccess.EasyDAClient"); // In order to use event pull, you must set a non-zero queue capacity upfront. $Client->PullItemChangedQueueCapacity = 1000; print "Subscribing item changes...\n"; $Client->SubscribeItem("", "OPCLabs.KitServer.2", "Simulation.Random", 1000); print "Processing item changed events for 1 minute...\n"; $endTime = time() + 60; do { $EventArgs = $Client->PullItemChanged(2*1000); if (!is_null($EventArgs)) { // Handle the notification event print $EventArgs->ToString(); print "\n"; } } while (time() < $endTime);
// This example shows how to subscribe to item changes and obtain the events by pulling them. mle_outputtext.Text = "" // Instantiate the client object OLEObject client client = CREATE OLEObject client.ConnectToNewObject("OpcLabs.EasyOpc.DataAccess.EasyDAClient") // In order to use event pull, you must set a non-zero queue capacity upfront. client.PullItemChangedQueueCapacity = 1000 mle_outputtext.Text = mle_outputtext.Text + "Subscribing item changes..." + "~r~n" client.SubscribeItem("", "OPCLabs.KitServer.2", "Simulation.Random", 1000) mle_outputtext.Text = mle_outputtext.Text + "Processing item changes for 1 minute..." + "~r~n" Time endTime = RelativeTime(Now(), 60) DO OLEObject eventArgs eventArgs = client.PullItemChanged(2*1000) IF NOT IsNull(eventArgs) THEN // Handle the notification event mle_outputtext.Text = mle_outputtext.Text + eventArgs.DisplayString + "~r~n" END IF LOOP WHILE Now() < endTime mle_outputtext.Text = mle_outputtext.Text + "Unsubscribing item changes..." + "~r~n" client.UnsubscribeAllItems() mle_outputtext.Text = mle_outputtext.Text + "~r~n" mle_outputtext.Text = mle_outputtext.Text + "Finished." + "~r~n"
# This example shows how to subscribe to item changes and obtain the events by pulling them. # # The Python for Windows (pywin32) extensions package is needed. Install it using "pip install pypiwin32". # CAUTION: We now recommend using Python.NET package instead. Full set of examples with Python.NET is available! # # Find all latest examples here : https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . import time import win32com.client # Instantiate the client object client = win32com.client.Dispatch('OpcLabs.EasyOpc.DataAccess.EasyDAClient') # In order to use event pull, you must set a non-zero queue capacity upfront. client.PullItemChangedQueueCapacity = 1000 print('Subscribing item changes...') client.SubscribeItem('', 'OPCLabs.KitServer.2', 'Simulation.Random', 1000) print('Processing item changes for 1 minute...') endTime = time.time() + 60 while time.time() < endTime: eventArgs = client.PullItemChanged(2*1000) if eventArgs is not None: # Handle the notification event print(eventArgs) print('Unsubscribing item changes...') client.UnsubscribeAllItems() print('Finished.')
REM This example shows how to subscribe to item changes and obtain the events by pulling them. REM REM Find all latest examples here : https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . Private Sub PullItemChanged_Main_Command_Click() OutputText = "" Dim eventArgs As EasyDAItemChangedEventArgs ' Instantiate the client object Dim client As New EasyDAClient ' In order to use event pull, you must set a non-zero queue capacity upfront. client.PullItemChangedQueueCapacity = 1000 OutputText = OutputText & "Subscribing item changes..." & vbCrLf Call client.SubscribeItem("", "OPCLabs.KitServer.2", "Simulation.Random", 1000) OutputText = OutputText & "Processing item changes for 1 minute..." & vbCrLf Dim endTick As Long endTick = GetTickCount + 60000 While GetTickCount < endTick Set eventArgs = client.PullItemChanged(2 * 1000) If Not eventArgs Is Nothing Then ' Handle the notification event OutputText = OutputText & eventArgs & vbCrLf End If Wend OutputText = OutputText & "Unsubscribing item changes..." & vbCrLf client.UnsubscribeAllItems OutputText = OutputText & "Finished." & vbCrLf End Sub
' This example shows how to subscribe to item changes and obtain the events by pulling them. ' ' Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . Imports OpcLabs.EasyOpc.DataAccess Imports OpcLabs.EasyOpc.DataAccess.OperationModel Namespace DataAccess._EasyDAClient Partial Friend Class PullItemChanged Public Shared Sub Main1() Dim client = New EasyDAClient() ' In order to use event pull, you must set a non-zero queue capacity upfront. client.PullItemChangedQueueCapacity = 1000 Console.WriteLine("Subscribing item changes...") client.SubscribeItem("", "OPCLabs.KitServer.2", "Simulation.Random", 1000) Console.WriteLine("Processing item changes for 1 minute...") Dim endTick As Integer = Environment.TickCount + 60 * 1000 Do Dim eventArgs As EasyDAItemChangedEventArgs = client.PullItemChanged(2 * 1000) If Not eventArgs Is Nothing Then ' Handle the notification event Console.WriteLine(eventArgs) End If Loop While Environment.TickCount < endTick Console.WriteLine("Unsubscribing item changes...") client.UnsubscribeAllItems() Console.WriteLine("Finished.") End Sub End Class End Namespace
Rem This example shows how to subscribe to item changes and obtain the events by pulling them. Rem Rem Find all latest examples here : https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . Option Explicit Dim Client: Set Client = CreateObject("OpcLabs.EasyOpc.DataAccess.EasyDAClient") ' In order to use event pull, you must set a non-zero queue capacity upfront. Client.PullItemChangedQueueCapacity = 1000 WScript.Echo "Subscribing item changes..." Client.SubscribeItem "", "OPCLabs.KitServer.2", "Simulation.Random", 1000 WScript.Echo "Processing item changes for 1 minute..." Dim endTime: endTime = Now() + 60*(1/24/60/60) Do Dim EventArgs: Set EventArgs = Client.PullItemChanged(2*1000) If Not (EventArgs Is Nothing) Then ' Handle the notification event WScript.Echo EventArgs End If Loop While Now() < endTime WScript.Echo "Unsubscribing item changes..." Client.UnsubscribeAllItems WScript.Echo "Finished."
// This example shows how to subscribe to changes of multiple items and obtain the item changed events by pulling them. // // Find all latest examples here : https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . class procedure PullItemChanged.MultipleItems; var Arguments: OleVariant; Client: OpcLabs_EasyOpcClassic_TLB._EasyDAClient; EndTick: Cardinal; EventArgs: _EasyDAItemChangedEventArgs; HandleArray: OleVariant; ItemSubscriptionArguments1: _EasyDAItemSubscriptionArguments; ItemSubscriptionArguments2: _EasyDAItemSubscriptionArguments; ItemSubscriptionArguments3: _EasyDAItemSubscriptionArguments; ItemSubscriptionArguments4: _EasyDAItemSubscriptionArguments; begin ItemSubscriptionArguments1 := CoEasyDAItemSubscriptionArguments.Create; ItemSubscriptionArguments1.ServerDescriptor.ServerClass := 'OPCLabs.KitServer.2'; ItemSubscriptionArguments1.ItemDescriptor.ItemID := 'Simulation.Random'; ItemSubscriptionArguments1.GroupParameters.RequestedUpdateRate := 1000; ItemSubscriptionArguments2 := CoEasyDAItemSubscriptionArguments.Create; ItemSubscriptionArguments2.ServerDescriptor.ServerClass := 'OPCLabs.KitServer.2'; ItemSubscriptionArguments2.ItemDescriptor.ItemID := 'Trends.Ramp (1 min)'; ItemSubscriptionArguments2.GroupParameters.RequestedUpdateRate := 1000; ItemSubscriptionArguments3 := CoEasyDAItemSubscriptionArguments.Create; ItemSubscriptionArguments3.ServerDescriptor.ServerClass := 'OPCLabs.KitServer.2'; ItemSubscriptionArguments3.ItemDescriptor.ItemID := 'Trends.Sine (1 min)'; ItemSubscriptionArguments3.GroupParameters.RequestedUpdateRate := 1000; // Intentionally specifying an unknown item here, to demonstrate its behavior. ItemSubscriptionArguments4 := CoEasyDAItemSubscriptionArguments.Create; ItemSubscriptionArguments4.ServerDescriptor.ServerClass := 'OPCLabs.KitServer.2'; ItemSubscriptionArguments4.ItemDescriptor.ItemID := 'SomeUnknownItem'; ItemSubscriptionArguments4.GroupParameters.RequestedUpdateRate := 1000; Arguments := VarArrayCreate([0, 3], varVariant); Arguments[0] := ItemSubscriptionArguments1; Arguments[1] := ItemSubscriptionArguments2; Arguments[2] := ItemSubscriptionArguments3; Arguments[3] := ItemSubscriptionArguments4; // Instantiate the client object Client := CoEasyDAClient.Create; // In order to use event pull, you must set a non-zero queue capacity upfront. Client.PullItemChangedQueueCapacity := 1000; WriteLn('Subscribing item changes...'); TVarData(HandleArray).VType := varArray or varVariant; TVarData(HandleArray).VArray := PVarArray( Client.SubscribeMultipleItems(Arguments)); WriteLn('Processing item changes for 1 minute...'); EndTick := Ticks + 60*1000; while Ticks < EndTick do begin EventArgs := Client.PullItemChanged(2*1000); if EventArgs <> nil then // Handle the notification event if eventArgs.Succeeded then WriteLn(eventArgs.Arguments.ItemDescriptor.ItemId, ': ', eventArgs.Vtq.ToString) else WriteLn(eventArgs.Arguments.ItemDescriptor.ItemId, ' *** Failure: ', eventArgs.ErrorMessageBrief); end; WriteLn('Unsubscribing item changes...'); Client.UnsubscribeAllItems; VarClear(HandleArray); VarClear(Arguments); WriteLn('Finished.'); end;
# This example shows how to subscribe to changes of multiple items and obtain the item changed events by pulling them. # # The Python for Windows (pywin32) extensions package is needed. Install it using "pip install pypiwin32". # CAUTION: We now recommend using Python.NET package instead. Full set of examples with Python.NET is available! # # Find all latest examples here : https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . import time import win32com.client # Instantiate the client object client = win32com.client.Dispatch('OpcLabs.EasyOpc.DataAccess.EasyDAClient') # In order to use event pull, you must set a non-zero queue capacity upfront. client.PullItemChangedQueueCapacity = 1000 print('Subscribing item changes...') itemSubscriptionArguments1 = win32com.client.Dispatch('OpcLabs.EasyOpc.DataAccess.OperationModel.EasyDAItemSubscriptionArguments') itemSubscriptionArguments1.ServerDescriptor.ServerClass = 'OPCLabs.KitServer.2' itemSubscriptionArguments1.ItemDescriptor.ItemID = 'Simulation.Random' itemSubscriptionArguments1.GroupParameters.RequestedUpdateRate = 1000 itemSubscriptionArguments2 = win32com.client.Dispatch('OpcLabs.EasyOpc.DataAccess.OperationModel.EasyDAItemSubscriptionArguments') itemSubscriptionArguments2.ServerDescriptor.ServerClass = 'OPCLabs.KitServer.2' itemSubscriptionArguments2.ItemDescriptor.ItemID = 'Trends.Ramp (1 min)' itemSubscriptionArguments2.GroupParameters.RequestedUpdateRate = 1000 itemSubscriptionArguments3 = win32com.client.Dispatch('OpcLabs.EasyOpc.DataAccess.OperationModel.EasyDAItemSubscriptionArguments') itemSubscriptionArguments3.ServerDescriptor.ServerClass = 'OPCLabs.KitServer.2' itemSubscriptionArguments3.ItemDescriptor.ItemID = 'Trends.Sine (1 min)' itemSubscriptionArguments3.GroupParameters.RequestedUpdateRate = 1000 # Intentionally specifying an unknown item here, to demonstrate its behavior. itemSubscriptionArguments4 = win32com.client.Dispatch('OpcLabs.EasyOpc.DataAccess.OperationModel.EasyDAItemSubscriptionArguments') itemSubscriptionArguments4.ServerDescriptor.ServerClass = 'OPCLabs.KitServer.2' itemSubscriptionArguments4.ItemDescriptor.ItemID = 'UnknownItem' itemSubscriptionArguments4.GroupParameters.RequestedUpdateRate = 1000 arguments = [ itemSubscriptionArguments1, itemSubscriptionArguments2, itemSubscriptionArguments3, itemSubscriptionArguments4, ] client.SubscribeMultipleItems(arguments) print('Processing item changes for 1 minute...') endTime = time.time() + 60 while time.time() < endTime: eventArgs = client.PullItemChanged(2*1000) if eventArgs is not None: # Handle the notification event if (eventArgs.Succeeded): print(eventArgs.Arguments.ItemDescriptor.ItemId, ': ', eventArgs.Vtq, sep='') else: print(eventArgs.Arguments.ItemDescriptor.ItemId, ' *** Failure: ', eventArgs.ErrorMessageBrief, sep='') print('Unsubscribing item changes...') client.UnsubscribeAllItems() print('Finished.')
REM This example shows how to subscribe to changes of multiple items and obtain the item changed events by pulling them. REM REM Find all latest examples here : https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . Private Sub PullItemChanged_MultipleItems_Command_Click() OutputText = "" Dim eventArgs As EasyDAItemChangedEventArgs Dim itemSubscriptionArguments1 As New EasyDAItemSubscriptionArguments itemSubscriptionArguments1.serverDescriptor.ServerClass = "OPCLabs.KitServer.2" itemSubscriptionArguments1.ItemDescriptor.itemId = "Simulation.Random" itemSubscriptionArguments1.GroupParameters.requestedUpdateRate = 1000 Dim itemSubscriptionArguments2 As New EasyDAItemSubscriptionArguments itemSubscriptionArguments2.serverDescriptor.ServerClass = "OPCLabs.KitServer.2" itemSubscriptionArguments2.ItemDescriptor.itemId = "Trends.Ramp (1 min)" itemSubscriptionArguments2.GroupParameters.requestedUpdateRate = 1000 Dim itemSubscriptionArguments3 As New EasyDAItemSubscriptionArguments itemSubscriptionArguments3.serverDescriptor.ServerClass = "OPCLabs.KitServer.2" itemSubscriptionArguments3.ItemDescriptor.itemId = "Trends.Sine (1 min)" itemSubscriptionArguments3.GroupParameters.requestedUpdateRate = 1000 ' Intentionally specifying an unknown item here, to demonstrate its behavior. Dim itemSubscriptionArguments4 As New EasyDAItemSubscriptionArguments itemSubscriptionArguments4.serverDescriptor.ServerClass = "OPCLabs.KitServer.2" itemSubscriptionArguments4.ItemDescriptor.itemId = "SomeUnknownItem" itemSubscriptionArguments4.GroupParameters.requestedUpdateRate = 1000 Dim arguments(3) As Variant Set arguments(0) = itemSubscriptionArguments1 Set arguments(1) = itemSubscriptionArguments2 Set arguments(2) = itemSubscriptionArguments3 Set arguments(3) = itemSubscriptionArguments4 ' Instantiate the client object Dim client As New EasyDAClient ' In order to use event pull, you must set a non-zero queue capacity upfront. client.PullItemChangedQueueCapacity = 1000 OutputText = OutputText & "Subscribing item changes..." & vbCrLf Dim handleArray() As Variant handleArray = client.SubscribeMultipleItems(arguments) OutputText = OutputText & "Processing item changes for 1 minute..." & vbCrLf Dim endTick As Long endTick = GetTickCount + 60000 While GetTickCount < endTick Set eventArgs = client.PullItemChanged(2 * 1000) If Not eventArgs Is Nothing Then ' Handle the notification event If eventArgs.Succeeded Then OutputText = OutputText & eventArgs.arguments.ItemDescriptor.itemId & ": " & eventArgs.vtq & vbCrLf Else OutputText = OutputText & eventArgs.arguments.ItemDescriptor.itemId & " *** Failure: " & eventArgs.ErrorMessageBrief & vbCrLf End If End If Wend OutputText = OutputText & "Unsubscribing item changes..." & vbCrLf client.UnsubscribeAllItems OutputText = OutputText & "Finished." & vbCrLf End Sub
// This example shows how to subscribe to OPC XML-DA item changes and obtain the events by pulling them. // // Find all latest examples here : https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . class procedure PullItemChanged.MainXml; var Arguments: OleVariant; Client: OpcLabs_EasyOpcClassic_TLB._EasyDAClient; EndTick: Cardinal; EventArgs: _EasyDAItemChangedEventArgs; ItemSubscriptionArguments1: _EasyDAItemSubscriptionArguments; begin ItemSubscriptionArguments1 := CoEasyDAItemSubscriptionArguments.Create; ItemSubscriptionArguments1.ServerDescriptor.UrlString := 'http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx'; ItemSubscriptionArguments1.ItemDescriptor.ItemID := 'Dynamic/Analog Types/Int'; ItemSubscriptionArguments1.GroupParameters.RequestedUpdateRate := 1000; Arguments := VarArrayCreate([0, 0], varVariant); Arguments[0] := ItemSubscriptionArguments1; // Instantiate the client object Client := CoEasyDAClient.Create; // In order to use event pull, you must set a non-zero queue capacity upfront. Client.PullItemChangedQueueCapacity := 1000; WriteLn('Subscribing item changes...'); Client.SubscribeMultipleItems(Arguments); WriteLn('Processing item changes for 1 minute...'); EndTick := Ticks + 60*1000; while Ticks < EndTick do begin EventArgs := Client.PullItemChanged(2*1000); if EventArgs <> nil then // Handle the notification event WriteLn(EventArgs.ToString); end; WriteLn('Unsubscribing item changes...'); Client.UnsubscribeAllItems; WriteLn('Finished.'); end;
// This example shows how to subscribe to OPC XML-DA item changes and obtain the events by pulling them. // // Find all latest examples here : https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . $ItemSubscriptionArguments1 = new COM("OpcLabs.EasyOpc.DataAccess.OperationModel.EasyDAItemSubscriptionArguments"); $ItemSubscriptionArguments1->ServerDescriptor->UrlString = "http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx"; $ItemSubscriptionArguments1->ItemDescriptor->ItemID = "Dynamic/Analog Types/Int"; $ItemSubscriptionArguments1->GroupParameters->RequestedUpdateRate = 1000; $arguments[0] = $ItemSubscriptionArguments1; // Instantiate the client object. $Client = new COM("OpcLabs.EasyOpc.DataAccess.EasyDAClient"); // In order to use event pull, you must set a non-zero queue capacity upfront. $Client->PullItemChangedQueueCapacity = 1000; print "Subscribing item changes...\n"; $Client->SubscribeMultipleItems($arguments); print "Processing item changed events for 1 minute...\n"; $endTime = time() + 60; do { $EventArgs = $Client->PullItemChanged(2*1000); if (!is_null($EventArgs)) { // Handle the notification event print $EventArgs->ToString(); print "\n"; } } while (time() < $endTime);
# This example shows how to subscribe to changes of multiple OPC XML-DA items and obtain the item changed events by pulling them. # # The Python for Windows (pywin32) extensions package is needed. Install it using "pip install pypiwin32". # CAUTION: We now recommend using Python.NET package instead. Full set of examples with Python.NET is available! # # Find all latest examples here : https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . import time import win32com.client # Instantiate the client object client = win32com.client.Dispatch('OpcLabs.EasyOpc.DataAccess.EasyDAClient') # In order to use event pull, you must set a non-zero queue capacity upfront. client.PullItemChangedQueueCapacity = 1000 print('Subscribing item changes...') itemSubscriptionArguments1 = win32com.client.Dispatch('OpcLabs.EasyOpc.DataAccess.OperationModel.EasyDAItemSubscriptionArguments') itemSubscriptionArguments1.ServerDescriptor.UrlString = 'http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx' itemSubscriptionArguments1.ItemDescriptor.ItemID = 'Dynamic/Analog Types/Double' itemSubscriptionArguments1.GroupParameters.RequestedUpdateRate = 1000 itemSubscriptionArguments2 = win32com.client.Dispatch('OpcLabs.EasyOpc.DataAccess.OperationModel.EasyDAItemSubscriptionArguments') itemSubscriptionArguments2.ServerDescriptor.UrlString = 'http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx' itemSubscriptionArguments2.ItemDescriptor.ItemID = 'Dynamic/Analog Types/Double[]' itemSubscriptionArguments2.GroupParameters.RequestedUpdateRate = 1000 itemSubscriptionArguments3 = win32com.client.Dispatch('OpcLabs.EasyOpc.DataAccess.OperationModel.EasyDAItemSubscriptionArguments') itemSubscriptionArguments3.ServerDescriptor.UrlString = 'http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx' itemSubscriptionArguments3.ItemDescriptor.ItemID = 'Dynamic/Analog Types/Int' itemSubscriptionArguments3.GroupParameters.RequestedUpdateRate = 1000 # Intentionally specifying an unknown item here, to demonstrate its behavior. itemSubscriptionArguments4 = win32com.client.Dispatch('OpcLabs.EasyOpc.DataAccess.OperationModel.EasyDAItemSubscriptionArguments') itemSubscriptionArguments4.ServerDescriptor.UrlString = 'http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx' itemSubscriptionArguments4.ItemDescriptor.ItemID = 'SomeUnknownItem' itemSubscriptionArguments4.GroupParameters.RequestedUpdateRate = 1000 arguments = [ itemSubscriptionArguments1, itemSubscriptionArguments2, itemSubscriptionArguments3, itemSubscriptionArguments4, ] client.SubscribeMultipleItems(arguments) print('Processing item changes for 1 minute...') endTime = time.time() + 60 while time.time() < endTime: eventArgs = client.PullItemChanged(2*1000) if eventArgs is not None: # Handle the notification event if (eventArgs.Succeeded): print(eventArgs.Arguments.ItemDescriptor.ItemId, ': ', eventArgs.Vtq, sep='') else: print(eventArgs.Arguments.ItemDescriptor.ItemId, ' *** Failure: ', eventArgs.ErrorMessageBrief, sep='') print('Unsubscribing item changes...') client.UnsubscribeAllItems() print('Finished.')
Rem This example shows how to subscribe to OPC XML-DA item changes and obtain the events by pulling them. Rem Rem Find all latest examples here : https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . Private Sub PullItemChanged_MainXml_Command_Click() OutputText = "" Dim eventArgs As EasyDAItemChangedEventArgs Dim ItemSubscriptionArguments1 As New EasyDAItemSubscriptionArguments ItemSubscriptionArguments1.serverDescriptor.UrlString = "http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx" ItemSubscriptionArguments1.ItemDescriptor.ItemId = "Dynamic/Analog Types/Int" ItemSubscriptionArguments1.GroupParameters.RequestedUpdateRate = 1000 Dim arguments(0) As Variant Set arguments(0) = ItemSubscriptionArguments1 ' Instantiate the client object Dim client As New EasyDAClient ' In order to use event pull, you must set a non-zero queue capacity upfront. client.PullItemChangedQueueCapacity = 1000 OutputText = OutputText & "Subscribing item changes..." & vbCrLf Call client.SubscribeMultipleItems(arguments) OutputText = OutputText & "Processing item changes for 1 minute..." & vbCrLf Dim endTick As Long endTick = GetTickCount + 60000 While GetTickCount < endTick Set eventArgs = client.PullItemChanged(2 * 1000) If Not eventArgs Is Nothing Then ' Handle the notification event OutputText = OutputText & eventArgs & vbCrLf End If Wend OutputText = OutputText & "Unsubscribing item changes..." & vbCrLf client.UnsubscribeAllItems OutputText = OutputText & "Finished." & vbCrLf End Sub
Rem This example shows how to subscribe to OPC XML-DA item changes and obtain the events by pulling them. Rem Rem Find all latest examples here : https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . Option Explicit Dim ItemSubscriptionArguments1: Set ItemSubscriptionArguments1 = CreateObject("OpcLabs.EasyOpc.DataAccess.OperationModel.EasyDAItemSubscriptionArguments") ItemSubscriptionArguments1.ServerDescriptor.UrlString = "http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx" ItemSubscriptionArguments1.ItemDescriptor.ItemID = "Dynamic/Analog Types/Int" ItemSubscriptionArguments1.GroupParameters.RequestedUpdateRate = 1000 Dim arguments(0) Set arguments(0) = ItemSubscriptionArguments1 Dim Client: Set Client = CreateObject("OpcLabs.EasyOpc.DataAccess.EasyDAClient") ' In order to use event pull, you must set a non-zero queue capacity upfront. Client.PullItemChangedQueueCapacity = 1000 WScript.Echo "Subscribing item changes..." Client.SubscribeMultipleItems arguments WScript.Echo "Processing item changes for 1 minute..." Dim endTime: endTime = Now() + 60*(1/24/60/60) Do Dim EventArgs: Set EventArgs = Client.PullItemChanged(2*1000) If Not (EventArgs Is Nothing) Then ' Handle the notification event WScript.Echo EventArgs End If Loop While Now() < endTime WScript.Echo "Unsubscribing item changes..." Client.UnsubscribeAllItems WScript.Echo "Finished."
Target Platforms: .NET Framework: Windows 10 (selected versions), Windows 11 (selected versions), Windows Server 2016, Windows Server 2022; .NET: Linux, macOS, Microsoft Windows
Copyright © 2004-2024 CODE Consulting and Development, s.r.o., Plzen. All rights reserved. Web page: www.opclabs.com
Send Documentation Feedback. Resources: Knowledge Base, Product Downloads. Technical support: Online Forums, FAQ.Missing some example? Ask us for it on our Online Forums! You do not have to own a commercial license in order to use Online Forums, and we reply to every post.