Windows Sensor API C ++ COM интеграция датчика ориентации не обновляется регулярно в Windows 10

Обзор:

В настоящее время мы создаем приложение, которое взаимодействует с API-интерфейсом Windows Sensor с помощью SensorManager COM. Это C ++, не-UWP проект. В частности, мы интегрируем с агрегированным датчиком ориентации (SENSOR_TYPE_AGGREGATED_DEVICE_ORIENTATION) на планшете Surface. Это прекрасно работает в Windows 8. Мы недавно обновили наши машины до Windows 10 и теперь испытываем чрезвычайно медленные интервалы передачи данных от датчика ориентации. Один отчет каждые ~ 500-1500 мс, независимо от настройки SENSOR_PROPERTY_MIN_REPORT_INTERVAL и т. Д. Кто-нибудь наблюдал такое поведение в Windows 10 или у вас есть причина / решение этой проблемы? Спасибо!

Подробности:

Это проект Visual Studio 2015, C ++ с использованием Cinder. Наш сенсорный менеджер инициализируется следующим образом:

hr = ::CoCreateInstance(
CLSID_SensorManager,
nullptr,
CLSCTX_INPROC_SERVER,
IID_PPV_ARGS( &mSensorManager ) );

После получения набора соответствующих датчиков и проверки мы сохраняем наш датчик, а затем устанавливаем приемник событий. Код ниже:

STDMETHODIMP OrientationSensor::OnDataUpdated( ISensor *sensor, ISensorDataReport *report )
{
HRESULT hr;

PROPVARIANT pvQuat;
PropVariantInit( &pvQuat );
hr = report->GetSensorValue( SENSOR_DATA_TYPE_QUATERNION, &pvQuat );

if( SUCCEEDED( hr ) ) {

if( pvQuat.vt == ( VT_VECTOR | VT_UI1 ) ) {
float* pElement = (float*) pvQuat.caub.pElems;

// SET orientation quaternion
mOrientation = ci::quat( pElement[3], pElement[0], pElement[1], pElement[2] );
}
}

// CLEAR prop variant
PropVariantClear( &pvQuat );

return hr;
}

AddRef (), Release () и QueryInterface () реализованы так, как определено во всех руководствах по разработке.

Мы делать получать правильные данные, просто с медленными и длинными интервалами, независимо от настроек. Мы пытаемся понять, почему это так, и почему мы видим это только в Windows 10.

Чтобы подтвердить, что датчик был номинальным, мы собрали образец ориентации UWP. Действительно, это показало быстрые и правильные показания датчика ориентации. Мы специально ищем решение, которое позволит нам взаимодействовать с датчиком ориентации через COM API менеджера датчиков.

1

Решение

Я видел такое же поведение датчика ускорения на моем SurfacePro,
Я явно установил свойство чувствительности датчиков, и это решило проблему.

0

Другие решения


По вопросам рекламы [email protected]