Finds the application records for an OPC UA application known to the GDS.
Syntax
'Declaration
<ElementsNotNullAttribute()>
<NotNullAttribute()>
Function FindApplications( _
ByVal As Object, _
ByVal As String _
) As Object()
'Usage
Dim instance As _EasyUAGlobalDiscoveryClient
Dim gdsEndpointDescriptor As Object
Dim applicationUriString As String
Dim value() As Object
value = instance.FindApplications(gdsEndpointDescriptor, applicationUriString)
Parameters
- gdsEndpointDescriptor
- Endpoint descriptor. Identifies the OPC-UA server. The server must be a Global Directory Server (GDS).
- applicationUriString
- The application URI that identifies the application of interest.
Return Value
A list of application records that match the application URI given by .
Exceptions
Exception | Description |
System.ArgumentNullException |
A null reference (Nothing in Visual Basic) is passed to a method that does not accept it as a valid argument.
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. |
OpcLabs.EasyOpc.UA.OperationModel.UAException |
The OPC UA operation has failed. This operation exception in uniformly used to allow
common handling of various kinds of errors. The System.Exception.InnerException always contains
information about the actual error cause.
This is an operation error that depends on factors external to your program, and thus cannot be always avoided. Your code must handle it appropriately. |
Example
.NET
COM
// Shows how to find all registrations in the GDS.
//
// Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html .
using System;
using OpcLabs.EasyOpc.UA;
using OpcLabs.EasyOpc.UA.Discovery;
using OpcLabs.EasyOpc.UA.Extensions;
using OpcLabs.EasyOpc.UA.Gds;
using OpcLabs.EasyOpc.UA.OperationModel;
namespace UADocExamples.Gds._EasyUAGlobalDiscoveryClient
{
class FindApplications
{
public static void Main1()
{
// Define which GDS we will work with.
UAEndpointDescriptor gdsEndpointDescriptor =
((UAEndpointDescriptor)"opc.tcp://opcua.demo-this.com:58810/GlobalDiscoveryServer")
.WithUserNameIdentity("appuser", "demo");
// Instantiate the global discovery client object
var globalDiscoveryClient = new EasyUAGlobalDiscoveryClient();
// Find all (client or server) applications registered in the GDS.
UAApplicationDescription[] applicationDescriptionArray;
try
{
globalDiscoveryClient.QueryApplications(
gdsEndpointDescriptor: gdsEndpointDescriptor,
startingRecordId: 0,
maximumRecordsToReturn: 0,
applicationName: "",
applicationUriString: "",
applicationTypes: UAApplicationTypes.All,
productUriString: "",
serverCapabilities: new string[0],
lastCounterResetTime: out _,
nextRecordId: out _,
applications: out applicationDescriptionArray);
}
catch (UAException uaException)
{
Console.WriteLine("*** Failure: {0}", uaException.GetBaseException().Message);
return;
}
// For each application returned by the query, find its registrations in the GDS.
foreach (UAApplicationDescription applicationDescription in applicationDescriptionArray)
{
Console.WriteLine();
Console.WriteLine("Application URI string: {0}", applicationDescription.ApplicationUriString);
UAApplicationRecordDataType[] applicationRecordArray;
try
{
applicationRecordArray = globalDiscoveryClient.FindApplications(
gdsEndpointDescriptor,
applicationDescription.ApplicationUriString);
}
catch (UAException uaException)
{
Console.WriteLine(" *** Failure: {0}", uaException.GetBaseException().Message);
continue;
}
// Display results
foreach (UAApplicationRecordDataType applicationRecord in applicationRecordArray)
Console.WriteLine(" Application ID: {0}", applicationRecord.ApplicationId);
}
// Example output:
//
//Application URI string: urn:sampleserver
// Application ID: nsu=http://opcfoundation.org/UA/GDS/applications/ ;ns=2;g=09ecaa08-6ec6-462c-a214-1e66a3099107
//
//Application URI string: urn:alarmconditionserver
// Application ID: nsu=http://opcfoundation.org/UA/GDS/applications/ ;ns=2;g=783e1e9a-8036-43b6-928f-97488c460266
//
//Application URI string: urn:PC:MultiTargetUADocExamples:5.54.1026.1:neutral:null
// Application ID: nsu=http://opcfoundation.org/UA/GDS/applications/ ;ns=2;g=9e700ea5-55a6-4c3c-ba9f-b91c890dc519
//
//Application URI string: urn:PC:UADocExamples:5.56.0.16:neutral:null
// Application ID: nsu=http://opcfoundation.org/UA/GDS/applications/ ;ns=2;g=e182e28c-086b-4fc7-82c7-70ca7cda3033
//
//Application URI string: urn:PC:cscript:5.812.10240.16384
// Application ID: nsu=http://opcfoundation.org/UA/GDS/applications/ ;ns=2;g=aec94459-f513-4979-8619-8383555fca61
}
}
}
# Shows how to find all registrations in the GDS.
#
# 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 .NET namespaces.
from System import *
from OpcLabs.EasyOpc.UA import *
from OpcLabs.EasyOpc.UA.Discovery import *
from OpcLabs.EasyOpc.UA.Extensions import *
from OpcLabs.EasyOpc.UA.Gds import *
from OpcLabs.EasyOpc.UA.OperationModel import *
# Define which GDS we will work with.
gdsEndpointDescriptor = UAEndpointDescriptor('opc.tcp://opcua.demo-this.com:58810/GlobalDiscoveryServer')
gdsEndpointDescriptor = UAEndpointDescriptorExtension.WithUserNameIdentity(gdsEndpointDescriptor,
'appadmin', 'demo')
# Instantiate the global discovery client object.
globalDiscoveryClient = EasyUAGlobalDiscoveryClient()
# Find all (client or server) applications registered in the GDS.
try:
_, _, _, applicationDescriptionArray = globalDiscoveryClient.QueryApplications(
gdsEndpointDescriptor,
0, # startingRecordId
0, # maximumRecordsToReturn
'', # applicationName
'', # applicationUriString
UAApplicationTypes.All, # applicationTypes
'', # productUriString
Array.Empty[String](), # serverCapabilities
DateTime(), # out lastCounterResetTime
0, # out nextRecordId
Array.Empty[UAApplicationDescription]()) # out applications
except UAException as uaException:
print('*** Failure: ' + uaException.GetBaseException().Message)
exit()
# For each application returned by the query, find its registrations in the GDS.
for applicationDescription in applicationDescriptionArray:
print()
print('Application URI string: ', applicationDescription.ApplicationUriString, sep='')
try:
applicationRecordArray = globalDiscoveryClient.FindApplications(
gdsEndpointDescriptor,
applicationDescription.ApplicationUriString)
except UAException as uaException:
print(' *** Failure: ' + uaException.GetBaseException().Message)
continue
# Display results.
for applicationRecord in applicationRecordArray:
print(' Application ID: ', applicationRecord.ApplicationId, sep='')
print()
print('Finished.')
' Shows how to find all registrations in the GDS.
'
' Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html .
Imports OpcLabs.EasyOpc.UA
Imports OpcLabs.EasyOpc.UA.Discovery
Imports OpcLabs.EasyOpc.UA.Extensions
Imports OpcLabs.EasyOpc.UA.Gds
Imports OpcLabs.EasyOpc.UA.OperationModel
Namespace Gds._EasyUAGlobalDiscoveryClient
Friend Class FindApplications
Public Shared Sub Main1()
' Define which GDS we will work with.
Dim gdsEndpointDescriptor As UAEndpointDescriptor =
New UAEndpointDescriptor("opc.tcp://opcua.demo-this.com:58810/GlobalDiscoveryServer") _
.WithUserNameIdentity("appuser", "demo")
' Instantiate the global discovery client object
Dim globalDiscoveryClient = New EasyUAGlobalDiscoveryClient()
' Find all (client or server) applications registered in the GDS.
Dim applicationDescriptionArray() As UAApplicationDescription = Nothing
Try
Dim lastCounterResetTime As DateTime
Dim nextRecordId As Long
globalDiscoveryClient.QueryApplications(
gdsEndpointDescriptor:=gdsEndpointDescriptor,
startingRecordId:=0,
maximumRecordsToReturn:=0,
applicationName:="",
applicationUriString:="",
applicationTypes:=UAApplicationTypes.All,
productUriString:="",
serverCapabilities:=New String() {},
lastCounterResetTime:=lastCounterResetTime,
nextRecordId:=nextRecordId,
applications:=applicationDescriptionArray)
Catch uaException As UAException
Console.WriteLine("*** Failure: {0}", uaException.GetBaseException.Message)
Exit Sub
End Try
' For each application returned by the query, find its registrations in the GDS.
For Each applicationDescription As UAApplicationDescription In applicationDescriptionArray
Console.WriteLine()
Console.WriteLine("Application URI string: {0}", applicationDescription.ApplicationUriString)
Dim applicationRecordArray() As UAApplicationRecordDataType
Try
applicationRecordArray = globalDiscoveryClient.FindApplications(
gdsEndpointDescriptor,
applicationDescription.ApplicationUriString)
Catch uaException As UAException
Console.WriteLine("*** Failure: {0}", uaException.GetBaseException.Message)
Continue For
End Try
' Display results
For Each applicationRecord As UAApplicationRecordDataType In applicationRecordArray
Console.WriteLine(" Application ID: {0}", applicationRecord.ApplicationId)
Next applicationRecord
Next applicationDescription
End Sub
End Class
End Namespace
// Shows how to find all registrations in the GDS.
//
// Find all latest examples here : https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html .
class procedure FindApplications.Main;
var
ApplicationDescription: _UAApplicationDescription;
ApplicationDescriptionArray: OleVariant;
ApplicationName: WideString;
ApplicationRecord: _UAApplicationRecordDataType;
ApplicationRecordArray: OleVariant;
ApplicationUriString: WideString;
GlobalDiscoveryClient: OpcLabs_EasyOpcUA_TLB._EasyUAGlobalDiscoveryClient;
GdsEndpointDescriptor: _UAEndpointDescriptor;
I, J: integer;
LastCounterResetTime: TDateTime;
MaximumRecordsToReturn: Integer;
NextRecordId: Integer;
ProductUriString: WideString;
ServerCapabilities: array of string;
StartingRecordId: Integer;
begin
// Define which GDS we will work with.
GdsEndpointDescriptor := CoUAEndpointDescriptor.Create;
GdsEndpointDescriptor.UrlString := 'opc.tcp://opcua.demo-this.com:58810/GlobalDiscoveryServer';
GdsEndpointDescriptor.UserIdentity.UserNameTokenInfo.UserName := 'appadmin';
GdsEndpointDescriptor.UserIdentity.UserNameTokenInfo.Password := 'demo';
// Instantiate the global discovery client object
GlobalDiscoveryClient := CoEasyUAGlobalDiscoveryClient.Create;
// Find all (client or server) applications registered in the GDS.
StartingRecordId := 0;
MaximumRecordsToReturn := 0;
ApplicationName := '';
ApplicationUriString := '';
ProductUriString := '';
try
GlobalDiscoveryClient.QueryApplications(
GdsEndpointDescriptor,
StartingRecordId,
MaximumRecordsToReturn,
ApplicationName,
ApplicationUriString,
UAApplicationTypes_All,
ProductUriString,
ServerCapabilities,
LastCounterResetTime,
NextRecordId,
ApplicationDescriptionArray);
except
on E: EOleException do
begin
WriteLn(Format('*** Failure: %s', [E.GetBaseException.Message]));
end;
end;
// For each application returned by the query, find its registrations in the GDS.
for I := VarArrayLowBound(ApplicationDescriptionArray,1) to VarArrayHighBound(ApplicationDescriptionArray,1) do
begin
ApplicationDescription := IUnknown(ApplicationDescriptionArray[I]) as _UAApplicationDescription;
WriteLn;
WriteLn('Application URI string: ', ApplicationDescription.ApplicationUriString);
try
TVarData(ApplicationRecordArray).VType := varArray or varVariant;
TVarData(ApplicationRecordArray).VArray := PVarArray(
GlobalDiscoveryClient.FindApplications(
GdsEndpointDescriptor,
ApplicationDescription.ApplicationUriString));
except
on E: EOleException do
begin
WriteLn(Format('*** Failure: %s', [E.GetBaseException.Message]));
Continue;
end;
end;
for J := VarArrayLowBound(ApplicationRecordArray, 1) to VarArrayHighBound(ApplicationRecordArray, 1) do
begin
// Display results
ApplicationRecord := IUnknown(ApplicationRecordArray[J]) as _UAApplicationRecordDataType;
WriteLn(' Application ID: ', ApplicationRecord.ApplicationId.ToString);
end;
end;
// Example output:
//
//Application URI string: urn:sampleserver
// Application ID: nsu=http://opcfoundation.org/UA/GDS/applications/ ;ns=2;g=09ecaa08-6ec6-462c-a214-1e66a3099107
//
//Application URI string: urn:alarmconditionserver
// Application ID: nsu=http://opcfoundation.org/UA/GDS/applications/ ;ns=2;g=783e1e9a-8036-43b6-928f-97488c460266
//
//Application URI string: urn:PC:MultiTargetUADocExamples:5.54.1026.1:neutral:null
// Application ID: nsu=http://opcfoundation.org/UA/GDS/applications/ ;ns=2;g=9e700ea5-55a6-4c3c-ba9f-b91c890dc519
//
//Application URI string: urn:PC:UADocExamples:5.56.0.16:neutral:null
// Application ID: nsu=http://opcfoundation.org/UA/GDS/applications/ ;ns=2;g=e182e28c-086b-4fc7-82c7-70ca7cda3033
//
//Application URI string: urn:PC:cscript:5.812.10240.16384
// Application ID: nsu=http://opcfoundation.org/UA/GDS/applications/ ;ns=2;g=aec94459-f513-4979-8619-8383555fca61
end;
Rem Shows how to find all registrations in the GDS.
Rem
Rem Find all latest examples here : https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html .
Option Explicit
Const UAApplicationTypes_All = 7
' Define which GDS we will work with.
Dim GdsEndpointDescriptor: Set GdsEndpointDescriptor = CreateObject("OpcLabs.EasyOpc.UA.UAEndpointDescriptor")
GdsEndpointDescriptor.UrlString = "opc.tcp://opcua.demo-this.com:58810/GlobalDiscoveryServer"
GdsEndpointDescriptor.UserIdentity.UserNameTokenInfo.UserName = "appadmin"
GdsEndpointDescriptor.UserIdentity.UserNameTokenInfo.Password = "demo"
' Instantiate the global discovery client object
Dim GlobalDiscoveryClient: Set GlobalDiscoveryClient = CreateObject("OpcLabs.EasyOpc.UA.Gds.EasyUAGlobalDiscoveryClient")
' Find all (client or server) applications registered in the GDS.
Dim startingRecordId: startingRecordId = 0
Dim maximumRecordsToReturn: maximumRecordsToReturn = 0
Dim applicationName: applicationName = ""
Dim applicationUriString: applicationUriString = ""
Dim productUriString: productUriString = ""
Dim serverCapabilities: serverCapabilities = Array()
Dim lastCounterResetTime
Dim nextRecordId
Dim applicationDescriptionArray
On Error Resume Next
GlobalDiscoveryClient.QueryApplications _
GdsEndpointDescriptor, _
startingRecordId, _
maximumRecordsToReturn, _
applicationName, _
applicationUriString, _
UAApplicationTypes_All, _
productUriString, _
serverCapabilities, _
lastCounterResetTime, _
nextRecordId, _
applicationDescriptionArray
If Err.Number <> 0 Then
WScript.Echo "*** Failure: " & Err.Source & ": " & Err.Description
WScript.Quit
End If
On Error Goto 0
' For each application returned by the query, find its registrations in the GDS.
Dim ApplicationDescription
For Each ApplicationDescription In applicationDescriptionArray
WScript.Echo
WScript.Echo "Application URI string: " & ApplicationDescription.ApplicationUriString
On Error Resume Next
Dim applicationRecordArray: applicationRecordArray = GlobalDiscoveryClient.FindApplications( _
gdsEndpointDescriptor, _
ApplicationDescription.ApplicationUriString)
If Err.Number <> 0 Then
WScript.Echo " *** Failure: " & Err.Source & ": " & Err.Description
Else
Dim ApplicationRecord
For Each ApplicationRecord In applicationRecordArray
' Display results
WScript.Echo " Application ID: " & ApplicationRecord.ApplicationId
Next
End If
On Error Goto 0
Next
' Example output:
'
'Application URI string: urn:sampleserver
' Application ID: nsu=http://opcfoundation.org/UA/GDS/applications/ ;ns=2;g=09ecaa08-6ec6-462c-a214-1e66a3099107
'
'Application URI string: urn:alarmconditionserver
' Application ID: nsu=http://opcfoundation.org/UA/GDS/applications/ ;ns=2;g=783e1e9a-8036-43b6-928f-97488c460266
'
'Application URI string: urn:PC:MultiTargetUADocExamples:5.54.1026.1:neutral:null
' Application ID: nsu=http://opcfoundation.org/UA/GDS/applications/ ;ns=2;g=9e700ea5-55a6-4c3c-ba9f-b91c890dc519
'
'Application URI string: urn:PC:UADocExamples:5.56.0.16:neutral:null
' Application ID: nsu=http://opcfoundation.org/UA/GDS/applications/ ;ns=2;g=e182e28c-086b-4fc7-82c7-70ca7cda3033
'
'Application URI string: urn:PC:cscript:5.812.10240.16384
' Application ID: nsu=http://opcfoundation.org/UA/GDS/applications/ ;ns=2;g=aec94459-f513-4979-8619-8383555fca61
Requirements
Target Platforms: .NET Framework: Windows 10 (selected versions), Windows 11 (selected versions), Windows Server 2016, Windows Server 2022; .NET: Linux, macOS, Microsoft Windows
See Also