예제 #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="monitoredItem"></param>
        /// <param name="e"></param>
        protected virtual void ItemNotificationHandler(MonitoredItem monitoredItem, MonitoredItemNotificationEventArgs e)
        {
            try
            {
                if (monitoredItem != null)
                {
                    Opc.Ua.MonitoredItemNotification change = e.NotificationValue as Opc.Ua.MonitoredItemNotification;
                    if (change != null)
                    {
                        DataValue dv = change.Value;
                        if (dv != null)
                        {
                            ListViewItem[] lvis = ItemsLV.Items.Find(monitoredItem.ClientHandle.ToString(), false);
                            if (lvis.Length > 0)
                            {
                                DiagnosticListViewItem dlvi = lvis[0].Tag as DiagnosticListViewItem;
                                dlvi.UpdateInListView(lvis[0], dv, m_Session);
                            }
                        }
                        else
                        {
                            Utils.Trace("dv is null: {0}", MethodBase.GetCurrentMethod());
                        }
                    }
                    else
                    {
                        EventFieldList eventFields = e.NotificationValue as EventFieldList;
                        if (eventFields != null)
                        {
                            // get the event fields.
                            NodeId        eventType  = monitoredItem.GetFieldValue(eventFields, ObjectTypes.BaseEventType, BrowseNames.EventType) as NodeId;
                            string        sourceName = monitoredItem.GetFieldValue(eventFields, ObjectTypes.BaseEventType, BrowseNames.SourceName) as string;
                            DateTime?     time       = monitoredItem.GetFieldValue(eventFields, ObjectTypes.BaseEventType, BrowseNames.Time) as DateTime?;
                            ushort?       severity   = monitoredItem.GetFieldValue(eventFields, ObjectTypes.BaseEventType, BrowseNames.Severity) as ushort?;
                            LocalizedText message    = monitoredItem.GetFieldValue(eventFields, ObjectTypes.BaseEventType, BrowseNames.Message) as LocalizedText;
                            NodeId        sourceNode = monitoredItem.GetFieldValue(eventFields, ObjectTypes.BaseEventType, BrowseNames.SourceNode) as NodeId;

                            if (eventType == new NodeId(ObjectTypes.AuditAddNodesEventType))
                            {
                            }
                            else
                            {
                            }
                        }
                        else
                        {
                            Utils.Trace("eventFields is null " + MethodBase.GetCurrentMethod());
                        }
                    }
                }
            }
            catch (Exception exception)
            {
                GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception);
            }
        }
예제 #2
0
        /// <summary>
        /// Enables the state of menu items.
        /// </summary>
        protected override void EnableMenuItems(ListViewItem clickedItem)
        {
            DiagnosticListViewItem dlvi = clickedItem.Tag as DiagnosticListViewItem;
            bool hasDetails             = false;

            if (dlvi != null)
            {
                hasDetails = dlvi.HasDetails();
            }
            detailsToolStripMenuItem.Enabled = hasDetails;
        }
예제 #3
0
 private void DetailsToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (ItemsLV.SelectedItems.Count > 0)
     {
         DiagnosticListViewItem dlvi = ItemsLV.SelectedItems[0].Tag as DiagnosticListViewItem;
         if (dlvi != null)
         {
             MonitoredItemDlg dlg = new MonitoredItemDlg();
             m_Forms.Add(dlg);
             dlg.Show(dlvi.MonitoredItem);
         }
     }
 }
예제 #4
0
        /// <summary>
        ///
        /// </summary>
        public void Close()
        {
            foreach (Form form in m_Forms)
            {
                form.Close();
            }
            m_Forms.Clear();

            foreach (ListViewItem lvi in ItemsLV.Items)
            {
                DiagnosticListViewItem dlvi = lvi.Tag as DiagnosticListViewItem;
                dlvi.MonitoredItem.Notification -= m_ItemNotification;
                m_Subscription.RemoveItem(dlvi.MonitoredItem);
            }
            m_Session.RemoveSubscription(m_Subscription);
        }