private void AddItems(List <string> p_ItemIds) { int l_ItemClientHandle = 0; OpcItemDef[] l_ItemDef = new OpcItemDef[p_ItemIds.Count]; OpcItemResult[] l_AddRes; foreach (string l_ItemName in p_ItemIds) { l_ItemDef[l_ItemClientHandle] = new OpcItemDef(l_ItemName, false, l_ItemClientHandle, VarEnum.VT_BSTR); l_ItemClientHandle++; } _group.AddItems(l_ItemDef, out l_AddRes); l_ItemClientHandle = 0; foreach (string l_ItemName in p_ItemIds) { if (l_AddRes[l_ItemClientHandle].Error == HResults.S_OK) { Dictionary <string, string> l_ItemProps = new Dictionary <string, string>(); l_ItemProps.Add(CModel.ServerModel.ItemPropIdKey, _server.GetItemID(l_ItemName)); l_ItemProps.Add(CModel.ServerModel.ItemPropTypeKey, OpcUtility.TypeToString((int)l_AddRes[l_ItemClientHandle].CanonicalDataType)); _serverModel.AddItem(l_ItemClientHandle, l_AddRes[l_ItemClientHandle].HandleServer, l_ItemProps); } l_ItemClientHandle++; } }
private void ValidateItemIds(ref List <string> p_ItemIds) { List <string> l_ItemIds = new List <string>(p_ItemIds); foreach (string l_ItemName in l_ItemIds) { OpcItemResult[] l_ItemResult; OpcItemDef[] l_ItemDef = new OpcItemDef[1]; l_ItemDef[0] = new OpcItemDef(l_ItemName, true, 0, VarEnum.VT_BSTR); if (!_group.ValidateItems(l_ItemDef, false, out l_ItemResult)) { p_ItemIds.Remove(l_ItemName); } } }