示例#1
0
        /// <summary>
        /// Prompts the user to select a node.
        /// </summary>
        public ReferenceDescription ShowDialog(
            Session session,
            NodeId rootId,
            ViewDescription view,
            string caption,
            params NodeId[] referenceTypeIds)
        {
            // set the caption.
            if (!String.IsNullOrEmpty(caption))
            {
                this.Text = caption;
            }

            // set default root.
            if (NodeId.IsNull(rootId))
            {
                rootId = Opc.Ua.ObjectIds.ObjectsFolder;
            }

            // set default reference type.
            if (referenceTypeIds == null)
            {
                referenceTypeIds = new NodeId[] { Opc.Ua.ReferenceTypeIds.HierarchicalReferences };
            }

            // initialize the control.
            BrowseCTRL.Initialize(session, rootId, referenceTypeIds);
            BrowseCTRL.View = view;

            // display the dialog.
            if (ShowDialog() != DialogResult.OK)
            {
                return(null);
            }

            return(BrowseCTRL.SelectedNode);
        }
        async void Window_PageClosing(object sender, RoutedEventArgs e)
        {
            if (m_masterPage == null && m_pages.Count > 0)
            {
                MessageDlg       dialog = new MessageDlg("Close all sessions?", MessageDlgButton.Yes, MessageDlgButton.No);
                MessageDlgButton result = await dialog.ShowAsync();

                if (result != MessageDlgButton.Yes)
                {
                    return;
                }
            }

            BrowseCTRL.Clear();

            for (int ii = 0; ii < m_pages.Count; ii++)
            {
                if (Object.ReferenceEquals(m_pages[ii], sender))
                {
                    m_pages.RemoveAt(ii);
                    break;
                }
            }
        }
示例#3
0
        /// <summary>
        /// Connects to a server.
        /// </summary>
        public void Connect(ConfiguredEndpoint endpoint)
        {
            if (endpoint == null)
            {
                return;
            }

            Session session = SessionsCTRL.Connect(endpoint);

            if (session != null)
            {
                // stop any reconnect operation.
                if (m_reconnectHandler != null)
                {
                    m_reconnectHandler.Dispose();
                    m_reconnectHandler = null;
                }

                m_session            = session;
                m_session.KeepAlive += new KeepAliveEventHandler(StandardClient_KeepAlive);
                BrowseCTRL.SetView(m_session, BrowseViewType.Objects, null);
                StandardClient_KeepAlive(m_session, null);
            }
        }
示例#4
0
        private void ChangeViewBTN_Click(object sender, EventArgs e)
        {
            try
            {
                ViewDescription view = null;

                ReferenceDescription reference = ViewCB.SelectedItem as ReferenceDescription;

                if (reference != null && !NodeId.IsNull(reference.NodeId))
                {
                    view             = new ViewDescription();
                    view.ViewId      = ExpandedNodeId.ToNodeId(reference.NodeId, m_session.NamespaceUris);
                    view.ViewVersion = 0;
                    view.Timestamp   = DateTime.MinValue;
                }

                BrowseCTRL.View = view;
                BrowseCTRL.RefreshSelection();
            }
            catch (Exception exception)
            {
                ClientUtils.HandleException(this.Text, exception);
            }
        }
示例#5
0
        /// <summary>
        /// Updates the application after connecting to or disconnecting from the server.
        /// </summary>
        private void Server_ConnectComplete(object sender, EventArgs e)
        {
            try
            {
                m_session = ConnectServerCTRL.Session;

                // browse the instances in the server.
                BrowseCTRL.Initialize(m_session,
                                      ObjectIds.RootFolder,
                                      ReferenceTypeIds.Organizes,
                                      ReferenceTypeIds.Aggregates,
                                      ReferenceTypeIds.HierarchicalReferences);

                if (m_session != null)
                {
                    var typeSystem = new ComplexTypeSystem(m_session);
                    typeSystem.Load().Wait();
                }
            }
            catch (Exception exception)
            {
                ClientUtils.HandleException(this.Text, exception);
            }
        }
示例#6
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();
            }
        }
 /// <summary>
 /// Changes the session used by the control.
 /// </summary>
 /// <param name="session">The session.</param>
 public void ChangeSession(Session session)
 {
     BrowseCTRL.ChangeSession(session);
 }
 /// <summary>
 /// The reference for the parent of the currently selected node.
 /// </summary>
 public void RefreshSelection()
 {
     BrowseCTRL.RefreshSelection();
 }
 /// <summary>
 /// Returns the child node at the specified index.
 /// </summary>
 public ReferenceDescription GetChildOfSelectedNode(int index)
 {
     return(BrowseCTRL.GetChildOfSelectedNode(index));
 }
示例#10
0
 private void toolStripMainWriteValueButton_Click(object sender, EventArgs e)
 {
     BrowseCTRL.WriteMI_Click(sender, e);
 }
示例#11
0
 private void toolStripMainReadValueButton_Click(object sender, EventArgs e)
 {
     BrowseCTRL.ReadMI_Click(sender, e);
 }
示例#12
0
 private void toolStripMainBrowseASButton_Click(object sender, EventArgs e)
 {
     BrowseCTRL.BrowseMI_Click(sender, e);
 }