![](dotnetdiagramimages/OpcLabs_EasyOpcUA_OpcLabs_EasyOpc_UA_OperationModel_EasyUAMonitoredItemArgumentsDictionary.png)
'Declaration
<CLSCompliantAttribute(True)> <ComDefaultInterfaceAttribute(OpcLabs.EasyOpc.UA.OperationModel.ComTypes._EasyUAMonitoredItemArgumentsDictionary)> <ComVisibleAttribute(True)> <GuidAttribute("06DB93B8-53BA-4921-8052-E7AE67154806")> <TypeConverterAttribute(System.ComponentModel.ExpandableObjectConverter)> <DefaultMemberAttribute("Item")> <DebuggerTypeProxyAttribute(System.Collections.Generic.Mscorlib_DictionaryDebugView`2)> <DebuggerDisplayAttribute("Count = {Count}")> <SerializableAttribute()> Public NotInheritable Class EasyUAMonitoredItemArgumentsDictionary Inherits System.Collections.Generic.Dictionary(Of Integer,EasyUAMonitoredItemArguments) Implements OpcLabs.EasyOpc.UA.OperationModel.ComTypes._EasyUAMonitoredItemArgumentsDictionary, System.Collections.Generic.ICollection(Of KeyValuePair(Of Integer,EasyUAMonitoredItemArguments)), System.Collections.Generic.IDictionary(Of Integer,EasyUAMonitoredItemArguments), System.Collections.Generic.IEnumerable(Of KeyValuePair(Of Integer,EasyUAMonitoredItemArguments)), System.Collections.Generic.IEnumerable(Of T), System.Collections.Generic.IReadOnlyCollection(Of KeyValuePair(Of Integer,EasyUAMonitoredItemArguments)), System.Collections.Generic.IReadOnlyDictionary(Of Integer,EasyUAMonitoredItemArguments), System.Collections.ICollection, System.Collections.IDictionary, System.Collections.IEnumerable, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable, System.Xml.Serialization.IXmlSerializable
'Usage
Dim instance As EasyUAMonitoredItemArgumentsDictionary
[CLSCompliant(true)] [ComDefaultInterface(OpcLabs.EasyOpc.UA.OperationModel.ComTypes._EasyUAMonitoredItemArgumentsDictionary)] [ComVisible(true)] [Guid("06DB93B8-53BA-4921-8052-E7AE67154806")] [TypeConverter(System.ComponentModel.ExpandableObjectConverter)] [DefaultMember("Item")] [DebuggerTypeProxy(System.Collections.Generic.Mscorlib_DictionaryDebugView`2)] [DebuggerDisplay("Count = {Count}")] [Serializable()] public sealed class EasyUAMonitoredItemArgumentsDictionary : System.Collections.Generic.Dictionary<int,EasyUAMonitoredItemArguments>, OpcLabs.EasyOpc.UA.OperationModel.ComTypes._EasyUAMonitoredItemArgumentsDictionary, System.Collections.Generic.ICollection<KeyValuePair<int,EasyUAMonitoredItemArguments>>, System.Collections.Generic.IDictionary<int,EasyUAMonitoredItemArguments>, System.Collections.Generic.IEnumerable<KeyValuePair<int,EasyUAMonitoredItemArguments>>, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.IReadOnlyCollection<KeyValuePair<int,EasyUAMonitoredItemArguments>>, System.Collections.Generic.IReadOnlyDictionary<int,EasyUAMonitoredItemArguments>, System.Collections.ICollection, System.Collections.IDictionary, System.Collections.IEnumerable, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable, System.Xml.Serialization.IXmlSerializable
[CLSCompliant(true)] [ComDefaultInterface(OpcLabs.EasyOpc.UA.OperationModel.ComTypes._EasyUAMonitoredItemArgumentsDictionary)] [ComVisible(true)] [Guid("06DB93B8-53BA-4921-8052-E7AE67154806")] [TypeConverter(System.ComponentModel.ExpandableObjectConverter)] [DefaultMember("Item")] [DebuggerTypeProxy(System.Collections.Generic.Mscorlib_DictionaryDebugView`2)] [DebuggerDisplay("Count = {Count}")] [Serializable()] public ref class EasyUAMonitoredItemArgumentsDictionary sealed : public System.Collections.Generic.Dictionary<int,EasyUAMonitoredItemArguments>, OpcLabs.EasyOpc.UA.OperationModel.ComTypes._EasyUAMonitoredItemArgumentsDictionary, System.Collections.Generic.ICollection<KeyValuePair<int,EasyUAMonitoredItemArguments>>, System.Collections.Generic.IDictionary<int,EasyUAMonitoredItemArguments>, System.Collections.Generic.IEnumerable<KeyValuePair<int,EasyUAMonitoredItemArguments>>, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.IReadOnlyCollection<KeyValuePair<int,EasyUAMonitoredItemArguments>>, System.Collections.Generic.IReadOnlyDictionary<int,EasyUAMonitoredItemArguments>, System.Collections.ICollection, System.Collections.IDictionary, System.Collections.IEnumerable, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable, System.Xml.Serialization.IXmlSerializable
If you need to obtain information about a subscription made or modified earlier, you have two methods available in QuickOPC-UA.
Calling GetMonitoredItemArguments method with a handle obtained when the subscription was made will return an EasyUAMonitoredItemArguments object with all current parameters.
Calling GetMonitoredItemArgumentsDictionary obtains information about all monitored item subscriptions on the EasyUAClient object. It returns a dictionary of monitored item argument objects (as above). The dictionary is keyed by the monitored item subscription handles, and its values contain information describing each subscription.
// This example shows how to obtain dictionary of parameters of all monitored item subscriptions. // // 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.OperationModel; namespace UADocExamples._EasyUAClient { class GetMonitoredItemArgumentsDictionary { public static void Main1() { UAEndpointDescriptor endpointDescriptor = "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer"; // or "http://opcua.demo-this.com:51211/UA/SampleServer" (currently not supported) // or "https://opcua.demo-this.com:51212/UA/SampleServer/" // Instantiate the client object and hook events. var client = new EasyUAClient(); client.DataChangeNotification += client_DataChangeNotification; Console.WriteLine("Subscribing..."); client.SubscribeMultipleMonitoredItems(new[] { new EasyUAMonitoredItemArguments(null, endpointDescriptor, "nsu=http://test.org/UA/Data/ ;i=10845", 1000), new EasyUAMonitoredItemArguments(null, endpointDescriptor, "nsu=http://test.org/UA/Data/ ;i=10853", 1000), new EasyUAMonitoredItemArguments(null, endpointDescriptor, "nsu=http://test.org/UA/Data/ ;i=10855", 1000) }); Console.WriteLine("Getting monitored item arguments dictionary..."); EasyUAMonitoredItemArgumentsDictionary monitoredItemArgumentsDictionary = client.GetMonitoredItemArgumentsDictionary(); foreach (EasyUAMonitoredItemArguments monitoredItemArguments in monitoredItemArgumentsDictionary.Values) { Console.WriteLine(); Console.WriteLine($"NodeDescriptor: {monitoredItemArguments.NodeDescriptor}"); Console.WriteLine($"SamplingInterval: {monitoredItemArguments.MonitoringParameters.SamplingInterval}"); Console.WriteLine($"PublishingInterval: {monitoredItemArguments.SubscriptionParameters.PublishingInterval}"); } Console.WriteLine(); Console.WriteLine("Waiting for 5 seconds..."); System.Threading.Thread.Sleep(5 * 1000); Console.WriteLine("Unsubscribing..."); client.UnsubscribeAllMonitoredItems(); Console.WriteLine("Waiting for 5 seconds..."); System.Threading.Thread.Sleep(5 * 1000); Console.WriteLine("Finished."); } static void client_DataChangeNotification(object sender, EasyUADataChangeNotificationEventArgs e) { // Your code would do the processing here. } // Example output: // //Subscribing... //Getting monitored item arguments dictionary... // //NodeDescriptor: NodeId="nsu=http://test.org/UA/Data/ ;i=10845" //SamplingInterval: 1000 //PublishingInterval: 0 // //NodeDescriptor: NodeId="nsu=http://test.org/UA/Data/ ;i=10853" //SamplingInterval: 1000 //PublishingInterval: 0 // //NodeDescriptor: NodeId="nsu=http://test.org/UA/Data/ ;i=10855" //SamplingInterval: 1000 //PublishingInterval: 0 // //Waiting for 5 seconds... //Unsubscribing... //Waiting for 5 seconds... //Finished. } }
# This example shows how to obtain dictionary of parameters of all monitored item subscriptions. # # 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.OperationModel # 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" [UAEndpointDescriptor]$endpointDescriptor = "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer" # or "http://opcua.demo-this.com:51211/UA/SampleServer" (currently not supported) # or "https://opcua.demo-this.com:51212/UA/SampleServer/" # Instantiate the client object. $client = New-Object EasyUAClient # Data change notification handler Register-ObjectEvent -InputObject $client -EventName DataChangeNotification -Action { # Your code would do the processing here. } Write-Host "Subscribing..." $handleArray = $client.SubscribeMultipleMonitoredItems(@( (New-Object UAMonitoredItemArguments( (New-Object UAAttributeArguments($endpointDescriptor, [UANodeDescriptor]"nsu=http://test.org/UA/Data/ ;i=10845")), 1000)), (New-Object UAMonitoredItemArguments( (New-Object UAAttributeArguments($endpointDescriptor, [UANodeDescriptor]"nsu=http://test.org/UA/Data/ ;i=10853")), 1000)), (New-Object UAMonitoredItemArguments( (New-Object UAAttributeArguments($endpointDescriptor, [UANodeDescriptor]"nsu=http://test.org/UA/Data/ ;i=10855")), 1000)) )) Write-Host "Getting monitored item arguments dictionary..." $monitoredItemArgumentsDictionary = $client.GetMonitoredItemArgumentsDictionary() foreach ($monitoredItemArguments in $monitoredItemArgumentsDictionary.Values) { Write-Host Write-Host "NodeDescriptor: $($monitoredItemArguments.NodeDescriptor)" Write-Host "SamplingInterval: $($monitoredItemArguments.MonitoringParameters.SamplingInterval)" Write-Host "PublishingInterval: $($monitoredItemArguments.SubscriptionParameters.PublishingInterval)" } Write-Host Write-Host "Waiting for 5 seconds..." Start-Sleep -Seconds 5 Write-Host "Unsubscribing..." $client.UnsubscribeAllMonitoredItems() Write-Host "Waiting for 5 seconds..." Start-Sleep -Seconds 5 Write-Host "Finished." # Example output: # #Subscribing... #Getting monitored item arguments dictionary... # #NodeDescriptor: NodeId="nsu=http://test.org/UA/Data/ ;i=10845" #SamplingInterval: 1000 #PublishingInterval: 0 # #NodeDescriptor: NodeId="nsu=http://test.org/UA/Data/ ;i=10853" #SamplingInterval: 1000 #PublishingInterval: 0 # #NodeDescriptor: NodeId="nsu=http://test.org/UA/Data/ ;i=10855" #SamplingInterval: 1000 #PublishingInterval: 0 # #Waiting for 5 seconds... #Unsubscribing... #Waiting for 5 seconds... #Finished.
' This example shows how to obtain dictionary of parameters of all monitored item subscriptions. ' ' 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.OperationModel Namespace _EasyUAClient Friend Class GetMonitoredItemArgumentsDictionary Public Shared Sub Main1() ' Define which server we will work with. Dim endpointDescriptor As UAEndpointDescriptor = "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer" ' or "http://opcua.demo-this.com:51211/UA/SampleServer" (currently not supported) ' or "https://opcua.demo-this.com:51212/UA/SampleServer/" ' Instantiate the client object and hook events Dim client = New EasyUAClient() AddHandler client.DataChangeNotification, AddressOf client_DataChangeNotification Console.WriteLine("Subscribing...") client.SubscribeMultipleMonitoredItems(New EasyUAMonitoredItemArguments() _ { _ New EasyUAMonitoredItemArguments(Nothing, endpointDescriptor, "nsu=http://test.org/UA/Data/ ;i=10845", 1000), _ New EasyUAMonitoredItemArguments(Nothing, endpointDescriptor, "nsu=http://test.org/UA/Data/ ;i=10853", 1000), _ New EasyUAMonitoredItemArguments(Nothing, endpointDescriptor, "nsu=http://test.org/UA/Data/ ;i=10855", 1000) _ } _ ) Console.WriteLine("Getting monitored item arguments dictionary...") Dim monitoredItemArgumentsDictionary As EasyUAMonitoredItemArgumentsDictionary = _ client.GetMonitoredItemArgumentsDictionary() For Each monitoredItemArguments As EasyUAMonitoredItemArguments In monitoredItemArgumentsDictionary.Values Console.WriteLine() Console.WriteLine("NodeDescriptor: {0}", monitoredItemArguments.NodeDescriptor) Console.WriteLine("SamplingInterval: {0}", monitoredItemArguments.MonitoringParameters.SamplingInterval) Console.WriteLine("PublishingInterval: {0}", monitoredItemArguments.SubscriptionParameters.PublishingInterval) Next monitoredItemArguments Console.WriteLine("Waiting for 5 seconds...") Threading.Thread.Sleep(5 * 1000) Console.WriteLine("Unsubscribing...") client.UnsubscribeAllMonitoredItems() Console.WriteLine("Waiting for 5 seconds...") Threading.Thread.Sleep(5 * 1000) End Sub Private Shared Sub client_DataChangeNotification(ByVal sender As Object, ByVal e As EasyUADataChangeNotificationEventArgs) ' Your code would do the processing here End Sub End Class End Namespace
# This example shows how to obtain dictionary of parameters of all monitored item subscriptions. # # 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 time # Import .NET namespaces. from OpcLabs.EasyOpc.UA import * from OpcLabs.EasyOpc.UA.OperationModel import * def dataChangeNotification(sender, e): # Your code would do the processing here. pass endpointDescriptor = UAEndpointDescriptor('opc.tcp://opcua.demo-this.com:51210/UA/SampleServer') # or 'http://opcua.demo-this.com:51211/UA/SampleServer' (currently not supported) # or 'https://opcua.demo-this.com:51212/UA/SampleServer/' # Instantiate the client object and hook events. client = EasyUAClient() client.DataChangeNotification += dataChangeNotification print('Subscribing...') handleArray = client.SubscribeMultipleMonitoredItems([ EasyUAMonitoredItemArguments( None, UAEndpointDescriptor('opc.tcp://opcua.demo-this.com:51210/UA/SampleServer'), UANodeDescriptor('nsu=http://test.org/UA/Data/ ;i=10845'), UAMonitoringParameters(1000)), EasyUAMonitoredItemArguments( None, UAEndpointDescriptor('opc.tcp://opcua.demo-this.com:51210/UA/SampleServer'), UANodeDescriptor('nsu=http://test.org/UA/Data/ ;i=10853'), UAMonitoringParameters(1000)), EasyUAMonitoredItemArguments( None, UAEndpointDescriptor('opc.tcp://opcua.demo-this.com:51210/UA/SampleServer'), UANodeDescriptor('nsu=http://test.org/UA/Data/ ;i=10855'), UAMonitoringParameters(1000)), ]) print('Getting monitored item arguments dictionary...') monitoredItemArgumentsDictionary = client.GetMonitoredItemArgumentsDictionary() for monitoredItemArguments in monitoredItemArgumentsDictionary.Values: print() print('NodeDescriptor: ', monitoredItemArguments.NodeDescriptor, sep='') print('SamplingInterval: ', monitoredItemArguments.MonitoringParameters.SamplingInterval, sep='') print('PublishingInterval: ', monitoredItemArguments.SubscriptionParameters.PublishingInterval, sep='') print() print('Waiting for 5 seconds...') time.sleep(5) print('Unsubscribing...') client.UnsubscribeAllMonitoredItems() print('Waiting for 5 seconds...') time.sleep(5) print('Finished.')
System.Object
System.Collections.Generic.Dictionary<TKey,TValue>
OpcLabs.EasyOpc.UA.OperationModel.EasyUAMonitoredItemArgumentsDictionary