Exemple #1
0
 private void OutputWindow_FormClosed(object sender, FormClosedEventArgs e)
 {
     m_subscription.Delete(false);
     m_subscription           = null;
     monitoredItems           = new List <MonitoredItem>();
     subscriptionOutputWindow = null;
 }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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();
            }
        }
Exemple #4
0
        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);
            }
        }