async void SensorValueChanged(object sender, X2CodingLab.SensorTag.SensorValueChangedEventArgs e) { await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async() => { switch (e.Origin) { case SensorName.Accelerometer: double[] accValues = Accelerometer.CalculateCoordinates(e.RawData, 1 / 64.0); tbAccelerometer.Text = "X: " + accValues[0].ToString("0.00") + " Y: " + accValues[1].ToString("0.00") + " Z: " + accValues[2].ToString("0.00"); break; case SensorName.Gyroscope: float[] axisValues = Gyroscope.CalculateAxisValue(e.RawData, GyroscopeAxis.XYZ); tbGyroscope.Text = "X: " + axisValues[0].ToString("0.00") + " Y: " + axisValues[1].ToString("0.00") + " Z: " + axisValues[2].ToString("0.00"); break; case SensorName.HumiditySensor: tbHumidity.Text = HumiditySensor.CalculateHumidityInPercent(e.RawData).ToString("0.00") + "%"; break; case SensorName.Magnetometer: float[] magnetValues = Magnetometer.CalculateCoordinates(e.RawData); tbMagnetometer.Text = "X: " + magnetValues[0].ToString("0.00") + " Y: " + magnetValues[1].ToString("0.00") + " Z: " + magnetValues[2].ToString("0.00"); break; case SensorName.PressureSensor: try { tbPressure.Text = (PressureSensor.CalculatePressure(e.RawData, ps.CalibrationData) / 100).ToString("0.00"); } catch (NullReferenceException) { // in case another(!) setup is executed, so ps is null } break; case SensorName.SimpleKeyService: if (SimpleKeyService.LeftKeyHit(e.RawData)) { tbLeftKey.Text = "hit!"; await Task.Delay(200); tbLeftKey.Text = ""; } else if (SimpleKeyService.RightKeyHit(e.RawData)) { tbRightKey.Text = "hit!"; await Task.Delay(200); tbRightKey.Text = ""; } break; case SensorName.TemperatureSensor: double ambient = IRTemperatureSensor.CalculateAmbientTemperature(e.RawData, TemperatureScale.Celsius); double target = IRTemperatureSensor.CalculateTargetTemperature(e.RawData, ambient, TemperatureScale.Celsius); tbTemperature.Text = ambient.ToString("0.00"); tbTargetTemperature.Text = target.ToString("0.00"); break; } }); }
private async void SetupSensors(bool serviceAsParameter) { pbar.Visibility = Windows.UI.Xaml.Visibility.Visible; ClearSensors(); btnSetup.IsEnabled = false; btnSetupParam.IsEnabled = false; spTestButtons.Visibility = Windows.UI.Xaml.Visibility.Collapsed; Exception ex = null; try { if (serviceAsParameter) { acc = new Accelerometer(); acc.SensorValueChanged += SensorValueChanged; await acc.Initialize((await GattUtils.GetDevicesOfService(acc.SensorServiceUuid))[0]); await acc.EnableSensor(); gyro = new Gyroscope(); gyro.SensorValueChanged += SensorValueChanged; await gyro.Initialize((await GattUtils.GetDevicesOfService(gyro.SensorServiceUuid))[0]); await gyro.EnableSensor(); hum = new HumiditySensor(); hum.SensorValueChanged += SensorValueChanged; await hum.Initialize((await GattUtils.GetDevicesOfService(hum.SensorServiceUuid))[0]); await hum.EnableSensor(); ks = new SimpleKeyService(); ks.SensorValueChanged += SensorValueChanged; await ks.Initialize((await GattUtils.GetDevicesOfService(ks.SensorServiceUuid))[0]); await ks.EnableSensor(); mg = new Magnetometer(); mg.SensorValueChanged += SensorValueChanged; await mg.Initialize((await GattUtils.GetDevicesOfService(mg.SensorServiceUuid))[0]); await mg.EnableSensor(); ps = new PressureSensor(); ps.SensorValueChanged += SensorValueChanged; await ps.Initialize((await GattUtils.GetDevicesOfService(ps.SensorServiceUuid))[0]); await ps.EnableSensor(); tempSen = new IRTemperatureSensor(); tempSen.SensorValueChanged += SensorValueChanged; await tempSen.Initialize((await GattUtils.GetDevicesOfService(tempSen.SensorServiceUuid))[0]); await tempSen.EnableSensor(); spTestButtons.Visibility = Windows.UI.Xaml.Visibility.Visible; } else { acc = new Accelerometer(); acc.SensorValueChanged += SensorValueChanged; await acc.Initialize(); await acc.EnableSensor(); gyro = new Gyroscope(); gyro.SensorValueChanged += SensorValueChanged; await gyro.Initialize(); await gyro.EnableSensor(); hum = new HumiditySensor(); hum.SensorValueChanged += SensorValueChanged; await hum.Initialize(); await hum.EnableSensor(); ks = new SimpleKeyService(); ks.SensorValueChanged += SensorValueChanged; await ks.Initialize(); await ks.EnableSensor(); mg = new Magnetometer(); mg.SensorValueChanged += SensorValueChanged; await mg.Initialize(); await mg.EnableSensor(); ps = new PressureSensor(); ps.SensorValueChanged += SensorValueChanged; await ps.Initialize(); await ps.EnableSensor(); tempSen = new IRTemperatureSensor(); tempSen.SensorValueChanged += SensorValueChanged; await tempSen.Initialize(); await tempSen.EnableSensor(); spTestButtons.Visibility = Windows.UI.Xaml.Visibility.Visible; } } catch (Exception exc) { ex = exc; } if (ex != null) { await new MessageDialog(ex.Message).ShowAsync(); } pbar.Visibility = Windows.UI.Xaml.Visibility.Collapsed; btnSetup.IsEnabled = true; btnSetupParam.IsEnabled = true; }