Windows phone 8 读数已更改WP8上从未调用加速计 我试图在Windows::设备::在Windows电话8上的传感器名称空间使用C++加速度表接口。这个代码非常类似于我所做的C项目,但是我不能像我可以用C代码那样来触发C++事件。 我的C++代码是一个C++组件的C++项目,C++组件只是打开了加速读设备,然后在数据准备好的时候尝试设置一个事件来触发: AccelerometerWrapper::AccelerometerWrapper() { Accelerometer^ acc = Accelerometer::GetDefault(); accReading = acc->ReadingChanged::add( ref new TypedEventHandler<Accelerometer^, AccelerometerReadingChangedEventArgs^>(this, &AccelerometerWrapper::ReadingChanged)); } void AccelerometerWrapper::ReadingChanged(Accelerometer^ sender, AccelerometerReadingChangedEventArgs^ e) { ... } AccelerometerRapper::AccelerometerRapper(){ 加速计^acc=加速计::GetDefault(); Accurading=acc->ReadingChanged::add(参考新类型deventhandler,但我无法实际测试,因为这是一个通用WinRT(例如Windows 8,而不是Windows Phone 8)示例,并且我的计算机没有加速计。所有编译和运行的内容都不会触发事件

Windows phone 8 读数已更改WP8上从未调用加速计 我试图在Windows::设备::在Windows电话8上的传感器名称空间使用C++加速度表接口。这个代码非常类似于我所做的C项目,但是我不能像我可以用C代码那样来触发C++事件。 我的C++代码是一个C++组件的C++项目,C++组件只是打开了加速读设备,然后在数据准备好的时候尝试设置一个事件来触发: AccelerometerWrapper::AccelerometerWrapper() { Accelerometer^ acc = Accelerometer::GetDefault(); accReading = acc->ReadingChanged::add( ref new TypedEventHandler<Accelerometer^, AccelerometerReadingChangedEventArgs^>(this, &AccelerometerWrapper::ReadingChanged)); } void AccelerometerWrapper::ReadingChanged(Accelerometer^ sender, AccelerometerReadingChangedEventArgs^ e) { ... } AccelerometerRapper::AccelerometerRapper(){ 加速计^acc=加速计::GetDefault(); Accurading=acc->ReadingChanged::add(参考新类型deventhandler,但我无法实际测试,因为这是一个通用WinRT(例如Windows 8,而不是Windows Phone 8)示例,并且我的计算机没有加速计。所有编译和运行的内容都不会触发事件,windows-phone-8,c++-cx,Windows Phone 8,C++ Cx,编辑:我已经成功运行了一个测试,以验证我是否可以手动调用acc->GetCurrentReading() 谢谢! < P>我不是C++专家,但是新的加速度传感器使用C语言在我的机器上工作。 运行该代码段时,我们可以看到以下预期输出: 只是猜测C++,你是否需要缓存加速度计实例而不是让它超出范围?< /P> private void MainPage_Loaded(object sender, RoutedEventArgs e) { var accelerometer = Accele

编辑:我已经成功运行了一个测试,以验证我是否可以手动调用
acc->GetCurrentReading()


谢谢!

< P>我不是C++专家,但是新的加速度传感器使用C语言在我的机器上工作。 运行该代码段时,我们可以看到以下预期输出:

只是猜测C++,你是否需要缓存加速度计实例而不是让它超出范围?< /P>

private void MainPage_Loaded(object sender, RoutedEventArgs e)
{
    var accelerometer = Accelerometer.GetDefault();
    if (accelerometer != null)
    {
        accelerometer.ReadingChanged += accelerometer_ReadingChanged;
    }
}

void accelerometer_ReadingChanged(Accelerometer sender, AccelerometerReadingChangedEventArgs args)
{
    Debug.WriteLine(args.Reading.AccelerationX + ", " + args.Reading.AccelerationY + "," + args.Reading.AccelerationZ);
}