Как использовать класс датчика приближения (P-Sensor) в MFC?

Я застрял с проблемой при использовании класса Proximity Sensor.
Недавно я занимался разработкой программного обеспечения для датчика приближения (P-Sensor).
Я нашел некоторую относительную ссылку от Google, например Класс датчика приближения (веб-сайт: msdn.microsoft.com/en-us/library/windows/apps/windows.devices.sensors.proximitysensor.aspx) и пример кода (веб-сайт: github.com/Microsoft/Windows-universal-samples/ дерево / мастер / Образцы / бесконтактный датчик / CPP).
Я пытался имитировать пример кода, но он не работал.

Как я знаю, сначала нужно создать интерфейс API времени выполнения. Следующий код, как я создаю
интерфейс IProximitySensorStatics и это удалось. На выходе выводится «0».
Интерфейс IProximitySensorStatics должен быть активирован API-интерфейсом GetActivationFactory () перед использованием.

ComPtr<IProximitySensorStatics> stProximitySensorStatics;
HRESULT hr = GetActivationFactory(HStringReference(RuntimeClass_Windows_Devices_Sensors_ProximitySensor).Get(), &stProximitySensorStatics);
printf("CProximitySensorCtrl::GetActivationFactory stProximitySensorStatics hr = %x", hr);
if (FAILED(hr))
{
printf("GetActivationFactory stProximitySensorStatics failed");
return FALSE;
}

Следующим шагом является создание интерфейса IProximitySensor, потому что API-интерфейс времени выполнения, который я хочу применить, — это GetCurrentReading (), который является членом IProximitySensor.
Тогда я использую тот же метод выше. Выходные данные выдают «Ошибка GetActivationFactory stProximitySensor». Значение HRESULT составляет 80004002.

Если я изменю HStringReference (RuntimeClass_Windows_Devices_Sensors_ProximitySensor) на HStringReference (RuntimeClass_Windows_Devices_Sensors_ProximitySensorReading), значение HRESULT равно 80040154. Я не знаю, как его решить. Список значений HRESULT: https://msdn.microsoft.com/en-us/library/cc704587.aspx

ComPtr<IProximitySensor> stProximitySensor;
hr = GetActivationFactory(HStringReference(RuntimeClass_Windows_Devices_Sensors_ProximitySensor).Get(), &stProximitySensor);
printf("CProximitySensorCtrl::GetActivationFactory stProximitySensor hr = %x", hr);
if (FAILED(hr))
{
printf("GetActivationFactory stProximitySensor failed");
return FALSE;
}

Теперь проблема в том, что мне интересно, как активировать интерфейс IProximitySensor и даже IProximitySensorReading. IProximitySensorReading — это еще один интерфейс, который используется для перехвата вывода метода GetCurrentReading ().

Если GetCurrentReading () удается получить значение, все сделано.
В других классах датчиков, таких как акселерометр, компас, LightSensor и т. Д., Всегда есть метод GetDefault (). GetDefault () может решить мою проблему, но у класса ProximitySensor нет этого метода.

Следующий код состоит в том, что я пытался использовать методы в классе ProximitySensor, чтобы заставить его работать. Hr выводит «0», но вывод «stProximitySensor» равен NULL.

HSTRING m_hsString;
hr = stProximitySensorStatics->GetDeviceSelector(&m_hsString);

hr = stProximitySensorStatics->FromId(m_hsString, &stProximitySensor);
printf("FromId hr = %x", hr);
if (FAILED(hr))
{
printf("FromId failed");
return FALSE;
}
if (stProximitySensor == NULL)
{
printf("FromId stProximitySensor = null failed");
return FALSE;
}

Полностью спасибо заранее.

1

Решение

Задача ещё не решена.

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

Других решений пока нет …

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