// This example shows how to browse objects under the "Objects" node and display event sources.
//
// 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.UA;
using OpcLabs.EasyOpc.UA.AddressSpace;
using OpcLabs.EasyOpc.UA.AddressSpace.Standard;
using OpcLabs.EasyOpc.UA.OperationModel;
namespace UADocExamples.AlarmsAndConditions
{
class BrowseEventSources
{
public static void Overload2()
{
// Start browsing from the "Objects" node.
try
{
BrowseFrom(UAObjectIds.ObjectsFolder);
}
catch (UAException uaException)
{
Console.WriteLine($"*** Failure: {uaException.GetBaseException().Message}");
}
Console.WriteLine();
Console.WriteLine("Finished.");
}
private static void BrowseFrom(UANodeDescriptor nodeDescriptor)
{
// Define which server we will work with.
UAEndpointDescriptor endpointDescriptor =
"opc.tcp://opcua.demo-this.com:62544/Quickstarts/AlarmConditionServer";
Console.WriteLine();
Console.WriteLine();
Console.WriteLine($"Parent node: {nodeDescriptor}");
// Instantiate the client object.
var client = new EasyUAClient();
// Obtain event sources.
UANodeElementCollection eventSourceNodeElementCollection = client.BrowseEventSources(
endpointDescriptor, nodeDescriptor);
// Display event sources.
if (eventSourceNodeElementCollection.Count != 0)
{
Console.WriteLine();
Console.WriteLine("Event sources:");
foreach (UANodeElement eventSourceNodeElement in eventSourceNodeElementCollection)
Console.WriteLine(eventSourceNodeElement);
}
// Obtain objects.
UANodeElementCollection objectNodeElementCollection = client.BrowseObjects(
endpointDescriptor, nodeDescriptor);
// Recurse.
foreach (UANodeElement objectNodeElement in objectNodeElementCollection)
BrowseFrom(objectNodeElement);
}
// Example output (truncated):
//
//
//Parent node: ObjectsFolder
//
//
//Parent node: Server
//
//Event sources:
//Green -> nsu=http://opcfoundation.org/Quickstarts/AlarmCondition ;ns=2;s=0:/Green (Object)
//Yellow -> nsu=http://opcfoundation.org/Quickstarts/AlarmCondition ;ns=2;s=0:/Yellow (Object)
//
//
//Parent node: Server_ServerCapabilities
//...
}
}
# This example shows how to browse objects under the "Objects" node and display event sources.
#
# 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.UA
using namespace OpcLabs.EasyOpc.UA.AddressSpace.Standard
using namespace OpcLabs.EasyOpc.UA.Navigation.Parsing;
using namespace OpcLabs.EasyOpc.UA.OperationModel
function BrowseEventSourcesFrom([UANodeDescriptor]$nodeDescriptor) {
# Define which server we will work with.
[UAEndpointDescriptor]$endpointDescriptor = "opc.tcp://opcua.demo-this.com:62544/Quickstarts/AlarmConditionServer"
Write-Host
Write-Host
Write-Host "Parent node: $($nodeDescriptor)"
# Instantiate the client object.
$client = New-Object EasyUAClient
# Obtain event sources.
$eventSourceNodeElementCollection = [IEasyUAClientExtension]::BrowseEventSources($client,
$endpointDescriptor, $nodeDescriptor)
# Display event sources.
if ($eventSourceNodeElementCollection.Count -ne 0) {
Write-Host
Write-Host "Event sources:"
foreach ($eventSourceNodeElement in $eventSourceNodeElementCollection) {
Write-Host $eventSourceNodeElement
}
}
# Obtain objects.
$objectNodeElementCollection = [IEasyUAClientExtension]::BrowseObjects($client,
$endpointDescriptor, $nodeDescriptor)
# Recurse.
foreach ($objectNodeElement in $objectNodeElementCollection) {
BrowseEventSourcesFrom($objectNodeElement)
}
}
# The path below assumes that the current directory is [ProductDir]/Examples-NET/PowerShell/Windows .
Add-Type -Path "../../../Components/Opclabs.QuickOpc/net472/OpcLabs.EasyOpcUA.dll"
Add-Type -Path "../../../Components/Opclabs.QuickOpc/net472/OpcLabs.EasyOpcUAComponents.dll"
# Start browsing from the "Objects" node.
try {
[UANodeDescriptor]$startingNodeDescriptor = [UAObjectIds]::ObjectsFolder
BrowseEventSourcesFrom $startingNodeDescriptor
}
catch [UAException] {
Write-Host "*** Failure: $($PSItem.Exception.GetBaseException().Message)"
return
}
Write-Host
Write-Host "Finished."
# Example output (truncated):
#
#
#Parent node: ObjectsFolder
#
#
#Parent node: Server
#
#Event sources:
#Green -> nsu=http:#opcfoundation.org/Quickstarts/AlarmCondition ;ns=2;s=0:/Green (Object)
#Yellow -> nsu=http:#opcfoundation.org/Quickstarts/AlarmCondition ;ns=2;s=0:/Yellow (Object)
#
#
#Parent node: Server_ServerCapabilities
#...
' This example shows how to browse objects under the "Objects" node and display event sources.
'
' 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.UA
Imports OpcLabs.EasyOpc.UA.AddressSpace
Imports OpcLabs.EasyOpc.UA.AddressSpace.Standard
Imports OpcLabs.EasyOpc.UA.OperationModel
Namespace AlarmsAndConditions
Friend Class BrowseEventSources
Public Shared Sub Overload2()
' Start browsing from the "Objects" node
Try
BrowseFrom(UAObjectIds.ObjectsFolder)
Catch uaException As UAException
Console.WriteLine("*** Failure: {0}", uaException.GetBaseException.Message)
End Try
End Sub
Private Shared Sub BrowseFrom(nodeDescriptor As UANodeDescriptor)
Console.WriteLine()
Console.WriteLine()
Console.WriteLine("Parent node: {0}", nodeDescriptor)
' Instantiate the client object
Dim client = New EasyUAClient()
' Obtain notifiers
Dim eventSourceNodeElementCollection As UANodeElementCollection = client.BrowseEventSources( _
"opc.tcp://opcua.demo-this.com:62544/Quickstarts/AlarmConditionServer", _
nodeDescriptor)
' Display notifiers
Console.WriteLine()
Console.WriteLine("Event sources:")
For Each eventSourceNodeElement As UANodeElement In eventSourceNodeElementCollection
Console.WriteLine(eventSourceNodeElement)
Next eventSourceNodeElement
' Obtain objects
Dim objectNodeElementCollection = client.BrowseObjects( _
"opc.tcp://opcua.demo-this.com:62544/Quickstarts/AlarmConditionServer", _
nodeDescriptor)
' Recurse
For Each objectNodeElement As UANodeElement In objectNodeElementCollection
BrowseFrom(objectNodeElement)
Next objectNodeElement
End Sub
End Class
End Namespace
// This example shows how to browse objects under the "Objects" node and display event sources.
//
// Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html .
// OPC client and subscriber examples in Object Pascal (Delphi) on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-OP .
// 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.
class procedure BrowseEventSources.Main;
var
ObjectNodeId: _UANodeId;
begin
ObjectNodeId := CoUANodeId.Create;
ObjectNodeId.StandardName := 'Objects';
try
BrowseFrom(ObjectNodeId);
except
on E: EOleException do
begin
WriteLn(Format('*** Failure: %s', [E.GetBaseException.Message]));
Exit;
end;
end;
end;
class procedure BrowseEventSources.BrowseFrom(NodeId: _UANodeId);
var
Client: OpcLabs_EasyOpcUA_TLB._EasyUAClient;
Count: Cardinal;
Element: OleVariant;
EndpointDescriptor: string;
EventSourceNodeElement: _UANodeElement;
EventSourceNodeElementEnumerator: IEnumVariant;
EventSourceNodeElements: _UANodeElementCollection;
ObjectNodeElement: _UANodeElement;
ObjectNodeElementEnumerator: IEnumVariant;
ObjectNodeElements: _UANodeElementCollection;
begin
EndpointDescriptor := 'opc.tcp://opcua.demo-this.com:62544/Quickstarts/AlarmConditionServer';
WriteLn;
WriteLn;
WriteLn('Parent node: ', NodeId.ToString);
// Instantiate the client object
Client := CoEasyUAClient.Create;
// Obtain event sources
EventSourceNodeElements := Client.BrowseEventSources(EndpointDescriptor, NodeId.ExpandedText);
// Display event sources
if EventSourceNodeElements.Count <> 0 then
begin
WriteLn;
WriteLn('Event sources:');
EventSourceNodeElementEnumerator := EventSourceNodeElements.GetEnumerator;
while (EventSourceNodeElementEnumerator.Next(1, Element, Count) = S_OK) do
begin
EventSourceNodeElement := IUnknown(Element) as _UANodeElement;
WriteLn(EventSourceNodeElement.ToString);
end;
end;
// Obtain objects
ObjectNodeElements := Client.BrowseObjects(EndpointDescriptor, NodeId.ExpandedText);
// Recurse
ObjectNodeElementEnumerator := ObjectNodeElements.GetEnumerator;
while (ObjectNodeElementEnumerator.Next(1, Element, Count) = S_OK) do
begin
ObjectNodeElement := IUnknown(Element) as _UANodeElement;
BrowseFrom(ObjectNodeElement.NodeId);
end;
end;
// This example shows how to browse objects under the "Objects" node and display event sources.
//
// Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html .
// OPC client and subscriber examples in PHP on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-PHP .
// 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.
// Start browsing from the "Objects" node
$ObjectNodeId = new COM("OpcLabs.EasyOpc.UA.AddressSpace.UANodeId");
$ObjectNodeId->StandardName = "Objects";
try
{
BrowseFrom($ObjectNodeId);
}
catch (com_exception $e)
{
printf("*** Failure: %s\n", $e->getMessage());
exit();
}
function BrowseFrom($NodeId) {
$EndpointDescriptor = "opc.tcp://opcua.demo-this.com:62544/Quickstarts/AlarmConditionServer";
printf("\n");
printf("\n");
printf("Parent node: %s\n", $NodeId);
// Instantiate the client object
$Client = new COM("OpcLabs.EasyOpc.UA.EasyUAClient");
// Obtain event sources
$EventSourceNodeElements = $Client->BrowseEventSources($EndpointDescriptor, $NodeId->ExpandedText);
// Display event sources
if ($EventSourceNodeElements->Count != 0) {
printf("\n");
printf("Event sources:\n");
foreach ($EventSourceNodeElements as $EventSourceNodeElement)
{
printf("%s\n", $EventSourceNodeElement);
}
}
// Obtain objects
$ObjectNodeElements = $Client->BrowseObjects($EndpointDescriptor, $NodeId->ExpandedText);
// Recurse
foreach ($ObjectNodeElements as $ObjectNodeElement)
{
BrowseFrom($ObjectNodeElement->NodeId);
}
}
// Example output (truncated):
//
//
//Parent node: ObjectsFolder
//
//
//Parent node: Server
//
//Event sources:
//Green -> nsu=http://opcfoundation.org/Quickstarts/AlarmCondition ;ns=2;s=0:/Green (Object)
//Yellow -> nsu=http://opcfoundation.org/Quickstarts/AlarmCondition ;ns=2;s=0:/Yellow (Object)
//
//
//Parent node: Server_ServerCapabilities
//...
Rem This example shows how to browse objects under the "Objects" node and display event sources.
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
' Start browsing from the "Objects" node
Dim ObjectsNodeId: Set ObjectsNodeId = CreateObject("OpcLabs.EasyOpc.UA.AddressSpace.UANodeId")
ObjectsNodeId.StandardName = "Objects"
On Error Resume Next
BrowseFrom ObjectsNodeId
If Err.Number <> 0 Then
WScript.Echo "*** Failure: " & Err.Source & ": " & Err.Description
WScript.Quit
End If
On Error Goto 0
Sub BrowseFrom(NodeId)
Dim endpointDescriptor
endpointDescriptor = "opc.tcp://opcua.demo-this.com:62544/Quickstarts/AlarmConditionServer"
WScript.Echo
WScript.Echo
WScript.Echo "Parent node: " & NodeId
' Instantiate the client object
Dim Client: Set Client = CreateObject("OpcLabs.EasyOpc.UA.EasyUAClient")
' Obtain event sources
Dim EventSourceNodeElementCollection: Set EventSourceNodeElementCollection = Client.BrowseEventSources( _
endpointDescriptor, NodeId.ExpandedText)
' Display event sources
If EventSourceNodeElementCollection.Count <> 0 Then
WScript.Echo
WScript.Echo "Event sources:"
Dim EventSourceNodeElement: For Each EventSourceNodeElement In EventSourceNodeElementCollection
WScript.Echo EventSourceNodeElement
Next
End If
' Obtain objects
Dim ObjectNodeElementCollection: Set ObjectNodeElementCollection = Client.BrowseObjects( _
endpointDescriptor, NodeId.ExpandedText)
' Recurse
Dim ObjectNodeElement: For Each ObjectNodeElement In ObjectNodeElementCollection
BrowseFrom ObjectNodeElement.NodeId
Next
End Sub
' Example output (truncated):
'
'
'Parent node: ObjectsFolder
'
'
'Parent node: Server
'
'Event sources:
'Green -> nsu=http://opcfoundation.org/Quickstarts/AlarmCondition ;ns=2;s=0:/Green (Object)
'Yellow -> nsu=http://opcfoundation.org/Quickstarts/AlarmCondition ;ns=2;s=0:/Yellow (Object)
'
'
'Parent node: Server_ServerCapabilities
'...
# This example shows how to browse objects under the "Objects" node and display event sources.
#
# 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 .NET namespaces.
from OpcLabs.EasyOpc.UA import *
from OpcLabs.EasyOpc.UA.AddressSpace import *
from OpcLabs.EasyOpc.UA.AddressSpace.Standard import *
from OpcLabs.EasyOpc.UA.OperationModel import *
# Define which server we will work with.
endpointDescriptor = UAEndpointDescriptor('opc.tcp://opcua.demo-this.com:62544/Quickstarts/AlarmConditionServer')
def browseFrom(nodeDescriptor):
global endpointDescriptor
print()
print()
print('Parent node: ', nodeDescriptor, sep='')
# Instantiate the client object.
client = EasyUAClient()
# Obtain event sources.
eventSourceNodeElementCollection = IEasyUAClientExtension.BrowseEventSources(client,
endpointDescriptor,
nodeDescriptor)
# Display event sources.
if eventSourceNodeElementCollection.Count != 0:
print('')
print('Event sources:')
for eventSourceNodeElement in eventSourceNodeElementCollection:
print(eventSourceNodeElement)
# Obtain objects.
objectNodeElementCollection = IEasyUAClientExtension.BrowseObjects(client,
endpointDescriptor,
nodeDescriptor)
# Recurse.
for objectNodeElement in objectNodeElementCollection:
browseFrom(objectNodeElement.ToUANodeDescriptor())
# Start browsing from the "Objects" node.
try:
browseFrom(UANodeDescriptor(UAObjectIds.ObjectsFolder))
except UAException as uaException:
print('*** Failure: ' + uaException.GetBaseException().Message)
exit()
print()
print('Finished.')