// 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 C# on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-CSharp .
// Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own
// a commercial license in order to use Online Forums, and we reply to every post.
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 .
# OPC client and subscriber examples in PowerShell on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-PowerShell .
# Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own
# a commercial license in order to use Online Forums, and we reply to every post.
#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 VB.NET on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-VBNET .
' Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own
' a commercial license in order to use Online Forums, and we reply to every post.
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 get value of multiple OPC properties.
REM
REM Note that some properties may not have a useful value initially (e.g. until the item is activated in a group), which also the
REM case with Timestamp property as implemented by the demo server. This behavior is server-dependent, and normal. You can run
REM IEasyDAClient.ReadMultipleItemValues.Main.vbs shortly before this example, in order to obtain better property values. Your
REM code may also subscribe to the items in order to assure that they remain active.
REM
REM Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html .
REM OPC client and subscriber examples in Visual Basic on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-VB .
REM Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own
REM a commercial license in order to use Online Forums, and we reply to every post.
Private Sub GetMultiplePropertyValues_Main_Command_Click()
OutputText = ""
' Get the values of Timestamp and AccessRights properties of two items.
Dim propertyArguments1 As New DAPropertyArguments
propertyArguments1.serverDescriptor.ServerClass = "OPCLabs.KitServer.2"
propertyArguments1.nodeDescriptor.itemId = "Simulation.Random"
propertyArguments1.PropertyDescriptor.propertyId.NumericalValue = DAPropertyIds_Timestamp
Dim propertyArguments2 As New DAPropertyArguments
propertyArguments2.serverDescriptor.ServerClass = "OPCLabs.KitServer.2"
propertyArguments2.nodeDescriptor.itemId = "Simulation.Random"
propertyArguments2.PropertyDescriptor.propertyId.NumericalValue = DAPropertyIds_AccessRights
Dim propertyArguments3 As New DAPropertyArguments
propertyArguments3.serverDescriptor.ServerClass = "OPCLabs.KitServer.2"
propertyArguments3.nodeDescriptor.itemId = "Trends.Ramp (1 min)"
propertyArguments3.PropertyDescriptor.propertyId.NumericalValue = DAPropertyIds_Timestamp
Dim propertyArguments4 As New DAPropertyArguments
propertyArguments4.serverDescriptor.ServerClass = "OPCLabs.KitServer.2"
propertyArguments4.nodeDescriptor.itemId = "Trends.Ramp (1 min)"
propertyArguments4.PropertyDescriptor.propertyId.NumericalValue = DAPropertyIds_AccessRights
Dim arguments(3) As Variant
Set arguments(0) = propertyArguments1
Set arguments(1) = propertyArguments2
Set arguments(2) = propertyArguments3
Set arguments(3) = propertyArguments4
' Instantiate the client object
Dim client As New EasyDAClient
' Obtain values. By default, the Value attributes of the nodes will be read.
Dim results() As Variant
results = client.GetMultiplePropertyValues(arguments)
' Display results
Dim i: For i = LBound(results) To UBound(results)
Dim valueResult As valueResult: Set valueResult = results(i)
' Check if there has been an error getting the property value
If Not valueResult.Exception Is Nothing Then
OutputText = OutputText & arguments(i).nodeDescriptor.NodeId & " *** Failure: " & valueResult.Exception.Message & vbCrLf
Else
OutputText = OutputText & "results(" & i & ").Value: " & valueResult.value & vbCrLf
End If
Next
End Sub
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 .
Rem OPC client and subscriber examples in VBScript on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-VBScript .
Rem Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own
Rem a commercial license in order to use Online Forums, and we reply to every post.
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 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 .
# Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own
# a commercial license in order to use Online Forums, and we reply to every post.
# 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 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 C# on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-CSharp .
// Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own
// a commercial license in order to use Online Forums, and we reply to every post.
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 .
# OPC client and subscriber examples in PowerShell on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-PowerShell .
# Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own
# a commercial license in order to use Online Forums, and we reply to every post.
#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 VB.NET on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-VBNET .
' Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own
' a commercial license in order to use Online Forums, and we reply to every post.
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 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 .
# Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own
# a commercial license in order to use Online Forums, and we reply to every post.
# 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 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 .
// OPC client and subscriber examples in C# on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-CSharp .
// Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own
// a commercial license in order to use Online Forums, and we reply to every post.
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 .
' OPC client and subscriber examples in VB.NET on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-VBNET .
' Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own
' a commercial license in order to use Online Forums, and we reply to every post.
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 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 .
# OPC client and subscriber examples in Python on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-Python .
# Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own
# a commercial license in order to use Online Forums, and we reply to every post.
# 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.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,
ServerDescriptor('http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx'),
DAItemDescriptor('Dynamic/Analog Types/Int'),
DAGroupParameters(1000),
None) # state
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.')