/// <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); } }); }
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); }); }
/// <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); } }
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); }
public String GetLightSensorDisplayText(LightSensorReading reading) { if (reading == null) { return("No Reading Available."); } return(String.Format("Illuminance(Lux): {0}", reading.IlluminanceInLux)); }
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"; } }
public void OnGetLight() { LightSensor sensor = LightSensor.GetDefault(); if (sensor != null) { LightSensorReading reading = sensor.GetCurrentReading(); Illuminance = $"Illuminance: {reading?.IlluminanceInLux}"; } else { Illuminance = "Light sensor not found"; } }
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(); }); }
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}"; }); }