void sensorEmulateTimer_Tick(object sender, EventArgs e) { if (iotKitHWStatus == null) { return; } long currentTick = DateTime.Now.Ticks; switch (temperatureSensorStatus) { case TemperatureSensorStatus.TouchedAndWarmed: case TemperatureSensorStatus.Untouched: iotKitHWStatus.CurrentTemperature += iotKitHWStatus.TemperatureWhiteNoise * (0.5 - sensorValueRandom.NextDouble()); break; case TemperatureSensorStatus.Touching: deltaTemp = (iotKitHWStatus.TargetMaxTemperature - iotKitHWStatus.TrueTemperature) / (iotKitHWStatus.ChangeDurationSec * TimeSpan.FromSeconds(1).Ticks / (sensorEmulateInterval.Ticks)); temperatureSensorStatus = TemperatureSensorStatus.TouchedAndWarming; break; case TemperatureSensorStatus.TouchedAndWarming: iotKitHWStatus.TrueTemperature += deltaTemp; if (iotKitHWStatus.TrueTemperature >= iotKitHWStatus.TargetMaxTemperature) { temperatureSensorStatus = TemperatureSensorStatus.TouchedAndWarmed; cbTempSensorStatus.IsEnabled = true; } iotKitHWStatus.CurrentTemperature = iotKitHWStatus.TrueTemperature + iotKitHWStatus.TemperatureWhiteNoise * (0.5 - sensorValueRandom.NextDouble()); break; case TemperatureSensorStatus.Untouching: deltaTemp = (iotKitHWStatus.TargetMinTemperature - iotKitHWStatus.TrueTemperature) / (iotKitHWStatus.ChangeDurationSec * TimeSpan.FromSeconds(1).Ticks / (sensorEmulateInterval.Ticks)); temperatureSensorStatus = TemperatureSensorStatus.UntouchedAndCooling; break; case TemperatureSensorStatus.UntouchedAndCooling: iotKitHWStatus.TrueTemperature += deltaTemp; if (iotKitHWStatus.TrueTemperature <= iotKitHWStatus.TargetMinTemperature) { temperatureSensorStatus = TemperatureSensorStatus.Untouched; cbTempSensorStatus.IsEnabled = true; } iotKitHWStatus.CurrentTemperature = iotKitHWStatus.TrueTemperature + iotKitHWStatus.TemperatureWhiteNoise * (0.5 - sensorValueRandom.NextDouble()); break; } iotKitHWStatus.CurrentAccelX = iotKitHWStatus.TrueAccelX + iotKitHWStatus.AccelWhiteNoiseLevel * (0.5 - sensorValueRandom.NextDouble()); iotKitHWStatus.CurrentAccelY = iotKitHWStatus.TrueAccelY + iotKitHWStatus.AccelWhiteNoiseLevel * (0.5 - sensorValueRandom.NextDouble()); iotKitHWStatus.CurrentAccelZ = iotKitHWStatus.TrueAccelZ + iotKitHWStatus.AccelWhiteNoiseLevel * (0.5 - sensorValueRandom.NextDouble()); }
private void cbTempSensorStatus_CheckedChanged(object sender, RoutedEventArgs e) { timeOfTemperatureSensorStatusChanged = DateTime.Now.Ticks; if (((CheckBox)sender).IsChecked.Value) { if (temperatureSensorStatus == TemperatureSensorStatus.Untouched) { temperatureSensorStatus = TemperatureSensorStatus.Touching; ((CheckBox)sender).IsEnabled = false; } } else { if (temperatureSensorStatus == TemperatureSensorStatus.TouchedAndWarmed) { temperatureSensorStatus = TemperatureSensorStatus.Untouching; ((CheckBox)sender).IsEnabled = false; } } }