2015-07-04 12 views
5

Kalp atış hızını Microsoft Band'tan almaya çalışıyorum. Değer değiştiğinde güncellenmelidir. Bu değeri TextBlock'da görüntülemeye çalışıyorum. Öncelikle bu gibi onun HeartRate.ReadingChanged yöntemi IBandClient bir örneğini oluşturmak ve ayarlayın:Microsoft Bandından Kalp Atışı Al

bandClient.SensorManager.HeartRate.ReadingChanged += HeartRate_ReadingChanged; 

Sonra böyle değerini güncellemek için deneyin:

private void HeartRate_ReadingChanged(object sender, Microsoft.Band.Sensors.BandSensorReadingEventArgs<Microsoft.Band.Sensors.IBandHeartRateReading> e) 
{ 
    HeartRate = e.SensorReading.HeartRate; 
} 

heartrate şöyle bir int kümesidir:

TextBlock metni daha sonra HeartRate'a bağlanır. Ancak, HeartRate:

Ayarlamaya çalışırken bu hatayı almaya devam ediyorum Uygulama, farklı bir iş parçacığı için sıralı bir arabirim olarak adlandırıldı. (HRESULT özel durum: 0x8001010E (RPC_E_WRONG_THREAD))

Benim tahminim hala önce çağrısından ayarlanırken HeartRate kurmaya çalışıyor olması.

+0

SensorManager, olayı başka bir iş parçacığından gönderiyor mu, biliyor musunuz? Bu, TextBlock metninizi, yapamayacağınız UI iş parçacığından farklı bir iş parçacığından ayarladığınız anlamına gelir (bu nedenle hata). – y2bd

cevap

3

Bunu kullanmaya çalışın ve int değişkeninizi hala istiyorsanız, nasıl çalıştığını görün ve bir metin bloğunda görüntülerken dizeye geri dönüştürün.

await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, 
       () => 
       { 
        Textblock.Text = e.SensorReading.HeartRate.ToString()) 
       }).AsTask();