1

加速度計の変更を表示する Windows8 デスクトップ アプリケーションで c# で簡単なアプリケーションを作成しようとしています。私は windows7.SensorsAndLocation dll を使用しており、次のコードを記述しています。

private static Accelerometer3D _accelerometer3D;

    private static Accelerometer3DReport _accelerometer3DReport;

    static void Main(string[] args)
    {
        Sensor[] accelerometers = SensorManager.GetSensorsByType(SensorTypes.Accelerometer3d);

        if (accelerometers.Length > 0)
        {
            _accelerometer3D = (Accelerometer3D)accelerometers[0];
            _accelerometer3D.DataUpdated += _accelerometer3D_DataUpdated;
        }
        Console.ReadLine();
    }

    static void _accelerometer3D_DataUpdated(Sensor sensor, SensorDataReport dataReport)
    {
        _accelerometer3DReport = dataReport as Accelerometer3DReport;
         float f = _accelerometer3DReport.AxisX_G;
    }

このコードを実行してデータが更新されると、_accelerometer3D_DataUpdated 関数が実行されますが、次の行でクラッシュしました。

float f = _accelerometer3DReport.AxisX_G;

system.invalidcastexception: 指定されたキャストが無効です。他の詳細は見ていません。

ambientLightSensors で同じコードを実行すると、正常に動作します。

助言がありますか?

助けてください!!!注: デスクトップ アプリケーションを使用しているため、windows8 センサー API を使用できません。そしてもちろん、デバイス (Microsoft Surface Pro x64) には加速度計があります。

ありがとう!

4

1 に答える 1