Пример #1
0
        /// <summary>
        /// Get OPC tree for selected branch
        /// </summary>
        /// <param name="itemId">Parent level element</param>
        /// <returns>Collection of OPC children</returns>
        public ObservableCollection <mTreeNode> GetTree(Opc.ItemIdentifier itemId)
        {
            ObservableCollection <mTreeNode> tree = new ObservableCollection <mTreeNode>();

            if (isConnected)
            {
                Opc.Da.BrowsePosition position;
                Opc.Da.BrowseFilters  filters = new Opc.Da.BrowseFilters()
                {
                    BrowseFilter = Opc.Da.browseFilter.branch
                };
                Opc.Da.BrowseElement[] elements = server.Browse(itemId, filters, out position);

                if (elements != null)
                {
                    foreach (Opc.Da.BrowseElement el in elements)
                    {
                        mTreeNode node = new mTreeNode();
                        node.Description = el.Name;
                        node.Name        = el.ItemName;
                        node.Path        = el.ItemPath;

                        if (el.HasChildren)
                        {
                            var childItemId = new Opc.ItemIdentifier(el.ItemPath, el.ItemName);
                            node.Nodes = new ObservableCollection <mTreeNode>(GetTree(childItemId));
                        }

                        tree.Add(node);
                    }
                }
            }

            RefreshServerStatus();

            return(tree);
        }
Пример #2
0
        /// <summary>
        /// Get list of OPC tags for selected group/branch
        /// </summary>
        /// <param name="path">Root item/leaf path</param>
        /// <param name="name">Root item/leaf name</param>
        /// <returns>Collection of tags, names and path only, not values</returns>
        public ObservableCollection <mItem> GetTags(string path, string name)
        {
            ObservableCollection <mItem> tags = new ObservableCollection <mItem>();

            var itemId = new Opc.ItemIdentifier(path, name);

            Opc.Da.BrowsePosition position;
            Opc.Da.BrowseFilters  filters = new Opc.Da.BrowseFilters()
            {
                BrowseFilter = Opc.Da.browseFilter.item
            };
            Opc.Da.BrowseElement[] elements = server.Browse(itemId, filters, out position);

            if (elements != null)
            {
                foreach (Opc.Da.BrowseElement el in elements)
                {
                    mItem tag = new mItem(el.ItemName, el.ItemPath);
                    tags.Add(tag);
                }
            }

            return(tags);
        }