/// <summary> /// Looks up unit, converts and loads representation /// </summary> /// <param name="n"></param> /// <param name="ddi"></param> /// <param name="mapper"></param> /// <returns></returns> /// public static NumericRepresentationValue AsNumericRepresentationValue(this int n, int ddi, RepresentationMapper mapper, UnitOfMeasure userUnitOfMeasure = null) { //RepresentationValue NumericRepresentationValue returnValue = new ApplicationDataModel.Representations.NumericRepresentationValue(); //Representation returnValue.Representation = mapper.Map(ddi) as NumericRepresentation; //Value double convertedValue = (double)n; UnitOfMeasure uom = null; ISOUnit isoUnit = UnitFactory.Instance.GetUnitByDDI(ddi); if (isoUnit != null) { convertedValue = isoUnit.ConvertFromIsoUnit(convertedValue); uom = isoUnit.ToAdaptUnit(); } returnValue.Value = new ApplicationDataModel.Representations.NumericValue(uom, convertedValue); //User UOM if (userUnitOfMeasure != null) { returnValue.UserProvidedUnitOfMeasure = userUnitOfMeasure; } return(returnValue); }
public static double ConvertToIsoUnit(this ISOUnit unit, double srcValue, string srcUnitCode) { if (unit == null) { return(srcValue); } double convertedValue = srcValue.ConvertValue(srcUnitCode, unit.ToAdaptUnit().Code); double scaledValue = (convertedValue / unit.Scale) - unit.Offset; return(scaledValue); }
private ISOProcessDataVariable ExportProcessDataVariable(NumericRepresentationValue value, string isoProductIdRef, ISOUnit unit) { if (value != null && value.Value != null) { UnitOfMeasure adaptUnit = unit.ToAdaptUnit(); var dataVariable = new ISOProcessDataVariable { ProductIdRef = isoProductIdRef, ProcessDataValue = value.AsIntViaMappedDDI(RepresentationMapper), ProcessDataDDI = DetermineVariableDDI(value.Representation, adaptUnit).AsHexDDI() }; return(dataVariable); } return(null); }