private void OutputWindow_FormClosed(object sender, FormClosedEventArgs e) { m_subscription.Delete(false); m_subscription = null; monitoredItems = new List <MonitoredItem>(); subscriptionOutputWindow = null; }
private void subscribeToolStripMenuItem_Click(object sender, EventArgs e) { try { GetTanks(); if (m_session == null) { return; } if (m_subscription != null) { m_session.RemoveSubscription(m_subscription); m_subscription = null; } if (m_subscription == null) { m_subscription = new Subscription(); m_subscription.PublishingEnabled = true; m_subscription.PublishingInterval = 1000; m_subscription.Priority = 1; m_subscription.KeepAliveCount = 10; m_subscription.LifetimeCount = 20; m_subscription.MaxNotificationsPerPublish = 1000; m_session.AddSubscription(m_subscription); m_subscription.Create(); } if (monitoredItem == null) { monitoredItem = new MonitoredItem(m_subscription.DefaultItem); monitoredItem.StartNodeId = monitoredItem.AttributeId = Attributes.Value; monitoredItem.MonitoringMode = MonitoringMode.Reporting; monitoredItem.SamplingInterval = 1000; monitoredItem.QueueSize = 0; monitoredItem.DiscardOldest = true; // define event handler for this item, and then add to subscription monitoredItem.Notification += new MonitoredItemNotificationEventHandler(monitoredItem_Notification); m_subscription.AddItem(monitoredItem); } m_subscription.ApplyChanges(); if (outputWindow == null) { outputWindow = new SubscriptionOutput(); } } catch (Exception exception) { ClientUtils.HandleException(this.Text, exception); } }
private void subscribeToolStripMenuItem_Click(object sender, EventArgs e) { if ((NodeId)BrowseCTRL.SelectedNode.NodeId != null) { if (subscriptionOutputWindow == null) { subscriptionOutputWindow = new SubscriptionOutput(); } if (m_subscription == null) { m_subscription = new Subscription(m_session.DefaultSubscription); m_subscription.PublishingEnabled = true; m_subscription.PublishingInterval = 1000; m_session.AddSubscription(m_subscription); m_subscription.Create(); } if (monitoredItems.Count == 0) { if (BrowseCTRL.GetChildOfSelectedNode(0) != null) { BrowseDescription nodeToBrowse = new BrowseDescription(); nodeToBrowse.NodeId = (NodeId)BrowseCTRL.SelectedNode.NodeId; nodeToBrowse.BrowseDirection = BrowseDirection.Forward; nodeToBrowse.ReferenceTypeId = Opc.Ua.ReferenceTypeIds.HierarchicalReferences; nodeToBrowse.IncludeSubtypes = true; //nodeToBrowse.NodeClassMask = (uint)(NodeClass.Object); nodeToBrowse.ResultMask = (uint)(BrowseResultMask.All); ReferenceDescriptionCollection references = ClientUtils.Browse(m_session, nodeToBrowse, false); subscriptionOutputWindow.label1.Text = "You selected a folder: these are the child nodes:\n"; foreach (var item in references) { var mi = new MonitoredItem(m_subscription.DefaultItem); mi.StartNodeId = (NodeId)item.NodeId; mi.AttributeId = Attributes.DisplayName; mi.MonitoringMode = MonitoringMode.Reporting; mi.SamplingInterval = 1000; mi.QueueSize = 0; mi.DiscardOldest = true; mi.Notification += new MonitoredItemNotificationEventHandler(Mi_Notification); monitoredItems.Add(mi); } } else { var mi = new MonitoredItem(m_subscription.DefaultItem); mi.StartNodeId = (NodeId)BrowseCTRL.SelectedNode.NodeId; mi.AttributeId = Attributes.Value; mi.MonitoringMode = MonitoringMode.Reporting; mi.SamplingInterval = 1000; mi.QueueSize = 0; mi.DiscardOldest = true; mi.Notification += new MonitoredItemNotificationEventHandler(Mi_Notification); // define event handler for this item, and then add to subscription mi.Notification += new MonitoredItemNotificationEventHandler(monitoredItem_Notification); monitoredItems.Add(mi); } m_subscription.AddItems(monitoredItems); } subscriptionOutputWindow.Show(); subscriptionOutputWindow.FormClosed += OutputWindow_FormClosed; m_subscription.ApplyChanges(); } }
private void subscribeToolStripMenuItem_Click(object sender, EventArgs e) { try { if (m_session == null) { return; } if (m_subscription != null) { m_session.RemoveSubscription(m_subscription); m_subscription = null; } m_subscription = new Subscription(); m_subscription.PublishingEnabled = true; m_subscription.PublishingInterval = 5000; m_subscription.Priority = 1; m_subscription.KeepAliveCount = 10; m_subscription.LifetimeCount = 20; m_subscription.MaxNotificationsPerPublish = 5000; m_session.AddSubscription(m_subscription); m_subscription.Create(); for (int ii = 0; ii < tanksRef.Count; ii++) { // filter the node (should be the tank) if (tanksRef[ii].BrowseName.Name.Contains(TankDataTypes.tanks)) { BrowseDescription n = new BrowseDescription(); n.NodeId = (NodeId)tanksRef[ii].NodeId; n.BrowseDirection = BrowseDirection.Forward; n.IncludeSubtypes = true; n.NodeClassMask = (uint)(NodeClass.Variable); n.ResultMask = (uint)(BrowseResultMask.All); ReferenceDescriptionCollection props = ClientUtils.Browse( m_session, n, false); if (props.Count > 0) { for (int jj = 0; jj < props.Count; jj++) { // filter the Properties of the tank if (TankDataTypes.containsProp(props[jj].DisplayName.Text)) { MonitoredItem monitoredItem = new MonitoredItem(); monitoredItem.StartNodeId = (NodeId)props[jj].NodeId; monitoredItem.DisplayName = props[jj].BrowseName.Name; monitoredItem.AttributeId = Attributes.Value; monitoredItem.Notification += new MonitoredItemNotificationEventHandler(monitoredItem_Notification); m_subscription.AddItem(monitoredItem); } } } } } m_subscription.ApplyChanges(); if (outputWindow == null) { outputWindow = new SubscriptionOutput(); } } catch (Exception exception) { ClientUtils.HandleException(this.Text, exception); } }