/// <summary> /// Reads the attribute values for the current node and displays them. /// </summary> public void ReadAttributes(TreeNode parent) { ReferenceDescription start = parent.Tag as ReferenceDescription; ListOfReadValueId nodesToRead = new ListOfReadValueId(); foreach (uint attributeId in Attributes.GetIdentifiers()) { ReadValueId nodeToRead = new ReadValueId(); nodeToRead.NodeId = new NodeId(start.NodeId); nodeToRead.AttributeId = attributeId; nodesToRead.Add(nodeToRead); } ListOfDataValue results; ListOfDiagnosticInfo diagnosticInfos; m_client.Read( m_client.CreateRequestHeader(), 0, TimestampsToReturn.Both_2, nodesToRead, out results, out diagnosticInfos); if (results != null) { AttributesLV.Items.Clear(); for (int ii = 0; ii < nodesToRead.Count; ii++) { ReadValueId nodeToRead = nodesToRead[ii]; DataValue dataValue = results[ii]; if (dataValue.StatusCode == StatusCodes.BadAttributeIdInvalid) { continue; } ListViewItem item = new ListViewItem(Attributes.GetBrowseName(nodeToRead.AttributeId)); item.SubItems.Add(new ListViewItem.ListViewSubItem()); item.SubItems[1].Text = dataValue.ToString(); AttributesLV.Items.Add(item); } } }