/// <summary> /// Creates an enumerator for the current browse position. /// </summary> /// <param name="branches">if set to <c>true</c> then branches are enumerated.</param> /// <returns>The wrapped enumerator.</returns> private EnumString CreateEnumerator(bool branches) { IEnumString unknown = null; string methodName = "IOPCBrowseServerAddressSpace.BrowseOPCItemIDs"; try { IOPCBrowseServerAddressSpace server = BeginComCall <IOPCBrowseServerAddressSpace>(methodName, true); OPCBROWSETYPE browseType = OPCBROWSETYPE.OPC_BRANCH; if (!branches) { browseType = OPCBROWSETYPE.OPC_LEAF; } server.BrowseOPCItemIDs(browseType, String.Empty, 0, 0, out unknown); } catch (Exception e) { ComCallError(methodName, e); return(null); } finally { EndComCall(methodName); } // wrapper the enumrator. hardcoding a buffer size of 256. return(new EnumString(unknown, 256)); }
public List <string> Browse(OPCBROWSETYPE type = OPCBROWSETYPE.OPC_FLAT, string szFilter = "", short typeFilter = 0, OPCACCESSRIGHTS rightFilter = 0) { if (_opcBrowser == null) { return(null); } List <string> list = new List <string>(14000); OPC.Data.Interface.IEnumString enumerator; _opcBrowser.BrowseOPCItemIDs(type, szFilter, typeFilter, rightFilter, out enumerator); if (enumerator == null) { return(list); } int cft = 0; string[] strF = new string[1000]; do { enumerator.RemoteNext(1000, strF, out cft); for (int i = 0; i < cft; i++) { list.Add(strF[i]); } } while (cft > 0); Marshal.ReleaseComObject(enumerator); enumerator = null; list.TrimExcess(); return(list); }
// extra helper public void Browse(OPCBROWSETYPE typ, out ArrayList lst) { lst = null; UCOMIEnumString enumerator; BrowseOPCItemIDs(typ, "", VarEnum.VT_EMPTY, 0, out enumerator); if (enumerator == null) { return; } lst = new ArrayList(500); int cft; string[] strF = new string[100]; int hresult; do { cft = 0; hresult = enumerator.Next(100, strF, out cft); if (cft > 0) { for (int i = 0; i < cft; i++) { lst.Add(strF[i]); } } }while(hresult == HRESULTS.S_OK); int rc = Marshal.ReleaseComObject(enumerator); enumerator = null; lst.TrimToSize(); }
public void Browse(OPCBROWSETYPE typ, out ArrayList lst) { IEnumString str; lst = null; this.BrowseOPCItemIDs(typ, "", VarEnum.VT_EMPTY, 0, out str); if (str != null) { int num2; lst = new ArrayList(500); string[] rgelt = new string[100]; do { //int pceltFetched = 0; IntPtr pceltFetchedPtr = new IntPtr(0); num2 = str.Next(100, rgelt, pceltFetchedPtr); int pceltFetched = pceltFetchedPtr.ToInt32(); if (pceltFetched > 0) { for (int i = 0; i < pceltFetched; i++) { lst.Add(rgelt[i]); } } }while (num2 == 0); int num4 = Marshal.ReleaseComObject(str); str = null; lst.TrimToSize(); } }
public void BrowseOPCItemIDs(OPCBROWSETYPE filterType, string filterCriteria, VarEnum dataTypeFilter, OPCACCESSRIGHTS accessRightsFilter, out IEnumString stringEnumerator) { object obj2; stringEnumerator = null; this.ifBrowse.BrowseOPCItemIDs(filterType, filterCriteria, (short)dataTypeFilter, accessRightsFilter, out obj2); stringEnumerator = (IEnumString)obj2; obj2 = null; }
public void BrowseOPCItemIDs(OPCBROWSETYPE filterType, string filterCriteria, VarEnum dataTypeFilter, OPCACCESSRIGHTS accessRightsFilter, out UCOMIEnumString stringEnumerator) { stringEnumerator = null; object enumtemp; ifBrowse.BrowseOPCItemIDs(filterType, filterCriteria, (short)dataTypeFilter, accessRightsFilter, out enumtemp); stringEnumerator = (UCOMIEnumString)enumtemp; enumtemp = null; }
public void BrowseOPCItemIDs(OPCBROWSETYPE dwBrowseFilterType, string szFilterCriteria, short vtDataTypeFilter, int dwAccessRightsFilter, out IEnumString ppIEnumString) { var methodName = nameof(IOPCBrowseServerAddressSpace) + "." + nameof(IOPCBrowseServerAddressSpace.BrowseOPCItemIDs); try { var server = BeginComCall <IOPCBrowseServerAddressSpace>(methodName, true); server.BrowseOPCItemIDs(dwBrowseFilterType, szFilterCriteria, vtDataTypeFilter, dwAccessRightsFilter, out ppIEnumString); } finally { EndComCall(methodName); } }
int IOPCBrowseServerAddressSpace.BrowseOPCItemIDs([In, MarshalAs(UnmanagedType.U4)] OPCBROWSETYPE dwBrowseFilterType, [In, MarshalAs(UnmanagedType.LPWStr)] string szFilterCriteria, [In, MarshalAs(UnmanagedType.U2)] short vtDataTypeFilter, [In, MarshalAs(UnmanagedType.U4)] OPCACCESSRIGHTS dwAccessRightsFilter, [MarshalAs(UnmanagedType.IUnknown)] out object ppUnk) { string currentTestMethod = Dottest.Framework.Stubs.CurrentTestMethod.Name; if (currentTestMethod.Equals("TestBrowse01")) { EnumString enumStr = new EnumString(); enumStr.Add("DP1"); enumStr.Add("DP2"); ppUnk = enumStr; } else { ppUnk = null; } return(1); }
private void listItems(OPCBROWSETYPE type, out List <string> items, out List <string> paths) { string szFilter = ""; items = new List <string>(); paths = new List <string>(); int m_Res; m_Res = 0; object pIEnumString; m_Res = m_pIBrowse.BrowseOPCItemIDs(type, szFilter, (int)VarEnum.VT_EMPTY, 0, out pIEnumString); if (m_Res >= 0 && pIEnumString != null) { if (pIEnumString is UCOMIEnumString) { int celt = 1; string[] rgelt = new string[1]; int p_celtFetched = 0; UCOMIEnumString stringArray = (UCOMIEnumString)pIEnumString; stringArray.Reset(); int ret = stringArray.Next(celt, rgelt, out p_celtFetched); while (p_celtFetched > 0) { string path = getFullPath(rgelt[0]); items.Add(rgelt[0]); paths.Add(path); celt = 1; p_celtFetched = 0; stringArray.Next(celt, rgelt, out p_celtFetched); } } else { throw new Exception("Browser: IEnumString is not found."); } } else { throw new Exception("Browser: Enumeration Items error."); } }
/// <summary> /// Browse items /// </summary> /// <param name="filterType"><see cref="OPCBROWSETYPE"/> filter, ignored for <see cref="OPCNAMESPACETYPE.OPC_NS_FLAT"/> address space.</param> /// <param name="filterCriteria">A server specific filter string.</param> /// <param name="dataTypeFilter">Data type filter or <see cref="VarEnum.VT_EMPTY"/></param> /// <param name="accessRightsFilter"><see cref="OPCACCESSRIGHTS"/> filter.</param> /// <returns></returns> public string[] BrowseItemIDs(OPCBROWSETYPE filterType, string filterCriteria, VarEnum dataTypeFilter, OPCACCESSRIGHTS accessRightsFilter) { ThrowIfDisposed(); object enumerator = null; try { opcBrowseServer.BrowseOPCItemIDs(filterType, filterCriteria, (short)dataTypeFilter, accessRightsFilter, out enumerator); return(IEnumStringToArray((IEnumString)enumerator)); } finally { if (enumerator != null) { Marshal.ReleaseComObject(enumerator); } } }
public void BrowseOPCItemIDs(OPCBROWSETYPE dwBrowseFilterType, string szFilterCriteria, short vtDataTypeFilter, int dwAccessRightsFilter, out IEnumString ppIEnumString) { lock (this) { try { ItemIdentifier itemID = null; if (m_browseStack.Count > 0) { itemID = (ItemIdentifier)m_browseStack.Peek(); } ArrayList arrayList = new ArrayList(); Browse(itemID, dwBrowseFilterType, szFilterCriteria, vtDataTypeFilter, dwAccessRightsFilter, arrayList); ppIEnumString = new EnumString(arrayList); } catch (Exception e) { throw CreateException(e); } } }
public void BrowseOPCItemIDs(OPCBROWSETYPE dwBrowseFilterType, string szFilterCriteria, short vtDataTypeFilter, int dwAccessRightsFilter, out OpcRcw.Da.IEnumString ppIEnumString) { OpcCom.Da.Wrapper.Server server; Monitor.Enter(server = this); try { ItemIdentifier itemID = null; if (this.m_browseStack.Count > 0) { itemID = (ItemIdentifier)this.m_browseStack.Peek(); } ArrayList hits = new ArrayList(); this.Browse(itemID, dwBrowseFilterType, szFilterCriteria, vtDataTypeFilter, dwAccessRightsFilter, hits); ppIEnumString = new OpcCom.Da.Wrapper.EnumString(hits); } catch (Exception exception) { throw CreateException(exception); } finally { Monitor.Exit(server); } }
public void BrowseOPCItemIDs(OPCBROWSETYPE dwBrowseFilterType, string szFilterCriteria, short vtDataTypeFilter, int dwAccessRightsFilter, out IEnumString ppIEnumString) { var methodName = nameof(IOPCBrowseServerAddressSpace) + "." + nameof(IOPCBrowseServerAddressSpace.BrowseOPCItemIDs); try { var server = BeginComCall<IOPCBrowseServerAddressSpace>(methodName, true); server.BrowseOPCItemIDs(dwBrowseFilterType, szFilterCriteria, vtDataTypeFilter, dwAccessRightsFilter, out ppIEnumString); } finally { EndComCall(methodName); } }
private EnumString GetEnumerator(string itemID, BrowseFilters filters, bool branches, bool flat) { IOPCBrowseServerAddressSpace iOPCBrowseServerAddressSpace = (IOPCBrowseServerAddressSpace)m_server; if (!flat) { string text = (itemID != null) ? itemID : ""; try { iOPCBrowseServerAddressSpace.ChangeBrowsePosition(OPCBROWSEDIRECTION.OPC_BROWSE_TO, text); } catch { try { iOPCBrowseServerAddressSpace.ChangeBrowsePosition(OPCBROWSEDIRECTION.OPC_BROWSE_DOWN, text); } catch { try { while (true) { iOPCBrowseServerAddressSpace.ChangeBrowsePosition(OPCBROWSEDIRECTION.OPC_BROWSE_UP, string.Empty); } } catch { } string[] array = null; lock (m_separatorsLock) { array = ((m_separators == null) ? text.Split(m_separators) : text.Split(m_separators)); } for (int i = 0; i < array.Length; i++) { if (array[i] != null && array[i].Length != 0) { try { iOPCBrowseServerAddressSpace.ChangeBrowsePosition(OPCBROWSEDIRECTION.OPC_BROWSE_DOWN, array[i]); } catch { throw new ResultIDException(ResultID.Da.E_UNKNOWN_ITEM_NAME, "Cannot browse because the server is not compliant because it does not support the BROWSE_TO function."); } } } } } } try { IEnumString ppIEnumString = null; OPCBROWSETYPE dwBrowseFilterType = branches ? OPCBROWSETYPE.OPC_BRANCH : OPCBROWSETYPE.OPC_LEAF; if (flat) { dwBrowseFilterType = OPCBROWSETYPE.OPC_FLAT; } iOPCBrowseServerAddressSpace.BrowseOPCItemIDs(dwBrowseFilterType, (filters.ElementNameFilter != null) ? filters.ElementNameFilter : "", 0, 0, out ppIEnumString); return(new EnumString(ppIEnumString)); } catch { throw new ResultIDException(ResultID.Da.E_UNKNOWN_ITEM_NAME); } }
// extra helper public void Browse( OPCBROWSETYPE typ, out ArrayList lst ) { lst = null; UCOMIEnumString enumerator; BrowseOPCItemIDs( typ, "", VarEnum.VT_EMPTY, 0, out enumerator ); if( enumerator == null ) return; lst = new ArrayList( 500 ); int cft; string[] strF = new string[100]; int hresult; do { cft = 0; hresult = enumerator.Next( 100, strF, out cft ); if( cft > 0 ) { for( int i = 0; i < cft; i++ ) lst.Add( strF[i] ); } } while( hresult == HRESULTS.S_OK ); int rc = Marshal.ReleaseComObject( enumerator ); enumerator = null; lst.TrimToSize(); }
/// <summary> /// Browse items /// </summary> /// <param name="filterType"><see cref="OPCBROWSETYPE"/> filter, ignored for <see cref="OPCNAMESPACETYPE.OPC_NS_FLAT"/> address space.</param> /// <param name="filterCriteria">A server specific filter string.</param> /// <returns></returns> public string[] BrowseItemIDs(OPCBROWSETYPE filterType, string filterCriteria) { return(BrowseItemIDs(filterType, filterCriteria, VarEnum.VT_EMPTY, OPCACCESSRIGHTS.OPC_UNKNOWN)); }
/// <summary> /// Browse items /// </summary> /// <param name="filterType"><see cref="OPCBROWSETYPE"/> filter, ignored for <see cref="OPCNAMESPACETYPE.OPC_NS_FLAT"/> address space. /// </param> public string[] BrowseItemIDs(OPCBROWSETYPE filterType) { return(BrowseItemIDs(filterType, String.Empty, VarEnum.VT_EMPTY, 0)); }
public void BrowseOPCItemIDs( OPCBROWSETYPE filterType, string filterCriteria, VarEnum dataTypeFilter, OPCACCESSRIGHTS accessRightsFilter, out UCOMIEnumString stringEnumerator) { stringEnumerator = null; object enumtemp; ifBrowse.BrowseOPCItemIDs( filterType, filterCriteria, (short) dataTypeFilter, accessRightsFilter, out enumtemp ); stringEnumerator = (UCOMIEnumString) enumtemp; enumtemp = null; }
private void Browse(ItemIdentifier itemID, OPCBROWSETYPE dwBrowseFilterType, string szFilterCriteria, short vtDataTypeFilter, int dwAccessRightsFilter, ArrayList hits) { BrowseFilters filters = new BrowseFilters { MaxElementsReturned = 0, BrowseFilter = browseFilter.all, ElementNameFilter = (dwBrowseFilterType != OPCBROWSETYPE.OPC_FLAT) ? szFilterCriteria : "", VendorFilter = null, ReturnAllProperties = false }; filters.PropertyIDs = new PropertyID[] { Property.DATATYPE, Property.ACCESSRIGHTS }; filters.ReturnPropertyValues = true; BrowseElement[] elementArray = null; try { Opc.Da.BrowsePosition position = null; elementArray = this.m_server.Browse(itemID, filters, out position); if (position != null) { position.Dispose(); position = null; } } catch { throw new ExternalException("BrowseOPCItemIDs", -2147467259); } foreach (BrowseElement element in elementArray) { if (dwBrowseFilterType == OPCBROWSETYPE.OPC_FLAT) { if (element.HasChildren) { this.Browse(new ItemIdentifier(element.ItemName), dwBrowseFilterType, szFilterCriteria, vtDataTypeFilter, dwAccessRightsFilter, hits); } } else { if (dwBrowseFilterType == OPCBROWSETYPE.OPC_BRANCH) { if (element.HasChildren) { goto Label_00F9; } continue; } if ((dwBrowseFilterType == OPCBROWSETYPE.OPC_LEAF) && element.HasChildren) { continue; } } Label_00F9: if (element.IsItem) { if (vtDataTypeFilter != 0) { short type = (short)OpcCom.Interop.GetType((System.Type)element.Properties[0].Value); if (type != vtDataTypeFilter) { continue; } } if (dwAccessRightsFilter != 0) { accessRights rights = (accessRights)element.Properties[1].Value; if (((dwAccessRightsFilter == 1) && (rights == accessRights.writable)) || ((dwAccessRightsFilter == 2) && (rights == accessRights.readable))) { continue; } } } if (dwBrowseFilterType != OPCBROWSETYPE.OPC_FLAT) { hits.Add(element.Name); } else if (element.IsItem && ((szFilterCriteria.Length == 0) || Opc.Convert.Match(element.ItemName, szFilterCriteria, true))) { hits.Add(element.ItemName); } } }