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[] { }); } } } }
/// <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; } } }
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); } }
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); }
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); }
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; }
/// <summary> /// Initializes a browse position /// </summary> internal BrowsePosition( Opc.ItemIdentifier itemID, BrowseFilters filters, string continuationPoint) : base(itemID, filters) { ContinuationPoint = continuationPoint; }
/// <summary> /// Initializes a browse posistion /// </summary> internal RootBrowsePosition( Opc.ItemIdentifier itemID, BrowseFilters filters, string locale, bool returnErrorText) : base(itemID, filters, locale, returnErrorText) { }
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); }
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); }
/// <summary> /// Initializes a browse posistion /// </summary> internal BrowsePosition( Opc.ItemIdentifier itemID, BrowseFilters filters, string locale, bool returnErrorText) : base(itemID, filters) { Locale = locale; ReturnErrorText = returnErrorText; }
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}"; }
//====================================================================== // 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)); } }
//====================================================================== // 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)); } }
/// <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()); } }
// 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); }
// 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; } } }
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); }
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; } } } }
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); }
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); }
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))); } }
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); } }
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); }
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))); } }
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(); }
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); }
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); }
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); } }
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); } }
//====================================================================== // 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); } }
/// <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)); } }
/// <summary> /// Initializes the base object with the specified parameters. /// </summary> public BrowsePosition(Opc.ItemIdentifier itemID, BrowseFilters filters) : base(itemID, filters) { }
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); //} }