2015-05-12 3 views
0

Я использую Microsoft Band разработки на Windows Phone 8.1. Попытка выяснить его полную способность УФ-датчика. Я нашел несколько примеров, которые находят уровень УФ. Они показывают, что перечисление может быть использован:Microsoft Band Ультрачувствительный датчик данных незначителен

namespace Microsoft.Band.Sensors 
{ 
    public enum UVIndexLevel 
    { 
    None = 0, 
    Low = 1, 
    Medium = 2, 
    High = 3, 
    VeryHigh = 4, 
    } 
} 

бы также хотел бы знать, что масштаб этих перечислений. Как я знаю, есть уровни от 0 до 11+ пользовательского интерфейса. Какие диапазоны перечислены?

Я в основном используя строку кода:

{ 
    bandClient.SensorManager.UV.ReadingChanged += Ultraviolet_ReadingChanged; 
    await bandClient.SensorManager.UV.StartReadingsAsync(); 

    *Later on code* 

    await bandClient.SensorManager.UV.StopReadingsAsync(); 
    bandClient.SensorManager.UV.ReadingChanged -= Ultraviolet_ReadingChanged; 
    } 

Метод асинхронной:

async void Ultraviolet_ReadingChanged(object sender, BandSensorReadingEventArgs<IBandUVReading> e) 
     { 
      IBandUVReading ultra = e.SensorReading; 
      UVIndexLevel potatoUV = ultra.IndexLevel; 
     } 

Но по какой-то причине, я не получаю индексы большую часть времени , Иногда я получаю показания от 8 до 10 миллионов (или тысяч) при прямом солнечном свете. Значения находятся в «int» (хотя иногда дает перечисления). Мне интересно, как я могу его измерить. Кроме того, именно то, что УФ читает? Я знаю, что существует много видов УФ-облучения. Но как я могу использовать эти данные? Если это диапазон, то, возможно, я могу поместить значение диапазона, но мне нужно как-то опробовать его, какой УФ-индекс у него есть и передать эту информацию пользователю. И используйте индекс в последующих вычислениях.

ТАКЖЕ ... Я попал на ошибку. При тестировании УФ, когда я стоял в прямом свете, показания не показывались. Только когда я перешел на другой уровень УФ-излучения, он изменился (но никогда не возвращался к первому). Но похоже, что первое чтение либо не изменяется (как метод «readchanged»), либо является местом по умолчанию. Как бы то ни было. Есть ли способ вызывать чтение при нажатии кнопки?

Если нужно, я могу найти примеры, которые я использовал, для глубины кода кода. Но большинство из них здесь.

ответ

0

Этот датчик немного отличается от других. Он требует от пользователя выполнить действие для получения данных, а затем данные могут быть собраны. Вот код, который работает на WP8.1 с Band.

DateTime start; 

    private async void Button_Click(object sender, RoutedEventArgs e) 
    { 
     try 
     { 
      this.viewModel.StatusMessage = "Connecting to Band"; 
      // Get the list of Microsoft Bands paired to the phone. 
      IBandInfo[] pairedBands = await BandClientManager.Instance.GetBandsAsync(); 
      if (pairedBands.Length < 1) 
      { 
       this.viewModel.StatusMessage = "This sample app requires a Microsoft Band paired to your phone. Also make sure that you have the latest firmware installed on your Band, as provided by the latest Microsoft Health app."; 
       return; 
      } 

      // Connect to Microsoft Band. 
      using (IBandClient bandClient = await BandClientManager.Instance.ConnectAsync(pairedBands[0])) 
      { 
       start = DateTime.Now; 
       this.viewModel.StatusMessage = "Reading ultraviolet sensor"; 
       // Subscribe to Ultraviolet data. 
       bandClient.SensorManager.UV.ReadingChanged += UV_ReadingChanged; 
       await bandClient.SensorManager.UV.StartReadingsAsync(); 

       // Receive Accelerometer data for a while. 
       await Task.Delay(TimeSpan.FromMinutes(5)); 
       await bandClient.SensorManager.UV.StopReadingsAsync(); 
       bandClient.SensorManager.UV.ReadingChanged -= UV_ReadingChanged; 
      } 
      this.viewModel.StatusMessage = "Done"; 
     } 
     catch (Exception ex) 
     { 
      this.viewModel.StatusMessage = ex.ToString(); 
     } 
    } 

    void UV_ReadingChanged(object sender, Microsoft.Band.Sensors.BandSensorReadingEventArgs<Microsoft.Band.Sensors.IBandUVReading> e) 
    { 
     var span = (DateTime.Now - start).TotalSeconds; 
     IBandUVReading ultra = e.SensorReading; 
     string text = string.Format("Ultraviolet = {0}\nTime Stamp = {1}\nTime Span = {2}\n", ultra.IndexLevel, ultra.Timestamp, span); 
     Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() => { this.viewModel.StatusMessage = text; }).AsTask(); 
     start = DateTime.Now; 
    } 
+0

Этот код в основном такой же, как у меня. Он дает «Нет» в строке, когда в помещении, что правильно. Но на улице у меня были облака, и в нем говорилось что-то около 196 000 +. – GanDuumar

1

Новый SDK диапазона будет доступен в ближайшее время и будет исправлен неверный возврат данных УФ-датчика. Оставайтесь с нами!

+0

должен быть комментарий? – Robert

+0

yes ... Извините, что начал использовать stackoverflow и еще не знаком с любыми соглашениями. –

Смежные вопросы