示例#1
0
        public override void Update()
        {
            SensorValueProvider.Update();
            var newValue = SensorValueProvider.ValueOrDefault(float.NaN);

            if (float.IsNaN(newValue))
            {
                return;
            }

            CurrentValue = newValue + _offset;
        }
示例#2
0
        public ISensorValueProvider CreateProvider(ISensor sensor)
        {
            ISensorValueProvider sensorValueProvider = new SensorValueProvider(sensor);

            var alpha = Math.Exp(-_config.SensorTimerInterval / (double)_config.DeviceSpeedTimerInterval);

            sensorValueProvider = new MovingAverageSensorValueDecorator(sensorValueProvider, alpha);

            if (_sensorConfigs.TryGetValue(sensor.Identifier, out var config) && config.Offset.HasValue)
            {
                sensorValueProvider = new OffsetSensorValueDecorator(sensorValueProvider, config.Offset.Value);
            }

            return(sensorValueProvider);
        }
        public override void Update()
        {
            SensorValueProvider.Update();
            var newValue = SensorValueProvider.ValueOrDefault(float.NaN);

            if (float.IsNaN(newValue))
            {
                return;
            }

            if (CurrentValue == null)
            {
                CurrentValue = newValue;
                return;
            }

            CurrentValue = (float)((1 - _alpha) * newValue + _alpha * CurrentValue);
        }