// Shows how to find client or server applications that meet the specified filters, using the global discovery client.
//
// 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.Discovery;
using OpcLabs.EasyOpc.UA.Gds;
using OpcLabs.EasyOpc.UA.OperationModel;
namespace UADocExamples.Gds._EasyUAGlobalDiscoveryClient
{
class QueryApplications
{
public static void Main1()
{
// 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:"opc.tcp://opcua.demo-this.com:58810/GlobalDiscoveryServer",
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;
}
// Display results
foreach (UAApplicationDescription applicationDescription in applicationDescriptionArray)
{
Console.WriteLine();
Console.WriteLine("Application name: {0}", applicationDescription.ApplicationName);
Console.WriteLine("Application type: {0}", applicationDescription.ApplicationType);
Console.WriteLine("Application URI string: {0}", applicationDescription.ApplicationUriString);
Console.WriteLine("Discovery URI strings: {0}", applicationDescription.DiscoveryUriStrings);
}
}
}
}
' Shows how to find client or server applications that meet the specified filters, using the global discovery client.
'
' 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.Discovery
Imports OpcLabs.EasyOpc.UA.Gds
Imports OpcLabs.EasyOpc.UA.OperationModel
Namespace Gds._EasyUAGlobalDiscoveryClient
Friend Class QueryApplications
Public Shared Sub Main1()
' 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:="opc.tcp://opcua.demo-this.com:58810/GlobalDiscoveryServer",
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
' Display results
For Each applicationDescription As UAApplicationDescription In applicationDescriptionArray
Console.WriteLine()
Console.WriteLine("Application name: {0}", applicationDescription.ApplicationName)
Console.WriteLine("Application type: {0}", applicationDescription.ApplicationType)
Console.WriteLine("Application URI string: {0}", applicationDescription.ApplicationUriString)
Console.WriteLine("Discovery URI strings: {0}", applicationDescription.DiscoveryUriStrings)
Next applicationDescription
End Sub
End Class
End Namespace
// Shows how to find client or server applications that meet the specified filters, using the global discovery client.
//
// 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 QueryApplications.Main;
var
ApplicationDescription: _UAApplicationDescription;
ApplicationDescriptionArray: OleVariant;
ApplicationName: WideString;
ApplicationUriString: WideString;
GlobalDiscoveryClient: OpcLabs_EasyOpcUA_TLB._EasyUAGlobalDiscoveryClient;
GdsEndpointDescriptor: _UAEndpointDescriptor;
I: 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';
// 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;
// Display results
for I := VarArrayLowBound(ApplicationDescriptionArray,1) to VarArrayHighBound(ApplicationDescriptionArray,1) do
begin
ApplicationDescription := IUnknown(ApplicationDescriptionArray[I]) as _UAApplicationDescription;
WriteLn;
WriteLn('Application name: ', ApplicationDescription.ApplicationName);
WriteLn('Application type: ', ApplicationDescription.ApplicationType);
WriteLn('Application URI string: ', ApplicationDescription.ApplicationUriString);
WriteLn('Discovery URI strings: ', ApplicationDescription.DiscoveryUriStrings.ToString);
end;
end;
REM Shows how to find client or server applications that meet the specified filters, using the global discovery client.
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 EasyUAGlobalDiscoveryClient_QueryApplications_Main_Command_Click()
OutputText = ""
' Define which GDS we will work with.
Dim gdsEndpointDescriptor As New UAEndpointDescriptor
gdsEndpointDescriptor.UrlString = "opc.tcp://opcua.demo-this.com:58810/GlobalDiscoveryServer"
' Instantiate the global discovery client object
Dim globalDiscoveryClient As New EasyUAGlobalDiscoveryClient
' Find all (client or server) applications registered in the GDS.
Dim startingRecordId As Long: startingRecordId = 0
Dim maximumRecordsToReturn As Long: maximumRecordsToReturn = 0
Dim applicationName As String: applicationName = ""
Dim applicationUriString As String: applicationUriString = ""
Dim productUriString As String: productUriString = ""
Dim serverCapabilities: serverCapabilities = Array()
Dim lastCounterResetTime As Date
Dim nextRecordId As Long
Dim applicationDescriptionArray As Variant
On Error Resume Next
Dim applicationId As UANodeId
Call globalDiscoveryClient.QueryApplications( _
gdsEndpointDescriptor, _
startingRecordId, _
maximumRecordsToReturn, _
applicationName, _
applicationUriString, _
UAApplicationTypes_All, _
productUriString, _
serverCapabilities, _
lastCounterResetTime, _
nextRecordId, _
applicationDescriptionArray)
If Err.Number <> 0 Then
OutputText = OutputText & "*** Failure: " & Err.Source & ": " & Err.Description & vbCrLf
Exit Sub
End If
On Error GoTo 0
' Display results
Dim i: For i = LBound(applicationDescriptionArray) To UBound(applicationDescriptionArray)
Dim applicationDescription As UAApplicationDescription
Set applicationDescription = applicationDescriptionArray(i)
OutputText = OutputText & vbCrLf
OutputText = OutputText & "Application name: " & applicationDescription.applicationName & vbCrLf
OutputText = OutputText & "Application type: " & applicationDescription.ApplicationType & vbCrLf
OutputText = OutputText & "Application URI string: " & applicationDescription.applicationUriString & vbCrLf
OutputText = OutputText & "Discovery URI strings: " & applicationDescription.DiscoveryUriStrings.ToString & vbCrLf
Next
End Sub
# 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 .
# 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 System import *
from OpcLabs.EasyOpc.UA import *
from OpcLabs.EasyOpc.UA.Discovery 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')
# 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()
# Display results.
for applicationDescription in applicationDescriptionArray:
print()
print('Application name: ', applicationDescription.ApplicationName, sep='')
print('Application type: ', applicationDescription.ApplicationType, sep='')
print('Application URI string: ', applicationDescription.ApplicationUriString, sep='')
print('Discovery URI strings: ', applicationDescription.DiscoveryUriStrings, sep='')
print()
print('Finished.')