/// <summary> /// Creates a new variable. /// </summary> private DataItemState CreateMultiStateDiscreteItemVariable(NodeState parent, string path, string name, params string[] values) { MultiStateDiscreteState variable = new MultiStateDiscreteState(parent); variable.NodeId = new NodeId(path, NamespaceIndex); variable.BrowseName = new QualifiedName(path, NamespaceIndex); variable.DisplayName = new LocalizedText("en", name); variable.WriteMask = AttributeWriteMask.None; variable.UserWriteMask = AttributeWriteMask.None; variable.Create( SystemContext, null, variable.BrowseName, null, true); variable.SymbolicName = name; variable.ReferenceTypeId = ReferenceTypes.Organizes; variable.DataType = DataTypeIds.UInt32; variable.ValueRank = ValueRanks.Scalar; variable.AccessLevel = AccessLevels.CurrentReadOrWrite; variable.UserAccessLevel = AccessLevels.CurrentReadOrWrite; variable.Historizing = false; variable.Value = (uint)0; variable.StatusCode = StatusCodes.Good; variable.Timestamp = DateTime.UtcNow; variable.OnWriteValue = OnWriteDiscrete; LocalizedText[] strings = new LocalizedText[values.Length]; for (int ii = 0; ii < strings.Length; ii++) { strings[ii] = values[ii]; } variable.EnumStrings.Value = strings; variable.EnumStrings.AccessLevel = AccessLevels.CurrentReadOrWrite; variable.EnumStrings.UserAccessLevel = AccessLevels.CurrentReadOrWrite; if (parent != null) { parent.AddChild(variable); } return(variable); }
/// <summary> /// Creates a new variable. /// </summary> private DataItemState CreateMultiStateDiscreteItemVariable(NodeState parent, string path, string name, params string[] values) { MultiStateDiscreteState variable = new MultiStateDiscreteState(parent); variable.NodeId = new NodeId(path, NamespaceIndex); variable.BrowseName = new QualifiedName(path, NamespaceIndex); variable.DisplayName = new LocalizedText("en", name); variable.WriteMask = AttributeWriteMask.None; variable.UserWriteMask = AttributeWriteMask.None; variable.Create( SystemContext, null, variable.BrowseName, null, true); variable.SymbolicName = name; variable.ReferenceTypeId = ReferenceTypes.Organizes; variable.DataType = DataTypeIds.UInt32; variable.ValueRank = ValueRanks.Scalar; variable.AccessLevel = AccessLevels.CurrentReadOrWrite; variable.UserAccessLevel = AccessLevels.CurrentReadOrWrite; variable.Historizing = false; variable.Value = (uint)0; variable.StatusCode = StatusCodes.Good; variable.Timestamp = DateTime.UtcNow; // variable.OnWriteValue = OnWriteDiscrete; LocalizedText[] strings = new LocalizedText[values.Length]; for (int ii = 0; ii < strings.Length; ii++) { strings[ii] = values[ii]; } variable.EnumStrings.Value = strings; variable.EnumStrings.AccessLevel = AccessLevels.CurrentReadOrWrite; variable.EnumStrings.UserAccessLevel = AccessLevels.CurrentReadOrWrite; if (parent != null) { parent.AddChild(variable); } return variable; }