public void Read(OpcValue value) { var node = ExpandedNodeId.ToNodeId(value.ExpandedNodeId, session.NamespaceUris); DataValue nodeValue = this.session.ReadValue(node); value.Value = nodeValue.Value as double?; }
public void SetValue(OpcValue value) { var node = ExpandedNodeId.ToNodeId(value.ExpandedNodeId, session.NamespaceUris); var header = new RequestHeader(); var collection = new List <WriteValue> { new WriteValue { NodeId = node, AttributeId = Attributes.Value, Value = new DataValue(new Variant(value.Value)) } }; var nodesToWrite = new WriteValueCollection(collection); StatusCodeCollection results = null; DiagnosticInfoCollection diagnosticInfos = null; var response = this.session.Write(header, nodesToWrite, out results, out diagnosticInfos); }
public void ExpandTree(OpcObject parent) { NodeId nodeId; if (parent.IsExtended) { return; } if (parent.Key != "$") { nodeId = ExpandedNodeId.ToNodeId(parent.ExpandedNodeId, this.session.NamespaceUris); } else { nodeId = ObjectIds.ObjectsFolder; } ReferenceDescriptionCollection refs; Byte[] cp; Browse( nodeId, (uint)NodeClass.Variable | (uint)NodeClass.Object, out refs, out cp); foreach (var rd in refs) { ReferenceDescriptionCollection nextRefs; byte[] nextCp; if (rd.NodeClass == NodeClass.Object) { Browse( ExpandedNodeId.ToNodeId(rd.NodeId, session.NamespaceUris), (uint)NodeClass.Object, out nextRefs, out nextCp); var obj = new OpcObject { Key = rd.DisplayName.ToString(), ExpandedNodeId = rd.NodeId, }; if (!nextRefs.Any()) { obj.HasChildren = false; } parent.Children.Add(obj); } else { var node = ExpandedNodeId.ToNodeId(rd.NodeId, session.NamespaceUris); DataValue nodeValue = this.session.ReadValue(node); var obj = new OpcValue { Key = rd.DisplayName.ToString(), Value = nodeValue.Value as double?, ExpandedNodeId = rd.NodeId, }; parent.Values.Add(obj); } } parent.IsExtended = true; }