// This example shows how to browse objects under the "Objects" node and display notifiers.
//
// 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 BrowseNotifiers
{
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 notifiers.
UANodeElementCollection notifierNodeElementCollection = client.BrowseNotifiers(
endpointDescriptor, nodeDescriptor);
// Display notifiers.
if (notifierNodeElementCollection.Count != 0)
{
Console.WriteLine();
Console.WriteLine("Notifiers:");
foreach (UANodeElement notifierNodeElement in notifierNodeElementCollection)
Console.WriteLine(notifierNodeElement);
}
// 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
//
//Notifiers:
//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 notifiers.
#
# 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 BrowseNotifiersFrom([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.
$notifierNodeElementCollection = [IEasyUAClientExtension]::BrowseNotifiers($client,
$endpointDescriptor, $nodeDescriptor)
# Display event sources.
if ($notifierNodeElementCollection.Count -ne 0) {
Write-Host
Write-Host "Notifiers:"
foreach ($notifierNodeElement in $notifierNodeElementCollection) {
Write-Host $notifierNodeElement
}
}
# Obtain objects.
$objectNodeElementCollection = [IEasyUAClientExtension]::BrowseObjects($client,
$endpointDescriptor, $nodeDescriptor)
# Recurse.
foreach ($objectNodeElement in $objectNodeElementCollection) {
BrowseNotifiersFrom($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
BrowseNotifiersFrom $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
#
#Notifiers:
#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 notifiers.
'
' 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 BrowseNotifiers
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 notifierNodeElementCollection As UANodeElementCollection = client.BrowseNotifiers( _
"opc.tcp://opcua.demo-this.com:62544/Quickstarts/AlarmConditionServer", _
nodeDescriptor)
' Display notifiers
Console.WriteLine()
Console.WriteLine("Notifiers:")
For Each notifierNodeElement As UANodeElement In notifierNodeElementCollection
Console.WriteLine(notifierNodeElement)
Next notifierNodeElement
' 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 notifiers.
//
// 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 BrowseNotifiers.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 BrowseNotifiers.BrowseFrom(NodeId: _UANodeId);
var
Client: OpcLabs_EasyOpcUA_TLB._EasyUAClient;
Count: Cardinal;
Element: OleVariant;
EndpointDescriptor: string;
NotifierNodeElement: _UANodeElement;
NotifierNodeElementEnumerator: IEnumVariant;
NotifierNodeElements: _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 notifiers
NotifierNodeElements := Client.BrowseNotifiers(EndpointDescriptor, NodeId.ExpandedText);
// Display notifires
if NotifierNodeElements.Count <> 0 then
begin
WriteLn;
WriteLn('Notifiers:');
NotifierNodeElementEnumerator := NotifierNodeElements.GetEnumerator;
while (NotifierNodeElementEnumerator.Next(1, Element, Count) = S_OK) do
begin
NotifierNodeElement := IUnknown(Element) as _UANodeElement;
WriteLn(NotifierNodeElement.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;
// Example output (truncated):
//
//
//Parent node: ObjectsFolder
//
//
//Parent node: Server
//
//Notifiers:
//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 notifiers.
//
// 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 notifiers
$NotifierNodeElements = $Client->BrowseNotifiers($EndpointDescriptor, $NodeId->ExpandedText);
// Display notifires
if ($NotifierNodeElements->Count != 0) {
printf("\n");
printf("Notifiers:\n");
foreach ($NotifierNodeElements as $NotifierNodeElement)
{
printf("%s\n", $NotifierNodeElement);
}
}
// 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
//
//Notifiers:
//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 notifiers.
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 notifiers
Dim NotifierNodeElementCollection: Set NotifierNodeElementCollection = Client.BrowseNotifiers( _
endpointDescriptor, NodeId.ExpandedText)
' Display notifiers
If NotifierNodeElementCollection.Count <> 0 Then
WScript.Echo
WScript.Echo "Notifiers:"
Dim NotifierNodeElement: For Each NotifierNodeElement In NotifierNodeElementCollection
WScript.Echo NotifierNodeElement
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
'
'Notifiers:
'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 notifiers.
#
# 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 notifiers.
notifierNodeElementCollection = IEasyUAClientExtension.BrowseNotifiers(client, endpointDescriptor, nodeDescriptor)
# Display notifiers.
if notifierNodeElementCollection.Count != 0:
print('')
print('Notifiers:')
for notifierNodeElement in notifierNodeElementCollection:
print(notifierNodeElement)
# 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.')