我正在尝试在 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;
with system.invalidcastexception:指定的强制转换无效。我没有看到任何其他细节。
当我使用ambientLightSensors 运行相同的代码时,它工作正常。
有什么建议么?
请帮忙!!!注意:我使用的是桌面应用程序,所以我不能使用 windows8 传感器 API。当然,我的设备上有加速度计(Microsoft Surface pro x64);
谢谢!