Пример #1
0
        /// <summary>
        /// Ambient Light Sensor adjusts the brightness of the display. Less ambient light equates to a dimmer display.
        /// </summary>
        /// <param name="lightSensor"></param>
        /// <param name="e"></param>
        private async void LightSensor_ReadingChanged(LightSensor lightSensor, LightSensorReadingChangedEventArgs e)
        {
            await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                try
                {
                    LightSensorReading lightSensorReading = lightSensor.GetCurrentReading();

                    if (BrightnessOverrideSetting != null && BrightnessOverrideSetting.IsSupported)
                    {
                        const double maximumAllowedBrightness            = 0.15;
                        const double highestLuxValueBeforeFullBrightness = 25.0;

                        double brightness = Math.Min(lightSensorReading.IlluminanceInLux, highestLuxValueBeforeFullBrightness) / highestLuxValueBeforeFullBrightness *maximumAllowedBrightness;

                        if (PreviousDisplayBrightness != brightness)
                        {
                            BrightnessOverrideSetting.SetBrightnessLevel(brightness, DisplayBrightnessOverrideOptions.None);

                            PreviousDisplayBrightness = brightness;
                        }
                    }
                }
                catch (Exception ex)
                {
                    Telemetry.TrackException(nameof(LightSensor_ReadingChanged), ex);
                }
            });
        }
Пример #2
0
        async private void ReadingChanged(LightSensor sender, LightSensorReadingChangedEventArgs args)
        {
            if (setAdaptive && arrLamp.Count != 0)
            {
                uint LIGHT_CUTOFF          = 400;
                LightSensorReading reading = args.Reading;
                if (reading.IlluminanceInLux > LIGHT_CUTOFF)
                {
                    foreach (LampStateConsumer s in arrLamp)
                    {
                        await s.SetBrightnessAsync(0);
                    }
                }
                else
                {
                    // Get a ratio and scale it to the light bulb's range
                    // light is roughly logarithmic from lumens to human perception of brightness
                    //double illum_value = 1 - (Math.Log10(reading.IlluminanceInLux) / 5.0);

                    double illum_value = (LIGHT_CUTOFF - reading.IlluminanceInLux) / LIGHT_CUTOFF;
                    // Round the value to the next highest integer (precision loss is negligible when working
                    // on the order of 4 billion
                    uint rounded_value = (uint)Math.Ceiling(illum_value * uint.MaxValue);
                    foreach (LampStateConsumer s in arrLamp)
                    {
                        await s.SetBrightnessAsync(rounded_value);
                    }
                }
            }
        }
        public void LogDataLightSensor(LightSensorReading reading)
        {
            LoggingFields loggingFields = new LoggingFields();

            loggingFields.AddString("Timestamp", reading.Timestamp.ToString());
            loggingFields.AddDouble("IlluminanceInLux", reading.IlluminanceInLux);
            rootPage.loggingChannelView.LogEvent("LightSensorData", loggingFields);
        }
 /// <summary>
 /// This is the event handler for ReadingChanged events.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 async private void ReadingChanged(object sender, LightSensorReadingChangedEventArgs e)
 {
     await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
     {
         LightSensorReading reading = e.Reading;
         ScenarioOutput_LUX.Text    = String.Format("{0,5:0.00}", reading.IlluminanceInLux);
     });
 }
Пример #5
0
        /// <summary>
        /// This is the dispatcher callback.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private void DisplayCurrentReading(object sender, object args)
        {
            LightSensorReading reading = _sensor.GetCurrentReading();

            if (reading != null)
            {
                ScenarioOutput_LUX.Text = String.Format("{0,5:0.00}", reading.IlluminanceInLux);
            }
        }
Пример #6
0
        private async void lightSensor_ReadingChanged(LightSensor sender, LightSensorReadingChangedEventArgs args)
        {
            await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                LightSensorReading reading = args.Reading;

                illumination.Text = String.Format("{0,2:0.00}", reading.IlluminanceInLux.ToString());
            });
        }
        public double lireMesureDuCapteur()
        {
            double valeurRetour = -1;

            LightSensorReading valeurLue = lightsensor.GetCurrentReading();

            valeurRetour = System.Convert.ToDouble(valeurLue.IlluminanceInLux);

            return(valeurRetour);
        }
Пример #8
0
        public String GetLightSensorDisplayText(LightSensorReading reading)
        {
            if (reading == null)
            {
                return("No Reading Available.");
            }

            return(String.Format("Illuminance(Lux): {0}",
                                 reading.IlluminanceInLux));
        }
Пример #9
0
        private void OnGetLight(object sender, RoutedEventArgs e)
        {
            LightSensor sensor = LightSensor.GetDefault();

            if (sensor != null)
            {
                LightSensorReading reading = sensor.GetCurrentReading();
                this.DefaultViewModel["LightResult"] = string.Format("Illuminance: {0} Lux", reading.IlluminanceInLux);
            }
            else
            {
                this.DefaultViewModel["LightResult"] = "No light sensor found";
            }
        }
Пример #10
0
        public void OnGetLight()
        {
            LightSensor sensor = LightSensor.GetDefault();

            if (sensor != null)
            {
                LightSensorReading reading = sensor.GetCurrentReading();
                Illuminance = $"Illuminance: {reading?.IlluminanceInLux}";
            }
            else
            {
                Illuminance = "Light sensor not found";
            }
        }
Пример #11
0
        public void OnGetLightReport()
        {
            LightSensor sensor = LightSensor.GetDefault();

            if (sensor != null)
            {
                sensor.ReportInterval  = Math.Max(sensor.MinimumReportInterval, 1000);
                sensor.ReadingChanged += async(s, e) =>
                {
                    LightSensorReading reading = e.Reading;

                    await CoreApplication.MainView.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () =>
                    {
                        IlluminanceReport = $"{reading.IlluminanceInLux} {reading.Timestamp:T}";
                    });
                };
            }
        }
        private async void LightSensorReadingChanged(object sender, LightSensorReadingChangedEventArgs e)
        {
            await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                LightSensorReading reading = e.Reading;
                object x, y;
                reading.Properties.TryGetValue("{C458F8A7-4AE8-4777-9607-2E9BDD65110A} 62", out x);
                reading.Properties.TryGetValue("{C458F8A7-4AE8-4777-9607-2E9BDD65110A} 63", out y);

                double chromaticity_x = -1, chromaticity_y = -1;
                try
                {
                    chromaticity_x = double.Parse(x.ToString());
                    chromaticity_y = double.Parse(y.ToString());
                }
                catch { }

                textblockLux.Text           = reading.IlluminanceInLux.ToString();
                textblockChromaticityx.Text = chromaticity_x.ToString();
                textblockChromaticityy.Text = chromaticity_y.ToString();
            });
        }
Пример #13
0
 internal LightSensorReadingChangedEventArgs(LightSensorReading reading) =>
        private async void ReadingChangedAsync(object sender, LightSensorReadingChangedEventArgs e)
        {
            await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                LightSensorReading reading = e.Reading;
                var lux = reading.IlluminanceInLux;
                if (lux < MIN_LUX)
                {
                    if (state == 0)
                    {
                        state = 1;
                        span  = 0;
                    }
                    if (span < 100)
                    {
                        span++;
                    }
                }
                else
                {
                    if (state > 0)
                    {
                        if (state == 1)
                        {
                            if (span <= 10 && span >= 5)
                            {
                                txtOutput.Text += "·";
                                readed          = false;
                            }
                            else if (span > 10 && span <= 50)
                            {
                                txtOutput.Text += "-";
                                readed          = false;
                            }
                        }
                        state = 0;
                        span  = 0;
                    }
                    span++;
                    if (span > 10 && !readed)
                    {
                        //Letter recognition
                        //TODO: Binary search tree can be used to improve efficiency.
                        switch (txtOutput.Text)
                        {
                        case "·-":
                            txtMsg.Text += "A";
                            break;

                        case "-···":
                            txtMsg.Text += "B";
                            break;

                        case "-·-·":
                            txtMsg.Text += "C";
                            break;

                        case "-··":
                            txtMsg.Text += "D";
                            break;

                        case "·":
                            txtMsg.Text += "E";
                            break;

                        case "··-·":
                            txtMsg.Text += "F";
                            break;

                        case "--·":
                            txtMsg.Text += "G";
                            break;

                        case "····":
                            txtMsg.Text += "H";
                            break;

                        case "··":
                            txtMsg.Text += "I";
                            break;

                        case "·---":
                            txtMsg.Text += "J";
                            break;

                        case "-·-":
                            txtMsg.Text += "K";
                            break;

                        case "·-··":
                            txtMsg.Text += "L";
                            break;

                        case "--":
                            txtMsg.Text += "M";
                            break;

                        case "-·":
                            txtMsg.Text += "N";
                            break;

                        case "---":
                            txtMsg.Text += "O";
                            break;

                        case "·--·":
                            txtMsg.Text += "P";
                            break;

                        case "--·-":
                            txtMsg.Text += "Q";
                            break;

                        case "·-·":
                            txtMsg.Text += "R";
                            break;

                        case "···":
                            txtMsg.Text += "S";
                            break;

                        case "-":
                            txtMsg.Text += "T";
                            break;

                        case "··-":
                            txtMsg.Text += "U";
                            break;

                        case "···-":
                            txtMsg.Text += "V";
                            break;

                        case "·--":
                            txtMsg.Text += "W";
                            break;

                        case "-··-":
                            txtMsg.Text += "X";
                            break;

                        case "-·--":
                            txtMsg.Text += "Y";
                            break;

                        case "--··":
                            txtMsg.Text += "Z";
                            break;
                        }
                        txtOutput.Text = "";
                        readed         = true;
                    }

                    if (span == 20)
                    {
                        //Next word
                        txtMsg.Text += " ";
                    }
                    else if (span == 100)
                    {
                        //Refresh
                        txtMsg.Text = "";
                        span        = 0;
                    }
                }
                string des   = lux > MIN_LUX ? "High" : "Low";
                txtData.Text = $"{des} {state} {span}";
            });
        }