// Shows how to unregister all clients from a GDS. // // 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 System.Collections.Generic; using System.Linq; using OpcLabs.BaseLib.Collections.Generic.Extensions; using OpcLabs.EasyOpc.UA; using OpcLabs.EasyOpc.UA.AddressSpace; 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 UnregisterApplication { public static void Main1() { // Define which GDS we will work with. UAEndpointDescriptor gdsEndpointDescriptor = ((UAEndpointDescriptor)"opc.tcp://opcua.demo-this.com:58810/GlobalDiscoveryServer") .WithUserNameIdentity("appadmin", "demo"); // Instantiate the global discovery client object var globalDiscoveryClient = new EasyUAGlobalDiscoveryClient(); // Find application IDs of all client applications registered in the GDS. var clientApplicationIds = new HashSet<UANodeId>(); try { globalDiscoveryClient.QueryApplications( gdsEndpointDescriptor: gdsEndpointDescriptor, startingRecordId: 0, maximumRecordsToReturn: 0, applicationName: "", applicationUriString: "", applicationTypes: UAApplicationTypes.Client, productUriString: "", serverCapabilities: new string[0], lastCounterResetTime: out _, nextRecordId: out _, applications: out UAApplicationDescription[] applicationDescriptionArray); foreach (UAApplicationDescription applicationDescription in applicationDescriptionArray) { var applicationRecordArray = globalDiscoveryClient.FindApplications( gdsEndpointDescriptor, applicationDescription.ApplicationUriString); clientApplicationIds.AddRange(applicationRecordArray.Select(description => description.ApplicationId)); } } catch (UAException uaException) { Console.WriteLine("*** Failure: {0}", uaException.GetBaseException().Message); return; } // Unregister all client applications found. foreach (UANodeId applicationId in clientApplicationIds) { Console.WriteLine(); Console.WriteLine("Application ID: {0}", applicationId); try { globalDiscoveryClient.UnregisterApplication(gdsEndpointDescriptor, applicationId); } catch (UAException uaException) { Console.WriteLine("*** Failure: {0}", uaException.GetBaseException().Message); continue; } Console.WriteLine("Unregistered."); } } } }
' Shows how to unregister all clients from a GDS. ' ' 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 System.Linq Imports OpcLabs.BaseLib.Collections.Generic.Extensions Imports OpcLabs.EasyOpc.UA Imports OpcLabs.EasyOpc.UA.AddressSpace 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 UnregisterApplication 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("appadmin", "demo") ' Instantiate the global discovery client object Dim globalDiscoveryClient = New EasyUAGlobalDiscoveryClient() ' Find application IDs of all client applications registered in the GDS. Dim clientApplicationIds = New HashSet(Of UANodeId) Try Dim lastCounterResetTime As DateTime Dim nextRecordId As Long Dim applicationDescriptionArray() As UAApplicationDescription = Nothing globalDiscoveryClient.QueryApplications( gdsEndpointDescriptor:=gdsEndpointDescriptor, startingRecordId:=0, maximumRecordsToReturn:=0, applicationName:="", applicationUriString:="", applicationTypes:=UAApplicationTypes.Client, productUriString:="", serverCapabilities:=New String() {}, lastCounterResetTime:=lastCounterResetTime, nextRecordId:=nextRecordId, applications:=applicationDescriptionArray) For Each applicationDescription As UAApplicationDescription In applicationDescriptionArray Dim applicationRecordArray = globalDiscoveryClient.FindApplications( gdsEndpointDescriptor, applicationDescription.ApplicationUriString) clientApplicationIds.AddRange(applicationRecordArray.Select(Function(description) description.ApplicationId)) Next applicationDescription Catch uaException As UAException Console.WriteLine("*** Failure: {0}", uaException.GetBaseException.Message) Exit Sub End Try ' Unregister all client applications found. For Each applicationId As UANodeId In clientApplicationIds Console.WriteLine() Console.WriteLine("Application ID: {0}", applicationId) Try globalDiscoveryClient.UnregisterApplication(gdsEndpointDescriptor, applicationId) Catch uaException As UAException Console.WriteLine("*** Failure: {0}", uaException.GetBaseException.Message) Continue For End Try Console.WriteLine("Unregistered.") Next applicationId End Sub End Class End Namespace
// Shows how to unregister all clients from a GDS. // // 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 UnregisterApplication.Main; var ApplicationDescription: _UAApplicationDescription; ApplicationDescriptionArray: OleVariant; ApplicationId: _UANodeId; ApplicationName: WideString; ApplicationRecord: _UAApplicationRecordDataType; ApplicationRecordArray: OleVariant; ApplicationUriString: WideString; ClientApplicationIds: TList<_UANodeID>; 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 application IDs of all client applications registered in the GDS. ClientApplicationIds := TList<_UANodeID>.Create(); StartingRecordId := 0; MaximumRecordsToReturn := 0; ApplicationName := ''; ApplicationUriString := ''; ProductUriString := ''; try GlobalDiscoveryClient.QueryApplications( GdsEndpointDescriptor, StartingRecordId, MaximumRecordsToReturn, ApplicationName, ApplicationUriString, UAApplicationTypes_Client, ProductUriString, ServerCapabilities, LastCounterResetTime, NextRecordId, ApplicationDescriptionArray); for I := VarArrayLowBound(ApplicationDescriptionArray,1) to VarArrayHighBound(ApplicationDescriptionArray,1) do begin ApplicationDescription := IUnknown(ApplicationDescriptionArray[I]) as _UAApplicationDescription; TVarData(ApplicationRecordArray).VType := varArray or varVariant; TVarData(ApplicationRecordArray).VArray := PVarArray(GlobalDiscoveryClient.FindApplications( GdsEndpointDescriptor, ApplicationDescription.ApplicationUriString)); for J := VarArrayLowBound(ApplicationRecordArray,1) to VarArrayHighBound(ApplicationRecordArray,1) do begin ApplicationRecord := IUnknown(ApplicationRecordArray[J]) as _UAApplicationRecordDataType; ClientApplicationIds.Add(ApplicationRecord.ApplicationId); end; end; except on E: EOleException do begin WriteLn(Format('*** Failure: %s', [E.GetBaseException.Message])); end; end; // Unregister all client applications found. for ApplicationId in ClientApplicationIds do begin WriteLn; WriteLn('Application ID: ', ApplicationId.ToString); try GlobalDiscoveryClient.UnregisterApplication( GdsEndpointDescriptor, ApplicationId); except on E: EOleException do begin WriteLn(Format('*** Failure: %s', [E.GetBaseException.Message])); Continue; end; end; WriteLn('Unregistered.'); end; FreeAndNil(ClientApplicationIds); end;
# Shows how to unregister all clients from a 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.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 application IDs of all client applications registered in the GDS. clientApplicationIds = set() try: _, _, _, applicationDescriptionArray = globalDiscoveryClient.QueryApplications( gdsEndpointDescriptor, 0, # startingRecordId 0, # maximumRecordsToReturn '', # applicationName '', # applicationUriString UAApplicationTypes.Client, # applicationTypes '', # productUriString Array.Empty[String](), # serverCapabilities DateTime(), # out lastCounterResetTime 0, # out nextRecordId Array.Empty[UAApplicationDescription]()) # out applications for applicationDescription in applicationDescriptionArray: applicationRecordArray = globalDiscoveryClient.FindApplications( gdsEndpointDescriptor, applicationDescription.ApplicationUriString) for applicationRecord in applicationRecordArray: clientApplicationIds.add(applicationRecord.ApplicationId) except UAException as uaException: print('*** Failure: ' + uaException.GetBaseException().Message) exit() # Unregister all client applications found. for applicationId in clientApplicationIds: print() print('Application ID: ', applicationId, sep='') try: globalDiscoveryClient.UnregisterApplication(gdsEndpointDescriptor, applicationId) except UAException as uaException: print('*** Failure: ' + uaException.GetBaseException().Message) continue print('Application unregistered.') print() print('Finished.')
Copyright © 2004-2024 CODE Consulting and Development, s.r.o., Plzen. All rights reserved. Web page: www.opclabs.com
Documentation Home, Send Feedback. Resources: Knowledge Base, Product Downloads. Technical support: Online Forums, FAQ.Missing some example? Ask us for it on our Online Forums! You do not have to own a commercial license in order to use Online Forums, and we reply to every post.