概要
ジャイロスコープは、デバイスの各軸周りの回転速度を取得出来るセンサーデバイスです。
名前空間:Microsoft.Devices.Sensors
System.Object
+--Microsoft.Devices.Sensors.SensorBase<GyroscopeReading>
+--Microsoft.Devices.Sensors.Gyroscope
Tips
ジャイロスコープセンサーで角速度を取得する
ジャイロスコープが搭載されているデバイスかどうかを予め調べます。
Gyroscope.IsSupportedメソッドでジャイロスコープがサポートされているデバイスかどうかを判定する事が可能です。
Gyroscope gyro; private void btnGyroscope_Click(object sender, RoutedEventArgs e) { // 実行する端末でジャイロスコープが利用可能か調べる if (!Gyroscope.IsSupported) { throw new NotSupportedException("Not Supported device"); return; } // センサーのオブジェクト生成 gyro = new Gyroscope(); // センサーの値を更新の間隔を100ミリ秒に設定 gyro.TimeBetweenUpdates = TimeSpan.FromMilliseconds(100); // CurrentValueChangedイベントのハンドラを設定 gyro.CurrentValueChanged += gyro_CurrentValueChanged; // ジャイロスコープのデータ取得を開始 gyro.Start(); }
ジャイロスコープの角速度を取得する
データの取得が開始されると、gyro_CurrentValueChangedメソッドに角速度の値が通知されます。
void gyro_CurrentValueChanged(object sender, SensorReadingEventArgs<GyroscopeReading> e) { // UI要素を変更したいのでUIスレッド上で実行させる Deployment.Current.Dispatcher.BeginInvoke(() => { // ジャイロスコープの値を表示する var v = e.SensorReading.RotationRate; labelX.Text = string.Format("{0:0.0000}", v.X); labelY.Text = string.Format("{0:0.0000}", v.Y); labelZ.Text = string.Format("{0:0.0000}", v.Z); }); }