Beispiel #1
0
        /// <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;
            }
        }
Beispiel #2
0
        /// <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;
            }
        }