/// <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); } }
/// <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; }
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); } } }
/// <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); }