Exemple #1
0
        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;
                }
            });
        }
Exemple #2
0
        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;
        }