如何在MFC中使用接近传感器(P-Sensor)类?

时间:2016-07-21 06:24:04

标签: c++ mfc windows-runtime proximitysensor

使用Proximity Sensor类时,我遇到了问题。 最近,我从事接近传感器(P-Sensor)软件开发。 我找到了谷歌的一些相关参考资料,例如Proximity Sensor类(网址:msdn.microsoft.com/en-us/library/windows/apps/windows.devices.sensors.proximitysensor.aspx)和示例代码(网站:github.com/Microsoft/Windows-universal-samples/树/主/样品/ ProximitySensor中/ CPP)。 我试图模仿示例代码,但它没有用。

据我所知,首先需要创建运行时api接口。以下代码是我创建的方式 接口IProximitySensorStatics并且它成功了。输出打印" 0"。 在使用之前,必须由api GetActivationFactory()激活接口IProximitySensorStatics。

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的成员。 然后我使用上面相同的方法。输出打印&#34; GetActivationFactory stProximitySensor失败&#34;。 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()成功获取值,则一切都已完成。 在其他传感器类中,例如Accelerometer,Compass,LightSensor等,总有一种方法GetDefault()。 GetDefault()可能会解决我的问题,但ProximitySensor类没有这个方法。

以下代码是我尝试在ProximitySensor类中使用方法以使其工作。 hr打印&#34; 0&#34;,但输出&#34; stProximitySensor&#34;是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;
}

提前完全感谢。

0 个答案:

没有答案