/// <summary> /// Validates a written value. /// </summary> public ServiceResult OnWriteAnalogValue( ISystemContext context, NodeState node, ref object value) { try { BaseVariableState euRange = node.FindChild(context, Opc.Ua.BrowseNames.EURange) as BaseVariableState; if (euRange == null) { return(ServiceResult.Good); } Range range = euRange.Value as Range; if (range == null) { return(ServiceResult.Good); } Array array = value as Array; if (array != null) { for (int ii = 0; ii < array.Length; ii++) { object element = array.GetValue(ii); if (typeof(Variant).IsInstanceOfType(element)) { element = ((Variant)element).Value; } double elementNumber = Convert.ToDouble(element); if (elementNumber > range.High || elementNumber < range.Low) { return(StatusCodes.BadOutOfRange); } } return(ServiceResult.Good); } double number = Convert.ToDouble(value); if (number > range.High || number < range.Low) { return(StatusCodes.BadOutOfRange); } return(ServiceResult.Good); } catch (Exception e) { throw e; } }
/// <summary> /// Validates a written value. /// </summary> public ServiceResult OnWriteAnalogValue( ISystemContext context, NodeState node, ref object value) { try { if (!(node.FindChild(context, Opc.Ua.BrowseNames.EURange) is BaseVariableState euRange)) { return(ServiceResult.Good); } if (!(euRange.Value is Opc.Ua.Range range)) { return(ServiceResult.Good); } if (value is Array array) { for (var ii = 0; ii < array.Length; ii++) { var element = array.GetValue(ii); if (typeof(Variant).IsInstanceOfType(element)) { element = ((Variant)element).Value; } var elementNumber = Convert.ToDouble(element); if (elementNumber > range.High || elementNumber < range.Low) { return(StatusCodes.BadOutOfRange); } } return(ServiceResult.Good); } var number = Convert.ToDouble(value); if (number > range.High || number < range.Low) { return(StatusCodes.BadOutOfRange); } return(ServiceResult.Good); } catch (Exception e) { throw e; } }
/// <summary> /// Validates a written value. /// </summary> public ServiceResult OnWriteAnalogValue( ISystemContext context, NodeState node, ref object value) { try { BaseVariableState euRange = node.FindChild(context, Opc.Ua.BrowseNames.EURange) as BaseVariableState; if (euRange == null) { return ServiceResult.Good; } Range range = euRange.Value as Range; if (range == null) { return ServiceResult.Good; } Array array = value as Array; if (array != null) { for (int ii = 0; ii < array.Length; ii++) { object element = array.GetValue(ii); if (typeof(Variant).IsInstanceOfType(element)) { element = ((Variant)element).Value; } double elementNumber = Convert.ToDouble(element); if (elementNumber > range.High || elementNumber < range.Low) { return StatusCodes.BadOutOfRange; } } return ServiceResult.Good; } double number = Convert.ToDouble(value); if (number > range.High || number < range.Low) { return StatusCodes.BadOutOfRange; } return ServiceResult.Good; } catch (Exception e) { throw e; } }