2016-09-11 2 views
1

私は、バンドと接続されたスマートフォンからのセンサーデータの読み取りが同期される必要があるプロジェクトに取り組んでいます。したがって、私は両方のデバイスのクロックの違いを見つけることができる必要があります。イベントにはタイムスタンプが含まれていますが、これは同期のために使用することができますが、要求に応じてに直接送信するようにバンドを強制する方法が必要です。リクエスト送信のSDKを使用してMicrosoft Bandと時計を同期する方法はありますか?

  1. スマートフォンローカル時間(イベントリスナーを登録してFE)バンドからの読み取りセンサを要求し、ノートt1
  2. バンドが要求を受信し、直接そのローカルの送信、それに応答タイムスタンプs1
  3. スマートフォンは現地時間t2で応答を受信します。今

、スマートフォンが接続遅延d = (t2 - t1)/2を近似することができ、およそバンドと同期するs1 + dにそのローカル時刻を設定することができます。このプロトコルは、バンドが妥当な時間内に応答する場合にのみ正しく動作します。

getSensorManager().registerXXXEventListener()はこのように動作するか、レスポンスを遅延させる可能性があります(エネルギーを節約するため)?それが遅れを導入する可能性がある場合、バンドの現在の時間を取得する他の方法がありますか?

答えて

0

センサをつかんで、適切なタイムスタンプをフックしますか?私と一緒にバンドを持っていないが、ISensorReading :: Timestampはデバイスから来ていると思う?定義されているように

、オブジェクトブラウザから引き出さ...

namespace Microsoft.Band.Sensors 
{ 
public class BandSensorReadingEventArgs<T> : EventArgs where T : IBandSensorReading 
{ 
    public BandSensorReadingEventArgs(T reading); 

    public T SensorReading { get; } 
} 
} 

System.DateTimeOffset タイムスタンプ {取得...これが動作するかどうか、私たちは知ってみましょう。 } Microsoft.Band.Sensors.IBandSensorReadingのメンバー

private async void HeartRate_ReadingChanged(object sender, BandSensorReadingEventArgs<IBandHeartRateReading> e) 
    { 
     await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, 
     () => 
     { 
      TextBlock_HeartBeatStatus.Text = e.SensorReading.HeartRate.ToString(); 
      DateTimeOffset timestamp = e.SensorReading.Timestamp; 
     }); 
    } 
    private async void Accelerometer_ReadingChanged(object sender, BandSensorReadingEventArgs<IBandAccelerometerReading> e) 
    { 
     await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, 
     () => 
     { 
      string status = 
      $"x:{e.SensorReading.AccelerationX.ToString("F1")} y:{e.SensorReading.AccelerationY.ToString("F1")} z:{e.SensorReading.AccelerationZ.ToString("F1")}";  
      TextBlock_AccelStatus.Text = status; 
     }); 
     DateTimeOffset timestamp = e.SensorReading.Timestamp(); 
    } 
+1

はい、センサーの読み取り値にはタイムスタンプが含まれていますが、バンドの時計の値が同じ時点でのスマートフォンの時計と異なる場合があります。そのため、スマートフォンからのセンサーの読み取り値とバンドのセンサー読み取り値を一致させることは困難です。 したがって、クロックを同期させる方法では、一致したデータをより正確にすることができます。私の最初の質問で説明したプロトコルは基本的に(S)NTPです。 –

+0

私は「バンドの現在の時間を得るための他の方法があるのか​​」と話していました。この時点でリモートから時間を設定したり、ウェブと同期させることはできません。 –

0

自動同期があるようです。他の時間にバンドのクロックを設定し、SDKのタイムスタンプを印刷すると、バンド時間ではなく、電話時間に対応することがわかります。 私は、電話とバンドの時間同期は必要ないと思います。

+0

私は、SDKが単にタイムスタンプとして電話での受信時間を報告すると思うが、SDKはクローズソースなので、これを確認する良い方法はない。 –

関連する問題