/// <summary> /// Starts monitoring the value of the currently selected item. /// </summary> public void CreateMonitoredItem(ReferenceDescription node) { ListOfMonitoredItemCreateRequest itemsToCreate = new ListOfMonitoredItemCreateRequest(); MonitoredItemCreateRequest itemToCreate = new MonitoredItemCreateRequest(); itemToCreate.ItemToMonitor = new ReadValueId(); itemToCreate.ItemToMonitor.NodeId = new NodeId(node.NodeId); itemToCreate.ItemToMonitor.AttributeId = Attributes.Value; itemToCreate.MonitoringMode = MonitoringMode.Reporting_2; itemToCreate.RequestedParameters = new MonitoringParameters(); itemToCreate.RequestedParameters.ClientHandle = ++m_monitoredItemCount; itemToCreate.RequestedParameters.SamplingInterval = 1000; itemToCreate.RequestedParameters.QueueSize = 0; itemToCreate.RequestedParameters.DiscardOldest = true; itemToCreate.RequestedParameters.Filter = new ExtensionObject(); itemsToCreate.Add(itemToCreate); ListOfMonitoredItemCreateResult results; ListOfDiagnosticInfo diagnosticInfos; m_client.CreateMonitoredItems( m_client.CreateRequestHeader(), m_subscriptionId, TimestampsToReturn.Both_2, itemsToCreate, out results, out diagnosticInfos); if (results != null) { // update the list view. MonitoredItemCreateResult result = results[0]; ListViewItem item = new ListViewItem(itemToCreate.RequestedParameters.ClientHandle.ToString()); item.SubItems.Add(new ListViewItem.ListViewSubItem()); item.SubItems[1].Text = node.DisplayName.Text; item.SubItems.Add(new ListViewItem.ListViewSubItem()); item.SubItems[2].Text = "<Unknown>"; item.SubItems.Add(new ListViewItem.ListViewSubItem()); item.SubItems[3].Text = String.Format("{0}", result.StatusCode); item.SubItems.Add(new ListViewItem.ListViewSubItem()); item.SubItems[4].Text = String.Format("{0:HH:mm:ss}", DateTime.Now); UpdatesLV.Items.Add(item); // save the monitored item. MonitoredItem monitoredItem = new MonitoredItem(); monitoredItem.MonitoredItemId = result.MonitoredItemId; monitoredItem.ItemToMonitor = itemToCreate.ItemToMonitor; monitoredItem.MonitoringMode = itemToCreate.MonitoringMode; monitoredItem.Parameters = itemToCreate.RequestedParameters; monitoredItem.Parameters.SamplingInterval = result.RevisedSamplingInterval; monitoredItem.Parameters.QueueSize = result.RevisedQueueSize; m_monitoredItems.Add(itemToCreate.RequestedParameters.ClientHandle, monitoredItem); item.Tag = monitoredItem; } }
/// <summary> /// Starts monitoring the value of the currently selected item. /// </summary> public void CreateMonitoredItem(ReferenceDescription node) { ListOfMonitoredItemCreateRequest itemsToCreate = new ListOfMonitoredItemCreateRequest(); MonitoredItemCreateRequest itemToCreate = new MonitoredItemCreateRequest(); itemToCreate.ItemToMonitor = new ReadValueId(); itemToCreate.ItemToMonitor.NodeId = new NodeId(node.NodeId); itemToCreate.ItemToMonitor.AttributeId = Attributes.Value; itemToCreate.MonitoringMode = MonitoringMode.Reporting_2; itemToCreate.RequestedParameters = new MonitoringParameters(); itemToCreate.RequestedParameters.ClientHandle = ++m_monitoredItemCount; itemToCreate.RequestedParameters.SamplingInterval = 1000; itemToCreate.RequestedParameters.QueueSize = 0; itemToCreate.RequestedParameters.DiscardOldest = true; itemToCreate.RequestedParameters.Filter = new ExtensionObject(); itemsToCreate.Add(itemToCreate); ListOfMonitoredItemCreateResult results; ListOfDiagnosticInfo diagnosticInfos; m_client.CreateMonitoredItems( m_client.CreateRequestHeader(), m_subscriptionId, TimestampsToReturn.Both_2, itemsToCreate, out results, out diagnosticInfos); if (results != null) { // update the list view. MonitoredItemCreateResult result = results[0]; ListViewItem item = new ListViewItem(itemToCreate.RequestedParameters.ClientHandle.ToString()); item.SubItems.Add(new ListViewItem.ListViewSubItem()); item.SubItems[1].Text = node.DisplayName.Text; item.SubItems.Add(new ListViewItem.ListViewSubItem()); item.SubItems[2].Text = "<Unknown>"; item.SubItems.Add(new ListViewItem.ListViewSubItem()); item.SubItems[3].Text = String.Format("{0}", result.StatusCode); item.SubItems.Add(new ListViewItem.ListViewSubItem()); item.SubItems[4].Text = String.Format("{0:HH:mm:ss}", DateTime.Now); UpdatesLV.Items.Add(item); // save the monitored item. MonitoredItem monitoredItem = new MonitoredItem(); monitoredItem.MonitoredItemId = result.MonitoredItemId; monitoredItem.ItemToMonitor = itemToCreate.ItemToMonitor; monitoredItem.MonitoringMode = itemToCreate.MonitoringMode; monitoredItem.Parameters = itemToCreate.RequestedParameters; monitoredItem.Parameters.SamplingInterval = result.RevisedSamplingInterval; monitoredItem.Parameters.QueueSize = result.RevisedQueueSize; m_monitoredItems.Add(itemToCreate.RequestedParameters.ClientHandle, monitoredItem); item.Tag = monitoredItem; } }