The example below starts at the "root" of the PubSub configuration, and first obtains names of all PubSub connections available (they are at the 1st level). For each PubSub connection, given its name, it obtains names of writer groups configured on that PubSub connection (they are at the 2nd level). And, for each such writer group, given its name, it obtains names of all dataset writers configured on that writer group (they are at the 3rd level). Besides the PubSub object names, the commented parts also show how to obtain more detailed information about each PubSub object.
// This example obtains and prints out information about PubSub connections, writer groups, and dataset writers in the // OPC UA PubSub configuration. // // 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.BaseLib.Collections.Specialized; using OpcLabs.EasyOpc.UA.OperationModel; using OpcLabs.EasyOpc.UA.PubSub.Configuration; using OpcLabs.EasyOpc.UA.PubSub.InformationModel; using OpcLabs.EasyOpc.UA.PubSub.InformationModel.Extensions; namespace UASubscriberDocExamples.PubSub._IUAReadOnlyPubSubConfiguration { partial class GetMethods { public static void PubSubComponents() { // Instantiate the publish-subscribe client object. var publishSubscribeClient = new EasyUAPublishSubscribeClient(); try { Console.WriteLine("Loading the configuration..."); // Load the PubSub configuration from a file. The file itself is at the root of the project, and we have // specified that it has to be copied to the project's output directory. IUAReadOnlyPubSubConfiguration pubSubConfiguration = publishSubscribeClient.LoadReadOnlyConfiguration("UADemoPublisher-Default.uabinary"); // Alternatively, using the statement below, you can access a live configuration residing in an OPC UA Server // with appropriate information model. //IUAReadOnlyPubSubConfiguration pubSubConfiguration = // publishSubscribeClient.AccessReadOnlyConfiguration("opc.tcp://localhost:48010"); // Get the names of PubSub connections in the configuration, regardless of the folder they reside in. StringCollection pubSubConnectionNames = pubSubConfiguration.ListConnectionNames(); foreach (string pubSubConnectionName in pubSubConnectionNames) { Console.WriteLine($"PubSub connection: {pubSubConnectionName}"); // You can use the statement below to obtain parameters of the PubSub connection. //UAPubSubConnectionElement connectionElement = // pubSubConfiguration.GetConnectionElement(pubSubConnectionName); // Get names of the writer groups on this PubSub connection. StringCollection writerGroupNames = pubSubConfiguration.ListWriterGroupNames(pubSubConnectionName); foreach (string writerGroupName in writerGroupNames) { Console.WriteLine($" Writer group: {writerGroupName}"); // You can use the statement below to obtain parameters of the writer group. //UAWriterGroupElement writerGroupElement = // pubSubConfiguration.GetWriterGroupElement(pubSubConnectionName, writerGroupName); // Get names of the dataset writers on this writer group. StringCollection dataSetWriterNames = pubSubConfiguration.ListDataSetWriterNames(pubSubConnectionName, writerGroupName); foreach (string dataSetWriterName in dataSetWriterNames) { Console.WriteLine($" Dataset writer: {dataSetWriterName}"); // You can use the statement below to obtain parameters of the dataset writer. //UADataSetWriterElement dataSetWriterElement = pubSubConfiguration.GetDataSetWriterElement( // pubSubConnectionName, writerGroupName, dataSetWriterName); } } } } catch (UAException uaException) { Console.WriteLine($"*** Failure: {uaException.InnerException.Message}"); } Console.WriteLine("Finished."); } // Example output: // //Loading the configuration... //PubSub connection: FixedLayoutConnection // Writer group: FixedLayoutGroup // Dataset writer: SimpleWriter // Dataset writer: AllTypesWriter // Dataset writer: MassTestWriter //PubSub connection: DynamicLayoutConnection // Writer group: DynamicLayoutGroup // Dataset writer: SimpleWriter // Dataset writer: MassTestWriter // Dataset writer: AllTypes-DynamicWriter // Dataset writer: EventSimpleWriter //PubSub connection: FlexibleLayoutConnection // Writer group: FlexibleLayoutGroup // Dataset writer: SimpleWriter // Dataset writer: MassTestWriter // Dataset writer: AllTypes-DynamicWriter //Finished. } }
' This example obtains and prints out information about PubSub connections, writer groups, and dataset writers in the ' OPC UA PubSub configuration. ' ' 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.OperationModel Imports OpcLabs.EasyOpc.UA.PubSub.Configuration 'Imports OpcLabs.EasyOpc.UA.PubSub.Configuration.Extensions Imports OpcLabs.EasyOpc.UA.PubSub.InformationModel Imports OpcLabs.EasyOpc.UA.PubSub.InformationModel.Extensions Namespace PubSub._IUAReadOnlyPubSubConfiguration Partial Friend Class GetMethods Public Shared Sub PubSubComponents() ' Instantiate the publish-subscribe client object. Dim publishSubscribeClient = New EasyUAPublishSubscribeClient() Try Console.WriteLine("Loading the configuration...") ' Load the PubSub configuration from a file. The file itself is at the root of the project, and we have ' specified that it has to be copied to the project's output directory. Dim pubSubConfiguration As IUAReadOnlyPubSubConfiguration = publishSubscribeClient.LoadReadOnlyConfiguration("UADemoPublisher-Default.uabinary") ' Alternatively, using the statement below, you can access a live configuration residing in an OPC UA ' Server with appropriate information model. 'Dim pubSubConfiguration As IUAReadOnlyPubSubConfiguration = ' publishSubscribeClient.AccessReadOnlyConfiguration("opc.tcp://localhost:48010") ' Get the names of PubSub connections in the configuration, regardless of the folder they reside in. Dim pubSubConnectionNames = pubSubConfiguration.ListConnectionNames() For Each pubSubConnectionName As String In pubSubConnectionNames Console.WriteLine($"PubSub connection: {pubSubConnectionName}") ' You can use the statement below to obtain parameters of the PubSub connection. 'Dim connectionElement As UAPubSubConnectionElement = ' pubSubConfiguration.GetConnectionElement(pubSubConnectionName) ' Get names of the writer groups on this PubSub connection. Dim writerGroupNames = pubSubConfiguration.ListWriterGroupNames(pubSubConnectionName) For Each writerGroupName As String In writerGroupNames Console.WriteLine($" Writer group: {writerGroupName}") ' You can use the statement below to obtain parameters of the writer group. 'Dim writerGroupElement As UAWriterGroupElement = ' pubSubConfiguration.GetWriterGroupElement(pubSubConnectionName, writerGroupName) ' Get names of the dataset writers on this writer group. Dim dataSetWriterNames = pubSubConfiguration.ListDataSetWriterNames(pubSubConnectionName, writerGroupName) For Each dataSetWriterName As String In dataSetWriterNames Console.WriteLine($" Dataset writer: {dataSetWriterName}") ' You can use the statement below to obtain parameters of the dataset writer. 'Dim dataSetWriterElement As UADataSetWriterElement = pubSubConfiguration.GetDataSetWriterElement( ' pubSubConnectionName, writerGroupName, dataSetWriterName) Next dataSetWriterName Next writerGroupName Next pubSubConnectionName Catch uaException As UAException Console.WriteLine($"*** Failure: {uaException.InnerException.Message}") End Try Console.WriteLine("Finished...") End Sub End Class ' Example output ' 'Loading the configuration... 'PubSub connection FixedLayoutConnection ' Writer group: FixedLayoutGroup ' Dataset writer: SimpleWriter ' Dataset writer: AllTypesWriter ' Dataset writer: MassTestWriter 'PubSub connection: DynamicLayoutConnection ' Writer group: DynamicLayoutGroup ' Dataset writer: SimpleWriter ' Dataset writer: MassTestWriter ' Dataset writer: AllTypes-DynamicWriter ' Dataset writer: EventSimpleWriter 'PubSub connection: FlexibleLayoutConnection ' Writer group: FlexibleLayoutGroup ' Dataset writer: SimpleWriter ' Dataset writer: MassTestWriter ' Dataset writer: AllTypes-DynamicWriter 'Finished. End Namespace
// This example obtains and prints out information about PubSub connections, writer groups, and dataset writers in the // OPC UA PubSub configuration. // // 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 GetMethods.PubSubComponents; var //DataSetWriterElement: _UADataSetWriterElement; DataSetWriterName: string; DataSetWriterNames: _StringCollection; //EndpointDescriptor: _UAEndpointDescriptor; I, J, K: Integer; //PubSubConnectionElement: _UAPubSubConnectionElement; PubSubConnectionName: string; ConnectionNames: _StringCollection; PublishSubscribeClient: _EasyUAPublishSubscribeClient; PubSubConfiguration: _UAReadOnlyPubSubConfiguration; //WriterGroupElement: _UAWriterGroupElement; WriterGroupName: string; WriterGroupNames: _StringCollection; begin // Instantiate the publish-subscribe client object. PublishSubscribeClient := CoEasyUAPublishSubscribeClient.Create; try WriteLn('Loading the configuration...'); // Load the PubSub configuration from a file. The file itself is included alongside the script. PubSubConfiguration := PublishSubscribeClient.LoadReadOnlyConfiguration('UADemoPublisher-Default.uabinary'); // Alternatively, using the statements below, you can access a live configuration residing in an OPC UA Server // with appropriate information model. //EndpointDescriptor := CoUAEndpointDescriptor.Create; //EndpointDescriptor.UrlString := 'opc.tcp://localhost:48010'; //PubSubConfiguration := PublishSubscribeClient.AccessReadOnlyConfiguration(EndpointDescriptor); // Get the names of PubSub connections in the configuration. ConnectionNames := PubSubConfiguration.ListConnectionNames; for I := 0 to ConnectionNames.Count-1 do begin PubSubConnectionName := ConnectionNames[I]; WriteLn('PubSub connection: ', PubSubConnectionName); // You can use the statement below to obtain parameters of the PubSub connection. //PubSubConnectionElement := PubSubConfiguration.GetConnectionElement(PubSubConnectionName); // Get names of the writer groups on this PubSub connection. WriterGroupNames := PubSubConfiguration.ListWriterGroupNames(PubSubConnectionName); for J := 0 to WriterGroupNames.Count-1 do begin WriterGroupName := WriterGroupNames[J]; WriteLn(' Writer group: ', WriterGroupName); // You can use the statement below to obtain parameters of the writer group. //WriterGroupElement := PubSubConfiguration.GetWriterGroupElement(PubSubConnectionName, WriterGroupName); // Get names of the dataset writers on this writer group. DataSetWriterNames := PubSubConfiguration.ListDataSetWriterNames(PubSubConnectionName, WriterGroupName); for K := 0 to DataSetWriterNames.Count-1 do begin DataSetWriterName := DataSetWriterNames[K]; WriteLn(' Dataset writer: ', DataSetWriterName); // You can use the statement below to obtain parameters of the dataset writer. //DataSetWriterElement := PubSubConfiguration.GetDataSetWriterElement(PubSubConnectionName, WriterGroupName, DataSetWriterName); end; end; end; except on E: EOleException do begin WriteLn(Format('*** Failure: %s', [E.GetBaseException.Message])); end; end; WriteLn('Finished.'); end; // Example output: // //Loading the configuration... //PubSub connection: FixedLayoutConnection // Writer group: FixedLayoutGroup // Dataset writer: SimpleWriter // Dataset writer: AllTypesWriter // Dataset writer: MassTestWriter //PubSub connection: DynamicLayoutConnection // Writer group: DynamicLayoutGroup // Dataset writer: SimpleWriter // Dataset writer: MassTestWriter // Dataset writer: AllTypes-DynamicWriter // Dataset writer: EventSimpleWriter //PubSub connection: FlexibleLayoutConnection // Writer group: FlexibleLayoutGroup // Dataset writer: SimpleWriter // Dataset writer: MassTestWriter // Dataset writer: AllTypes-DynamicWriter //Finished.
Rem This example obtains and prints out information about PubSub connections, writer groups, and dataset writers in the Rem OPC UA PubSub configuration. 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 ' Instantiate the publish-subscribe client object. Dim PublishSubscribeClient: Set PublishSubscribeClient = CreateObject("OpcLabs.EasyOpc.UA.PubSub.InformationModel.EasyUAPublishSubscribeClient") On Error Resume Next DumpPubSubComponents If Err.Number <> 0 Then WScript.Echo "*** Failure: " & Err.Source & ": " & Err.Description WScript.Quit End If On Error Goto 0 WScript.Echo "Finished." Sub DumpPubSubComponents() WScript.Echo "Loading the configuration..." ' Load the PubSub configuration from a file. The file itself is included alongside the script. Dim PubSubConfiguration: Set PubSubConfiguration = PublishSubscribeClient.LoadReadOnlyConfiguration("UADemoPublisher-Default.uabinary") ' Alternatively, using the statements below, you can access a live configuration residing in an OPC UA Server ' with appropriate information model. 'Dim EndpointDescriptor: Set EndpointDescriptor = CreateObject("OpcLabs.EasyOpc.UA.UAEndpointDescriptor") 'EndpointDescriptor.UrlString = "opc.tcp://localhost:48010" 'Dim PubSubConfiguration: Set PubSubConfiguration = PublishSubscribeClient.AccessReadOnlyConfiguration(EndpointDescriptor) ' Get the names of PubSub connections in the configuration. Dim ConnectionNames: Set ConnectionNames = PubSubConfiguration.ListConnectionNames Dim pubSubConnectionName: For Each pubSubConnectionName In ConnectionNames WScript.Echo "PubSub connection: " & pubSubConnectionName ' You can use the statement below to obtain parameters of the PubSub connection. 'Dim PubSubConnectionElement: Set PubSubConnectionElement = PubSubConfiguration.GetConnectionElement(pubSubConnectionName) ' Get names of the writer groups on this PubSub connection. Dim WriterGroupNames: Set WriterGroupNames = PubSubConfiguration.ListWriterGroupNames(pubSubConnectionName) Dim writerGroupName: For Each writerGroupName In WriterGroupNames WScript.Echo " Writer group: " & writerGroupName ' You can use the statement below to obtain parameters of the writer group. 'Dim WriterGroupElement: Set WriterGroupElement = PubSubConfiguration.GetWriterGroupElement(pubSubConnectionName, writerGroupName) ' Get names of the dataset writers on this writer group. Dim DataSetWriterNames: Set DataSetWriterNames = PubSubConfiguration.ListDataSetWriterNames(pubSubConnectionName, writerGroupName) Dim dataSetWriterName: For Each dataSetWriterName In DataSetWriterNames WScript.Echo " Dataset writer: " & dataSetWriterName ' You can use the statement below to obtain parameters of the dataset writer. 'Dim DataSetWriterElement: Set DataSetWriterElement = _ ' PubSubConfiguration.GetDataSetWriterElement(pubSubConnectionName, writerGroupName, dataSetWriterName) Next Next Next End Sub ' Example output: ' 'Loading the configuration... 'PubSub connection: FixedLayoutConnection ' Writer group: FixedLayoutGroup ' Dataset writer: SimpleWriter ' Dataset writer: AllTypesWriter ' Dataset writer: MassTestWriter 'PubSub connection: DynamicLayoutConnection ' Writer group: DynamicLayoutGroup ' Dataset writer: SimpleWriter ' Dataset writer: MassTestWriter ' Dataset writer: AllTypes-DynamicWriter ' Dataset writer: EventSimpleWriter 'PubSub connection: FlexibleLayoutConnection ' Writer group: FlexibleLayoutGroup ' Dataset writer: SimpleWriter ' Dataset writer: MassTestWriter ' Dataset writer: AllTypes-DynamicWriter 'Finished.
# This example obtains and prints out information about PubSub connections, writer groups, and dataset writers in the # OPC UA PubSub configuration. # # 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.BaseLib import * #from OpcLabs.EasyOpc.UA import * #from OpcLabs.EasyOpc.UA.PubSub.Configuration.Extensions import * from OpcLabs.EasyOpc.UA.OperationModel import * from OpcLabs.EasyOpc.UA.PubSub.InformationModel import * from OpcLabs.EasyOpc.UA.PubSub.InformationModel.Extensions import * from OpcLabs.EasyOpc.UA.PubSub.OperationModel import * # Instantiate the publish-subscribe client object. publishSubscribeClient = EasyUAPublishSubscribeClient() try: print('Loading the configuration...') # Load the PubSub configuration from a file. The file itself is in this script's directory. pubSubConfiguration = IEasyUAPublishSubscribeClientExtension.LoadReadOnlyConfiguration(publishSubscribeClient, 'UADemoPublisher-Default.uabinary') # Alternatively, using the statement below, you can access a live configuration residing in an OPC UA # Server with appropriate information model. #pubSubConfiguration = publishSubscribeClient.AccessReadOnlyConfiguration( # UAEndpointDescriptor('opc.tcp://localhost:48010')) # Get the names of PubSub connections in the configuration, regardless of the folder they reside in. pubSubConnectionNames = pubSubConfiguration.ListConnectionNames() for pubSubConnectionName in pubSubConnectionNames: print('PubSub connection: ', pubSubConnectionName, sep='') # You can use the statement below to obtain parameters of the PubSub connection. #connectionElement = IUAReadOnlyPubSubConfigurationExtension.GetConnectionElement(pubSubConfiguration, # pubSubConnectionName) # Get names of the writer groups on this PubSub connection. writerGroupNames = pubSubConfiguration.ListWriterGroupNames(pubSubConnectionName) for writerGroupName in writerGroupNames: print(' Writer group: ', writerGroupName, sep='') # You can use the statement below to obtain parameters of the writer group. #writerGroupElement = IUAReadOnlyPubSubConfigurationExtension.GetWriterGroupElement(pubSubConfiguration, # pubSubConnectionName, writerGroupName) # Get names of the dataset writers on this writer group. dataSetWriterNames = pubSubConfiguration.ListDataSetWriterNames(pubSubConnectionName, writerGroupName) for dataSetWriterName in dataSetWriterNames: print(' Dataset writer: ', dataSetWriterName, sep='') # You can use the statement below to obtain parameters of the dataset writer. #dataSetWriterElement = IUAReadOnlyPubSubConfigurationExtension.GetDataSetWriterElement(pubSubConfiguration, # pubSubConnectionName, writerGroupName, dataSetWriterName) except UAException as uaException: print('*** Failure: ' + uaException.GetBaseException().Message) exit() 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.