/// <summary> /// Initializes the control with a set of items. /// </summary> public void Initialize(Session session, ExpandedNodeId nodeId) { ItemsLV.Items.Clear(); m_session = session; if (m_session == null) { return; } ILocalNode node = m_session.NodeCache.Find(nodeId) as ILocalNode; if (node == null) { return; } uint[] attributesIds = Attributes.GetIdentifiers(); for (int ii = 0; ii < attributesIds.Length; ii++) { uint attributesId = attributesIds[ii]; if (!node.SupportsAttribute(attributesId)) { continue; } ItemInfo info = new ItemInfo(); info.NodeId = node.NodeId; info.AttributeId = attributesId; info.Name = Attributes.GetBrowseName(attributesId); info.Value = new DataValue(StatusCodes.BadWaitingForInitialData); ServiceResult result = node.Read(null, attributesId, info.Value); if (ServiceResult.IsBad(result)) { info.Value = new DataValue(result.StatusCode); } AddItem(info); } IList <IReference> references = node.References.Find(ReferenceTypes.HasProperty, false, true, m_session.TypeTree); for (int ii = 0; ii < references.Count; ii++) { IReference reference = references[ii]; ILocalNode property = m_session.NodeCache.Find(reference.TargetId) as ILocalNode; if (property == null) { return; } ItemInfo info = new ItemInfo(); info.NodeId = property.NodeId; info.AttributeId = Attributes.Value; info.Name = Utils.Format("{0}", property.DisplayName); info.Value = new DataValue(StatusCodes.BadWaitingForInitialData); ServiceResult result = property.Read(null, Attributes.Value, info.Value); if (ServiceResult.IsBad(result)) { info.Value = new DataValue(result.StatusCode); } AddItem(info); } UpdateValues(); }
public List <NodeInfo> GetNodeInfoList(ExpandedNodeId nodeid) { var nodeInfoList = new List <NodeInfo>(); var n = session.NodeCache.Find(nodeid) as ILocalNode; if (n == null) { return(null); } uint[] attributesIds = Attributes.GetIdentifiers(); foreach (uint attributesId in attributesIds) { if (!n.SupportsAttribute(attributesId)) { continue; } var _value = new DataValue(StatusCodes.BadWaitingForInitialData); ServiceResult result = n.Read(null, attributesId, _value); if (ServiceResult.IsBad(result)) { _value = new DataValue(result.StatusCode); } var _name = Attributes.GetBrowseName(attributesId); nodeInfoList.Add(new NodeInfo { Name = _name, Value = _value.ToString() }); } IList <IReference> references = n.References.Find(ReferenceTypes.HasProperty, false, true, session.TypeTree); for (int ii = 0; ii < references.Count; ii++) { IReference reference = references[ii]; ILocalNode property = session.NodeCache.Find(reference.TargetId) as ILocalNode; if (property == null) { break; } var _name = Utils.Format("{0}", property.DisplayName); var _value = new DataValue(StatusCodes.BadWaitingForInitialData); ServiceResult result = property.Read(null, Attributes.Value, _value); if (ServiceResult.IsBad(result)) { _value = new DataValue(result.StatusCode); } nodeInfoList.Add(new NodeInfo { Name = _name, Value = _value.ToString() }); } return(nodeInfoList); }