/// <summary> /// Gets the original data values by expanding /// sequences and applying scale and offset. /// </summary> /// <returns>A list of the original data values.</returns> private IList <object> GetOriginalValues() { IList <object> values = new List <object>(); VectorElement valuesVector = SeriesValues; StorageMethods storageMethods = Definition.StorageMethodID; bool incremented = (storageMethods & StorageMethods.Increment) != 0; dynamic start, count, increment; bool scaled = (storageMethods & StorageMethods.Scaled) != 0; dynamic offset = ((object)SeriesOffset != null) ? SeriesOffset.Get() : 0; dynamic scale = ((object)SeriesScale != null) ? SeriesScale.Get() : 1; dynamic value; if (!scaled) { offset = 0; scale = 1; } if (incremented) { start = valuesVector.Get(0); count = valuesVector.Get(1); increment = valuesVector.Get(2); for (int i = 0; i < count; i++) { values.Add((object)(start + (i * increment))); } } else { for (int i = 0; i < valuesVector.Size; i++) { values.Add(valuesVector.Get(i)); } } if (valuesVector.TypeOfValue != PhysicalType.Timestamp) { for (int i = 0; i < values.Count; i++) { value = values[i]; values[i] = offset + (value * scale); } ApplyTransducerRatio(values); } return(values); }
/// <summary> /// Gets the original data values by expanding /// sequences and applying scale and offset. /// </summary> /// <returns>A list of the original data values.</returns> private IList <object> GetOriginalValues() { IList <object> values = new List <object>(); VectorElement valuesVector = SeriesValues; StorageMethods storageMethods = Definition.StorageMethodID; bool incremented = (storageMethods & StorageMethods.Increment) != 0; bool scaled = (storageMethods & StorageMethods.Scaled) != 0; dynamic offset = SeriesOffset != null?SeriesOffset.Get() : 0; dynamic scale = SeriesScale != null?SeriesScale.Get() : 1; dynamic value; if (!scaled) { offset = 0; scale = 1; } if (incremented) { dynamic rateCount = valuesVector.Get(0); if (rateCount > 0) { dynamic zero = rateCount - rateCount; dynamic one = rateCount / rateCount; dynamic start = zero; for (int i = 0; i < rateCount; i++) { int countIndex = i * 2 + 1; int incrementIndex = i * 2 + 2; dynamic count = valuesVector.Get(countIndex); dynamic increment = valuesVector.Get(incrementIndex); for (dynamic j = zero; j < count; j += one) { values.Add((object)(start + j * increment)); } start = count * increment; } } } else { for (int i = 0; i < valuesVector.Size; i++) { values.Add(valuesVector.Get(i)); } } if (valuesVector.TypeOfValue != PhysicalType.Timestamp) { for (int i = 0; i < values.Count; i++) { value = values[i]; values[i] = offset + value * scale; } ApplyTransducerRatio(values); } return(values); }