Exemplo n.º 1
0
        private void recursiveTreeFill(Server server, string itemId)
        {
            BrowsePosition position;
            BrowseFilters  filters = new BrowseFilters()
            {
                BrowseFilter = browseFilter.all
            };

            ItemIdentifier item = (itemId == null) ? new ItemIdentifier() : new ItemIdentifier(itemId);

            BrowseElement[] browseElements = server.Browse(item, filters, out position);

            repository.Add(itemId, browseElements);

            for (int index = 0; index < browseElements.Length; index++)
            {
                BrowseElement browsedElement = browseElements[index];
                string        itemName       = browsedElement.ItemName;
                if (browsedElement.HasChildren)
                {
                    recursiveTreeFill(server, itemName);
                }
                else
                {
                    if (!repository.ContainsKey(itemId))
                    {
                        repository.Add(itemId, new BrowseElement[] { });
                    }
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Fetches the set of data filters from the server.
        /// </summary>
        public ComplexItem[] GetDataFilters(Opc.Da.Server server)
        {
            // not a valid operation for data filter items.
            if (m_unfilteredItemID != null)
            {
                return(null);
            }

            // data filters not supported by the item.
            if (m_filterItem == null)
            {
                return(null);
            }

            BrowsePosition position = null;

            try
            {
                // browse any existing filter instances.
                BrowseFilters filters = new BrowseFilters();

                filters.ElementNameFilter    = null;
                filters.BrowseFilter         = browseFilter.item;
                filters.ReturnAllProperties  = false;
                filters.PropertyIDs          = CPX_PROPERTIES;
                filters.ReturnPropertyValues = true;

                BrowseElement[] elements = server.Browse(m_filterItem, filters, out position);

                // nothing found.
                if (elements == null || elements.Length == 0)
                {
                    return(new ComplexItem[0]);
                }

                // contruct an array of complex data items for each available data filter.
                ArrayList dataFilters = new ArrayList(elements.Length);

                foreach (BrowseElement element in elements)
                {
                    ComplexItem item = new ComplexItem();

                    if (item.Init(element))
                    {
                        dataFilters.Add(item);
                    }
                }

                // return the set of available data filters.
                return((ComplexItem[])dataFilters.ToArray(typeof(ComplexItem)));
            }
            finally
            {
                if (position != null)
                {
                    position.Dispose();
                    position = null;
                }
            }
        }
Exemplo n.º 3
0
        private void ApplyChanges()
        {
            BrowseFilters browseFilters = new BrowseFilters();

            browseFilters.BrowseFilter        = (browseFilter)this.BrowseFilterCTRL.Value;
            browseFilters.MaxElementsReturned = (int)this.MaxElementsReturnedCTRL.Value;
            browseFilters.ElementNameFilter   = this.ElementNameFilterTB.Text;
            browseFilters.VendorFilter        = this.VendorFilterTB.Text;
            if (!this.ReturnPropertiesCB.Checked)
            {
                browseFilters.ReturnAllProperties  = false;
                browseFilters.ReturnPropertyValues = false;
                browseFilters.PropertyIDs          = null;
            }
            else
            {
                browseFilters.ReturnAllProperties  = this.PropertyFiltersCTRL.ReturnAllProperties;
                browseFilters.ReturnPropertyValues = this.PropertyFiltersCTRL.ReturnPropertyValues;
                if (!browseFilters.ReturnAllProperties)
                {
                    browseFilters.PropertyIDs = this.PropertyFiltersCTRL.PropertyIDs;
                }
                else
                {
                    browseFilters.PropertyIDs = null;
                }
            }
            if (this.m_callback != null)
            {
                this.m_callback(browseFilters);
            }
        }
Exemplo n.º 4
0
        private EnumString GetEnumerator(string itemID, BrowseFilters filters, bool branches)
        {
            EnumString str2;
            IOPCBrowseServerAddressSpace server = (IOPCBrowseServerAddressSpace)base.m_server;

            try
            {
                server.ChangeBrowsePosition(OPCBROWSEDIRECTION.OPC_BROWSE_TO, (itemID != null) ? itemID : "");
            }
            catch
            {
                try
                {
                    server.ChangeBrowsePosition(OPCBROWSEDIRECTION.OPC_BROWSE_DOWN, (itemID != null) ? itemID : "");
                }
                catch
                {
                    throw new ResultIDException(ResultID.Da.E_UNKNOWN_ITEM_NAME);
                }
            }
            try
            {
                OpcRcw.Da.IEnumString ppIEnumString = null;
                server.BrowseOPCItemIDs(branches ? OPCBROWSETYPE.OPC_BRANCH : OPCBROWSETYPE.OPC_LEAF, (filters.ElementNameFilter != null) ? filters.ElementNameFilter : "", 0, 0, out ppIEnumString);
                str2 = new EnumString(ppIEnumString);
            }
            catch
            {
                throw new ResultIDException(ResultID.Da.E_UNKNOWN_ITEM_NAME);
            }
            return(str2);
        }
Exemplo n.º 5
0
        public ItemIdentifier ShowDialog(Opc.Da.Server server)
        {
            ItemIdentifier result;

            try
            {
                if (server == null)
                {
                    throw new System.ArgumentNullException("server");
                }
                this.m_server = server;
                this.m_itemID = null;
                BrowseFilters browseFilters = new BrowseFilters();
                browseFilters.ReturnAllProperties  = false;
                browseFilters.ReturnPropertyValues = false;
                this.BrowseCTRL.ShowSingleServer(this.m_server, browseFilters);
                this.PropertiesCTRL.Initialize(null);
                if (base.ShowDialog() != System.Windows.Forms.DialogResult.OK)
                {
                    result = null;
                }
                else
                {
                    result = this.m_itemID;
                }
            }
            finally
            {
                this.BrowseCTRL.Clear();
            }
            return(result);
        }
Exemplo n.º 6
0
 internal BrowsePosition(ItemIdentifier itemID, BrowseFilters filters, EnumString enumerator, bool isBranch) : base(itemID, filters)
 {
     this.Enumerator = null;
     this.IsBranch   = true;
     this.Names      = null;
     this.Index      = 0;
     this.Enumerator = enumerator;
     this.IsBranch   = isBranch;
 }
Exemplo n.º 7
0
 /// <summary>
 /// Initializes a browse position
 /// </summary>
 internal BrowsePosition(
     Opc.ItemIdentifier itemID,
     BrowseFilters filters,
     string continuationPoint)
     :
     base(itemID, filters)
 {
     ContinuationPoint = continuationPoint;
 }
Exemplo n.º 8
0
 /// <summary>
 /// Initializes a browse posistion
 /// </summary>
 internal RootBrowsePosition(
     Opc.ItemIdentifier itemID,
     BrowseFilters filters,
     string locale,
     bool returnErrorText)
     :
     base(itemID, filters, locale, returnErrorText)
 {
 }
Exemplo n.º 9
0
        private BrowseElement GetElement(string name, BrowseFilters filters, bool isBranch)
        {
            if (name == null)
            {
                return(null);
            }
            BrowseElement element = new BrowseElement {
                Name        = name,
                HasChildren = isBranch,
                ItemPath    = null
            };

            try
            {
                string szItemID = null;
                ((IOPCBrowseServerAddressSpace)base.m_server).GetItemID(element.Name, out szItemID);
                element.ItemName = szItemID;
                OPCITEMDEF opcitemdef = new OPCITEMDEF {
                    szItemID            = element.ItemName,
                    szAccessPath        = null,
                    hClient             = 0,
                    bActive             = 0,
                    vtRequestedDataType = 0,
                    dwBlobSize          = 0,
                    pBlob = IntPtr.Zero
                };
                IntPtr       zero       = IntPtr.Zero;
                IntPtr       ppErrors   = IntPtr.Zero;
                OPCITEMDEF[] pItemArray = new OPCITEMDEF[] { opcitemdef };
                ((IOPCItemMgt)this.m_group).ValidateItems(1, pItemArray, 0, out zero, out ppErrors);
                OpcCom.Da.Interop.GetItemResults(ref zero, 1, true);
                int[] numArray = OpcCom.Interop.GetInt32s(ref ppErrors, 1, true);
                element.IsItem = numArray[0] >= 0;
            }
            catch
            {
                element.ItemName = null;
            }
            try
            {
                if (filters.ReturnAllProperties)
                {
                    element.Properties = this.GetProperties(element.ItemName, null, filters.ReturnPropertyValues);
                    return(element);
                }
                if (filters.PropertyIDs != null)
                {
                    element.Properties = this.GetProperties(element.ItemName, filters.PropertyIDs, filters.ReturnPropertyValues);
                }
            }
            catch
            {
                element.Properties = null;
            }
            return(element);
        }
Exemplo n.º 10
0
        private string getRootName(Server server)
        {
            BrowsePosition position;
            BrowseFilters  filters = new BrowseFilters()
            {
                BrowseFilter = browseFilter.all
            };

            BrowseElement[] rootElements = server.Browse(new ItemIdentifier(), filters, out position);
            return(rootElements[0].ItemName);
        }
Exemplo n.º 11
0
 /// <summary>
 /// Initializes a browse posistion
 /// </summary>
 internal BrowsePosition(
     Opc.ItemIdentifier itemID,
     BrowseFilters filters,
     string locale,
     bool returnErrorText)
     :
     base(itemID, filters)
 {
     Locale          = locale;
     ReturnErrorText = returnErrorText;
 }
Exemplo n.º 12
0
        public MainViewModel(
            IFileService fileService,
            ITmdbService tmdbService,
            ITmdbSearchViewModel searchViewModel)
        {
            this.fileService     = fileService;
            this.tmdbService     = tmdbService;
            this.searchViewModel = searchViewModel;
            SelectedBrowseFilter = BrowseFilters.First();

            TargetFileNamePattern = "S{Season}E{Episode} - {Name}.{Extension}";
        }
Exemplo n.º 13
0
        //======================================================================
        // Browse

        /// <summary>
        /// Fetches the children of a branch that meet the filter criteria.
        /// </summary>
        /// <param name="itemID">The identifier of branch which is the target of the search.</param>
        /// <param name="filters">The filters to use to limit the set of child elements returned.</param>
        /// <param name="position">An object used to continue a browse that could not be completed.</param>
        /// <returns>The set of elements found.</returns>
        public Opc.Da.BrowseElement[] Browse(
            ItemIdentifier itemID,
            BrowseFilters filters,
            out Opc.Da.BrowsePosition position)
        {
            position = null;

            lock (this)
            {
                return(m_cache.Browse(itemID, filters, ref position));
            }
        }
Exemplo n.º 14
0
        //======================================================================
        // Browse

        /// <summary>
        /// Fetches the children of a branch that meet the filter criteria.
        /// </summary>
        /// <param name="itemID">The identifier of branch which is the target of the search.</param>
        /// <param name="filters">The filters to use to limit the set of child elements returned.</param>
        /// <param name="position">An object used to continue a browse that could not be completed.</param>
        /// <returns>The set of elements found.</returns>
        public BrowseElement[] Browse(
            ItemIdentifier itemID,
            BrowseFilters filters,
            out Opc.Da.BrowsePosition position)
        {
            position = null;

            lock (this)
            {
                if (m_proxy == null)
                {
                    throw new NotConnectedException();
                }

                // use default filters if none specified.
                if (filters == null)
                {
                    filters = new BrowseFilters();
                }

                BrowsePosition pos = new BrowsePosition(itemID, filters, m_options.Locale, ((m_options.Filters & (int)ResultFilter.ErrorText) != 0));

                OpcXml.Da10.BrowseElement[] elements = null;
                OpcXml.Da10.OPCError[]      errors   = null;

                OpcXml.Da10.ReplyBase reply = m_proxy.Browse(
                    OpcXml.Da10.Request.GetPropertyNames(filters.PropertyIDs),
                    pos.Locale,
                    "",
                    (itemID != null)?itemID.ItemPath:null,
                    (itemID != null)?itemID.ItemName:null,
                    ref pos.ContinuationPoint,
                    filters.MaxElementsReturned,
                    OpcXml.Da10.Request.GetBrowseFilter(filters.BrowseFilter),
                    filters.ElementNameFilter,
                    filters.VendorFilter,
                    filters.ReturnAllProperties,
                    filters.ReturnPropertyValues,
                    pos.ReturnErrorText,
                    out elements,
                    out errors,
                    out pos.MoreElements);

                CacheResponse(pos.Locale, reply, errors);

                if (pos.MoreElements || (pos.ContinuationPoint != null && pos.ContinuationPoint != ""))
                {
                    position = pos;
                }

                return(OpcXml.Da10.Request.GetBrowseElements(elements));
            }
        }
Exemplo n.º 15
0
 /// <summary>
 /// Browses the address spase starting with selected <see cref="TagsTableRow"/>.
 /// </summary>
 /// <param name="itemID">The item to start with.</param>
 /// <param name="filters">The filters to applay while browsing.</param>
 /// <param name="position">The position to start next time.</param>
 /// <returns></returns>
 public TagsTableRow[] Browse(TagsTableRow itemID, BrowseFilters filters, out BrowsePosition position)
 {
     position = null;
     if (itemID == null)
     {
         return(ServersTable[0].GetTagsTableRows());
     }
     else
     {
         return(itemID.GetTagsTableRows());
     }
 }
Exemplo n.º 16
0
        // Token: 0x06000355 RID: 853 RVA: 0x00008C14 File Offset: 0x00007C14
        public ComplexItem[] GetDataFilters(Da.Server server)
        {
            if (this.m_unfilteredItemID != null)
            {
                return(null);
            }
            if (this.m_filterItem == null)
            {
                return(null);
            }
            BrowsePosition browsePosition = null;

            ComplexItem[] result;
            try
            {
                BrowseFilters browseFilters = new BrowseFilters();
                browseFilters.ElementNameFilter    = null;
                browseFilters.BrowseFilter         = browseFilter.item;
                browseFilters.ReturnAllProperties  = false;
                browseFilters.PropertyIDs          = ComplexItem.CPX_PROPERTIES;
                browseFilters.ReturnPropertyValues = true;
                BrowseElement[] array = server.Browse(this.m_filterItem, browseFilters, out browsePosition);
                if (array == null || array.Length == 0)
                {
                    result = new ComplexItem[0];
                }
                else
                {
                    ArrayList arrayList = new ArrayList(array.Length);
                    foreach (BrowseElement element in array)
                    {
                        ComplexItem complexItem = new ComplexItem();
                        if (complexItem.Init(element))
                        {
                            arrayList.Add(complexItem);
                        }
                    }
                    result = (ComplexItem[])arrayList.ToArray(typeof(ComplexItem));
                }
            }
            finally
            {
                if (browsePosition != null)
                {
                    browsePosition.Dispose();
                    browsePosition = null;
                }
            }
            return(result);
        }
Exemplo n.º 17
0
        // Token: 0x0600035A RID: 858 RVA: 0x00009020 File Offset: 0x00008020
        public void GetDataFilterItem(Da.Server server)
        {
            this.m_filterItem = null;
            if (this.m_unfilteredItemID != null)
            {
                return;
            }
            BrowsePosition browsePosition = null;

            try
            {
                ItemIdentifier itemID        = new ItemIdentifier(this);
                BrowseFilters  browseFilters = new BrowseFilters();
                browseFilters.ElementNameFilter    = "DataFilters";
                browseFilters.BrowseFilter         = browseFilter.all;
                browseFilters.ReturnAllProperties  = false;
                browseFilters.PropertyIDs          = null;
                browseFilters.ReturnPropertyValues = false;
                BrowseElement[] array;
                if (this.m_unconvertedItemID == null)
                {
                    browseFilters.ElementNameFilter = "CPX";
                    array = server.Browse(itemID, browseFilters, out browsePosition);
                    if (array == null || array.Length == 0)
                    {
                        return;
                    }
                    if (browsePosition != null)
                    {
                        browsePosition.Dispose();
                        browsePosition = null;
                    }
                    itemID = new ItemIdentifier(array[0].ItemPath, array[0].ItemName);
                    browseFilters.ElementNameFilter = "DataFilters";
                }
                array = server.Browse(itemID, browseFilters, out browsePosition);
                if (array != null && array.Length != 0)
                {
                    this.m_filterItem = new ItemIdentifier(array[0].ItemPath, array[0].ItemName);
                }
            }
            finally
            {
                if (browsePosition != null)
                {
                    browsePosition.Dispose();
                    browsePosition = null;
                }
            }
        }
Exemplo n.º 18
0
 private void OnBrowseFiltersChanged(BrowseFilters filters)
 {
     this.m_filters = filters;
     if (this.IsBrowseElementNode(this.BrowseTV.SelectedNode))
     {
         BrowseElement browseElement = (BrowseElement)this.BrowseTV.SelectedNode.Tag;
         if (!browseElement.HasChildren)
         {
             this.GetProperties(this.BrowseTV.SelectedNode);
             return;
         }
     }
     this.Browse(this.BrowseTV.SelectedNode);
 }
Exemplo n.º 19
0
 public void GetDataFilterItem(Opc.Da.Server server)
 {
     this.m_filterItem = null;
     if (this.m_unfilteredItemID == null)
     {
         BrowsePosition position = null;
         try
         {
             ItemIdentifier itemID  = new ItemIdentifier(this);
             BrowseFilters  filters = new BrowseFilters {
                 ElementNameFilter    = "DataFilters",
                 BrowseFilter         = browseFilter.all,
                 ReturnAllProperties  = false,
                 PropertyIDs          = null,
                 ReturnPropertyValues = false
             };
             BrowseElement[] elementArray = null;
             if (this.m_unconvertedItemID == null)
             {
                 filters.ElementNameFilter = "CPX";
                 elementArray = server.Browse(itemID, filters, out position);
                 if ((elementArray == null) || (elementArray.Length == 0))
                 {
                     return;
                 }
                 if (position != null)
                 {
                     position.Dispose();
                     position = null;
                 }
                 itemID = new ItemIdentifier(elementArray[0].ItemPath, elementArray[0].ItemName);
                 filters.ElementNameFilter = "DataFilters";
             }
             elementArray = server.Browse(itemID, filters, out position);
             if ((elementArray != null) && (elementArray.Length != 0))
             {
                 this.m_filterItem = new ItemIdentifier(elementArray[0].ItemPath, elementArray[0].ItemName);
             }
         }
         finally
         {
             if (position != null)
             {
                 position.Dispose();
                 position = null;
             }
         }
     }
 }
Exemplo n.º 20
0
        private bool BuildBrowseStack(ItemIdentifier itemID, ItemIdentifier targetID)
        {
            BrowseFilters filters = new BrowseFilters {
                MaxElementsReturned  = 0,
                BrowseFilter         = browseFilter.all,
                ElementNameFilter    = null,
                VendorFilter         = null,
                ReturnAllProperties  = false,
                PropertyIDs          = null,
                ReturnPropertyValues = false
            };

            BrowseElement[]       elementArray = null;
            Opc.Da.BrowsePosition position     = null;
            try
            {
                elementArray = this.m_server.Browse(itemID, filters, out position);
            }
            catch (Exception)
            {
                this.m_browseStack.Clear();
                return(false);
            }
            if (position != null)
            {
                position.Dispose();
                position = null;
            }
            if ((elementArray == null) || (elementArray.Length == 0))
            {
                this.m_browseStack.Clear();
                return(false);
            }
            foreach (BrowseElement element in elementArray)
            {
                if (element.ItemName == targetID.ItemName)
                {
                    return(true);
                }
                if (targetID.ItemName.StartsWith(element.ItemName))
                {
                    ItemIdentifier identifier = new ItemIdentifier(targetID.ItemName);
                    this.m_browseStack.Push(identifier);
                    return(this.BuildBrowseStack(identifier, targetID));
                }
            }
            return(false);
        }
Exemplo n.º 21
0
        public ComplexItem[] GetDataFilters(Opc.Da.Server server)
        {
            ComplexItem[] itemArray;
            if (this.m_unfilteredItemID != null)
            {
                return(null);
            }
            if (this.m_filterItem == null)
            {
                return(null);
            }
            BrowsePosition position = null;

            try
            {
                BrowseFilters filters = new BrowseFilters {
                    ElementNameFilter    = null,
                    BrowseFilter         = browseFilter.item,
                    ReturnAllProperties  = false,
                    PropertyIDs          = CPX_PROPERTIES,
                    ReturnPropertyValues = true
                };
                BrowseElement[] elementArray = server.Browse(this.m_filterItem, filters, out position);
                if ((elementArray == null) || (elementArray.Length == 0))
                {
                    return(new ComplexItem[0]);
                }
                ArrayList list = new ArrayList(elementArray.Length);
                foreach (BrowseElement element in elementArray)
                {
                    ComplexItem item = new ComplexItem();
                    if (item.Init(element))
                    {
                        list.Add(item);
                    }
                }
                itemArray = (ComplexItem[])list.ToArray(typeof(ComplexItem));
            }
            finally
            {
                if (position != null)
                {
                    position.Dispose();
                    position = null;
                }
            }
            return(itemArray);
        }
Exemplo n.º 22
0
        public override BrowseElement[] BrowseNext(ref Opc.Da.BrowsePosition position)
        {
            lock (this)
            {
                if (m_server == null)
                {
                    throw new NotConnectedException();
                }

                if (position == null && (object)position.GetType() != typeof(BrowsePosition))
                {
                    throw new BrowseCannotContinueException();
                }

                BrowsePosition position2 = (BrowsePosition)position;
                ItemIdentifier itemID    = position2.ItemID;
                BrowseFilters  filters   = position2.Filters;
                ArrayList      arrayList = new ArrayList();
                if (position2.IsBranch)
                {
                    BrowseElement[] elements = GetElements(arrayList.Count, itemID, filters, branches: true, ref position2);
                    if (elements != null)
                    {
                        arrayList.AddRange(elements);
                    }

                    position = position2;
                    if (position != null)
                    {
                        return((BrowseElement[])arrayList.ToArray(typeof(BrowseElement)));
                    }
                }

                if (filters.BrowseFilter != browseFilter.branch)
                {
                    BrowseElement[] elements2 = GetElements(arrayList.Count, itemID, filters, branches: false, ref position2);
                    if (elements2 != null)
                    {
                        arrayList.AddRange(elements2);
                    }

                    position = position2;
                }

                return((BrowseElement[])arrayList.ToArray(typeof(BrowseElement)));
            }
        }
Exemplo n.º 23
0
        public virtual BrowseElement[] BrowseNext(ref Opc.Da.BrowsePosition position)
        {
            lock (this)
            {
                if (m_server == null)
                {
                    throw new NotConnectedException();
                }

                if (position == null || (object)position.GetType() != typeof(BrowsePosition))
                {
                    throw new BrowseCannotContinueException();
                }

                BrowsePosition browsePosition = (BrowsePosition)position;
                if (browsePosition == null || browsePosition.ContinuationPoint == null || browsePosition.ContinuationPoint == "")
                {
                    throw new BrowseCannotContinueException();
                }

                int            pdwCount             = 0;
                int            pbMoreElements       = 0;
                ItemIdentifier itemID               = ((BrowsePosition)position).ItemID;
                BrowseFilters  filters              = ((BrowsePosition)position).Filters;
                IntPtr         pszContinuationPoint = Marshal.StringToCoTaskMemUni(browsePosition.ContinuationPoint);
                IntPtr         ppBrowseElements     = IntPtr.Zero;
                try
                {
                    ((IOPCBrowse)m_server).Browse((itemID != null && itemID.ItemName != null) ? itemID.ItemName : "", ref pszContinuationPoint, filters.MaxElementsReturned, Interop.GetBrowseFilter(filters.BrowseFilter), (filters.ElementNameFilter != null) ? filters.ElementNameFilter : "", (filters.VendorFilter != null) ? filters.VendorFilter : "", filters.ReturnAllProperties ? 1 : 0, filters.ReturnPropertyValues ? 1 : 0, (filters.PropertyIDs != null) ? filters.PropertyIDs.Length : 0, Interop.GetPropertyIDs(filters.PropertyIDs), out pbMoreElements, out pdwCount, out ppBrowseElements);
                }
                catch (Exception e)
                {
                    throw OpcCom.Interop.CreateException("IOPCBrowse.BrowseNext", e);
                }

                BrowseElement[] browseElements = Interop.GetBrowseElements(ref ppBrowseElements, pdwCount, deallocate: true);
                browsePosition.ContinuationPoint = Marshal.PtrToStringUni(pszContinuationPoint);
                Marshal.FreeCoTaskMem(pszContinuationPoint);
                if (pbMoreElements == 0 && (browsePosition.ContinuationPoint == null || browsePosition.ContinuationPoint == ""))
                {
                    position = null;
                }

                ProcessResults(browseElements, filters.PropertyIDs);
                return(browseElements);
            }
        }
Exemplo n.º 24
0
 public void ShowSingleServer(Opc.Da.Server server, BrowseFilters filters)
 {
     if (server == null)
     {
         throw new System.ArgumentNullException("server");
     }
     this.Clear();
     this.m_discovery                       = null;
     this.m_filters                         = ((filters == null) ? new BrowseFilters() : filters);
     this.BrowseTV.ContextMenu              = this.PopupMenu;
     this.m_singleServer                    = new System.Windows.Forms.TreeNode(server.Name);
     this.m_singleServer.ImageIndex         = Resources.IMAGE_LOCAL_SERVER;
     this.m_singleServer.SelectedImageIndex = Resources.IMAGE_LOCAL_SERVER;
     this.m_singleServer.Tag                = server.Duplicate();
     this.Connect(this.m_singleServer);
     this.BrowseTV.Nodes.Add(this.m_singleServer);
 }
Exemplo n.º 25
0
        public override BrowseElement[] Browse(ItemIdentifier itemID, BrowseFilters filters, out Opc.Da.BrowsePosition position)
        {
            if (filters == null)
            {
                throw new ArgumentNullException("filters");
            }

            position = null;
            lock (this)
            {
                if (m_server == null)
                {
                    throw new NotConnectedException();
                }

                BrowsePosition position2 = null;
                ArrayList      arrayList = new ArrayList();
                if (filters.BrowseFilter != browseFilter.item)
                {
                    BrowseElement[] elements = GetElements(arrayList.Count, itemID, filters, branches: true, ref position2);
                    if (elements != null)
                    {
                        arrayList.AddRange(elements);
                    }

                    position = position2;
                    if (position != null)
                    {
                        return((BrowseElement[])arrayList.ToArray(typeof(BrowseElement)));
                    }
                }

                if (filters.BrowseFilter != browseFilter.branch)
                {
                    BrowseElement[] elements2 = GetElements(arrayList.Count, itemID, filters, branches: false, ref position2);
                    if (elements2 != null)
                    {
                        arrayList.AddRange(elements2);
                    }

                    position = position2;
                }

                return((BrowseElement[])arrayList.ToArray(typeof(BrowseElement)));
            }
        }
Exemplo n.º 26
0
 public void Show(System.Windows.Forms.Form owner, BrowseFilters filters, BrowseFiltersChangedCallback callback)
 {
     if (callback == null)
     {
         throw new System.ArgumentNullException("callback");
     }
     base.Owner                                    = owner;
     this.m_callback                               = callback;
     this.BrowseFilterCTRL.Value                   = filters.BrowseFilter;
     this.MaxElementsReturnedCTRL.Value            = filters.MaxElementsReturned;
     this.ElementNameFilterTB.Text                 = filters.ElementNameFilter;
     this.VendorFilterTB.Text                      = filters.VendorFilter;
     this.ReturnPropertiesCB.Checked               = (filters.PropertyIDs != null || filters.ReturnAllProperties);
     this.PropertyFiltersCTRL.ReturnAllProperties  = filters.ReturnAllProperties;
     this.PropertyFiltersCTRL.ReturnPropertyValues = filters.ReturnPropertyValues;
     this.PropertyFiltersCTRL.PropertyIDs          = filters.PropertyIDs;
     base.Show();
 }
Exemplo n.º 27
0
        public System.Windows.Forms.DialogResult Initialize(Opc.Da.Server server)
        {
            if (server == null)
            {
                throw new System.ArgumentNullException("server");
            }
            this.m_server = server;
            BrowseFilters browseFilters = new BrowseFilters();

            browseFilters.ReturnAllProperties  = true;
            browseFilters.ReturnPropertyValues = true;
            this.BrowseCTRL.ShowSingleServer(this.m_server, browseFilters);
            this.PropertiesCTRL.Initialize(null);
            this.TagGridCTRL.Initialize(this.m_server, browseFilters, this.BrowseCTRL);
            System.Windows.Forms.DialogResult result = base.ShowDialog();
            this.BrowseCTRL.Clear();
            return(result);
        }
Exemplo n.º 28
0
        private void getTree(Opc.Da.Server server)
        {
            BrowsePosition bp;
            ItemIdentifier itemID  = new ItemIdentifier();
            BrowseFilters  filters = new BrowseFilters();

            BrowseElement[] be      = server.Browse(itemID, filters, out bp);
            TreeNode        kepServ = null;
            int             i       = be.Length;

            //  MessageBox.Show(i.ToString());
            while (i != 0)
            {
                --i;
                kepServ = treeView1.Nodes.Add(be[i].ItemName);
            }
            //  treeView1.Nodes.Add(kepServ);
        }
Exemplo n.º 29
0
 public virtual BrowseElement[] BrowseNext(ref Opc.Da.BrowsePosition position)
 {
     lock (this)
     {
         if (base.m_server == null)
         {
             throw new NotConnectedException();
         }
         if ((position == null) || (position.GetType() != typeof(OpcCom.Da.BrowsePosition)))
         {
             throw new BrowseCannotContinueException();
         }
         OpcCom.Da.BrowsePosition position2 = (OpcCom.Da.BrowsePosition)position;
         if (((position2 == null) || (position2.ContinuationPoint == null)) || (position2.ContinuationPoint == ""))
         {
             throw new BrowseCannotContinueException();
         }
         int            pdwCount             = 0;
         int            pbMoreElements       = 0;
         ItemIdentifier itemID               = ((OpcCom.Da.BrowsePosition)position).ItemID;
         BrowseFilters  filters              = ((OpcCom.Da.BrowsePosition)position).Filters;
         IntPtr         pszContinuationPoint = Marshal.StringToCoTaskMemUni(position2.ContinuationPoint);
         IntPtr         zero = IntPtr.Zero;
         try
         {
             ((IOPCBrowse)base.m_server).Browse(((itemID != null) && (itemID.ItemName != null)) ? itemID.ItemName : "", ref pszContinuationPoint, filters.MaxElementsReturned, OpcCom.Da.Interop.GetBrowseFilter(filters.BrowseFilter), (filters.ElementNameFilter != null) ? filters.ElementNameFilter : "", (filters.VendorFilter != null) ? filters.VendorFilter : "", filters.ReturnAllProperties ? 1 : 0, filters.ReturnPropertyValues ? 1 : 0, (filters.PropertyIDs != null) ? filters.PropertyIDs.Length : 0, OpcCom.Da.Interop.GetPropertyIDs(filters.PropertyIDs), out pbMoreElements, out pdwCount, out zero);
         }
         catch (Exception exception)
         {
             throw OpcCom.Interop.CreateException("IOPCBrowse.BrowseNext", exception);
         }
         BrowseElement[] elements = OpcCom.Da.Interop.GetBrowseElements(ref zero, pdwCount, true);
         position2.ContinuationPoint = Marshal.PtrToStringUni(pszContinuationPoint);
         Marshal.FreeCoTaskMem(pszContinuationPoint);
         if ((pbMoreElements == 0) && ((position2.ContinuationPoint == null) || (position2.ContinuationPoint == "")))
         {
             position = null;
         }
         this.ProcessResults(elements, filters.PropertyIDs);
         return(elements);
     }
 }
Exemplo n.º 30
0
        public BrowseElement[] browse(ref string itemName)
        {
            BrowsePosition position;
            BrowseFilters  filters = new BrowseFilters()
            {
                BrowseFilter = browseFilter.all
            };

            if (OpcDaConnector.server == null)
            {
                return new BrowseElement[] { new BrowseElement() }
            }
            ;
            else
            {
                BrowseElement[] browsed = OpcDaConnector.server.Browse(new ItemIdentifier(itemName), filters, out position);

                return(browsed);
            }
        }
Exemplo n.º 31
0
        //======================================================================
        // Browse
        /// <summary>
        /// Fetches the children of a branch that meet the filter criteria.
        /// </summary>
        /// <param name="itemID">The identifier of branch which is the target of the search.</param>
        /// <param name="filters">The filters to use to limit the set of child elements returned.</param>
        /// <param name="position">An object used to continue a browse that could not be completed.</param>
        /// <returns>The set of elements found.</returns>
        public Opc.Da.BrowseElement[] Browse(
            ItemIdentifier            itemID,
            BrowseFilters             filters,
            out Opc.Da.BrowsePosition position)
        {
            position = null;

            lock (this)
            {
                return m_cache.Browse(itemID, filters, ref position);
            }
        }
Exemplo n.º 32
0
        /// <summary>
        /// Returns the set of elements in the address space that meet the specified criteria.
        /// </summary>
        public Opc.Da.BrowseElement[] Browse(
            ItemIdentifier            itemID,
            BrowseFilters             filters,
            ref Opc.Da.BrowsePosition position)
        {
            lock (this)
            {
                if (m_disposed) throw new ObjectDisposedException("Opc.Da.Cache");

                BrowseElement element = m_addressSpace;

                // find desired element.
                string browsePath = (itemID != null)?itemID.ItemName:null;

                if (browsePath != null && browsePath.Length > 0)
                {
                    element = m_addressSpace.Find(browsePath);

                    if (element == null)
                    {
                        // check if browsing a property item.
                        PropertyID property = Property.VALUE;

                        string rootID = LookupProperty(browsePath, out property);

                        if (rootID != null)
                        {
                            element = m_addressSpace.Find(rootID);
                        }

                        if (element == null)
                        {
                            throw new ResultIDException(ResultID.Da.E_UNKNOWN_ITEM_NAME);
                        }

                        // property items never contain children.
                        return new Opc.Da.BrowseElement[0];
                    }
                }

                // check if no elements exist.
                if (element.Count == 0)
                {
                    return new Opc.Da.BrowseElement[0];
                }

                // determine start position.
                int start = 0;

                if (position != null)
                {
                    start = ((BrowsePosition)position).Index;
                    position.Dispose();
                    position = null;
                }

                // process child nodes.
                ArrayList results = new ArrayList();

                for (int ii = start; ii < element.Count; ii++)
                {
                    BrowseElement child = element.Child(ii);

                    // exclude elements without children.
                    if (filters.BrowseFilter == browseFilter.branch && child.Count == 0)
                    {
                        continue;
                    }

                    // check if an element is an item.
                    CacheItem item = (CacheItem)m_items[child.ItemID];

                    // exclude elements which are not items.
                    if (filters.BrowseFilter == browseFilter.item && item == null)
                    {
                        continue;
                    }

                    // apply name filter (using the SQL LIKE operator).
                    if (filters.ElementNameFilter != null && filters.ElementNameFilter.Length > 0)
                    {
                        if (!Opc.Convert.Match(child.Name, filters.ElementNameFilter, true))
                        {
                            continue;
                        }
                    }

                    // add element to list of results.
                    Opc.Da.BrowseElement result = new Opc.Da.BrowseElement();

                    result.Name        = child.Name;
                    result.ItemName    = child.ItemID;
                    result.ItemPath    = null;
                    result.IsItem      = item != null;
                    result.HasChildren = child.Count > 0;
                    result.Properties  = null;

                    // add properties to results.
                    if (filters.ReturnAllProperties || filters.PropertyIDs != null)
                    {
                        result.Properties = GetProperties(item, (filters.ReturnAllProperties)?null:filters.PropertyIDs, filters.ReturnPropertyValues);
                    }

                    results.Add(result);

                    // check if max elements exceeded.
                    if (filters.MaxElementsReturned > 0 && results.Count >= filters.MaxElementsReturned)
                    {
                        if (ii+1 < element.Count)
                        {
                            position = new BrowsePosition(itemID, filters);
                            ((BrowsePosition)position).Index = ii+1;
                        }

                        break;
                    }
                }

                // return results.
                return (Opc.Da.BrowseElement[])results.ToArray(typeof(Opc.Da.BrowseElement));
            }
        }
Exemplo n.º 33
0
 /// <summary>
 /// Initializes the base object with the specified parameters.
 /// </summary>
 public BrowsePosition(Opc.ItemIdentifier itemID, BrowseFilters filters)
     : base(itemID, filters)
 {
 }
Exemplo n.º 34
0
        private void UpdateFolderData(TreeNode node)
        {
            if (node == null)
            {
                uiFolderTagsBindingSource.DataSource = null;
                return;
            }

            //Add items to folder, read from OPC Server if first time
            var folderTags = node.Tag as List<BrowseElement>;
            if (folderTags == null)
            {
                TreeNode rootNode = node;
                while (rootNode.Parent != null)
                {
                    rootNode = rootNode.Parent;
                }

                var opcServer = Settings.OpcServers.Where(os => rootNode.FullPath == os.ServerName).Single();
                string urlstring = opcServer.URL;
                Server server = new Server(new Factory(), new URL(urlstring));
                server.Connect();

                BrowsePosition position;
                BrowseFilters filters = new BrowseFilters() { BrowseFilter = browseFilter.all };
                ItemIdentifier itemId = null;

                if (node.FullPath != server.Name)
                {
                    itemId = new ItemIdentifier(node.Name);
                }

                BrowseElement[] elements = server.Browse(itemId, filters, out position);
                server.Disconnect();

                var items = elements.Where(e => e.IsItem);
                if (items.Any())
                {
                    folderTags = items.ToList();
                }
                else
                {
                    folderTags = new List<BrowseElement>();
                }

                var folders = elements.Where(e => e.IsItem == false);
                if(folders.Any())
                {
                    foreach (var element in elements.Where(e => !e.IsItem))
                    {
                        node.Nodes.Add(element.Name).Name = element.ItemName;
                    }
                }

                node.Tag = folderTags;
            }

            //Exlude elements which already are in group
            folderTags = folderTags.ToList();
            var selectedGroup = uiGroupsTab_Groups.SelectedItem as Group;
            if (selectedGroup != null)
            {
                if (selectedGroup.Properties != null)
                {
                    foreach (var property in selectedGroup.Properties)
                    {
                        folderTags.RemoveAll(t => t.ItemName == property.TagName);
                    }
                }
            }

            uiFolderTagsBindingSource.DataSource = folderTags;

            //if (elements != null)
            //{
            //    var itemsIDs = new List<ItemIdentifier>();
            //    foreach (var element in elements)
            //    {
            //        itemsIDs.Add(new ItemIdentifier(element.ItemName));
            //    }

            //    var prid = new List<PropertyID>();
            //    prid.Add(new PropertyID(1));
            //    prid.Add(new PropertyID(2));

            //    var tst = server.GetProperties(itemsIDs.ToArray(), prid.ToArray(), true);
            //}
        }