Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Importante
Use a API do sensor UWP em vez disso.
A API do sensor baseada em COM foi preterida e não deve ser usada em novos aplicativos. Não estão planeados quaisquer recursos ou melhorias adicionais e o suporte será limitado.
Para recuperar um objeto de sensor, use o ISensorManager interface. Você pode pensar nessa interface como a interface raiz para a API do Sensor. Para usar ISensorManager, você deve primeiro chamar o método COM CoCreateInstance.
O código de exemplo a seguir cria uma instância do gerenciador de sensores.
// Create the sensor manager.
hr = CoCreateInstance(CLSID_SensorManager,
NULL, CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&pSensorManager));
if(hr == HRESULT_FROM_WIN32(ERROR_ACCESS_DISABLED_BY_POLICY))
{
// Unable to retrieve sensor manager due to
// group policy settings. Alert the user.
}
Depois de obter com sucesso um ponteiro para ISensorManager , poderá recuperar sensores por categoria, tipo ou ID. Se você recuperar sensores por tipo ou categoria, receberá um ponteiro para uma interfaceISensorCollectionque contém todos os sensores disponíveis que pertencem à categoria ou tipo solicitado. Se recuperar um sensor pelo seu ID, receberá um ponteiro para uma interface ISensor que representa o sensor exclusivo solicitado.
O código de exemplo a seguir recupera uma coleção de sensores que pertencem à categoria chamada SAMPLE_SENSOR_CATEGORY_DATE_TIME. Em seguida, o código recupera o primeiro sensor da coleção pelo seu índice.
// Get the sensor collection.
hr = pSensorManager->GetSensorsByCategory(SAMPLE_SENSOR_CATEGORY_DATE_TIME, &pSensorColl);
if(SUCCEEDED(hr))
{
ULONG ulCount = 0;
// Verify that the collection contains
// at least one sensor.
hr = pSensorColl->GetCount(&ulCount);
if(SUCCEEDED(hr))
{
if(ulCount < 1)
{
wprintf_s(L"\nNo sensors of the requested category.\n");
hr = E_UNEXPECTED;
}
}
}
if(SUCCEEDED(hr))
{
// Get the first available sensor.
hr = pSensorColl->GetAt(0, &pSensor);
}
Observe que você pode recuperar todos os sensores disponíveis usando SENSOR_CATEGORY_ALL.
Da mesma forma, você pode recuperar sensores de um tipo específico.
O código de exemplo a seguir recupera uma coleção de sensores do tipo chamado SAMPLE_SENSOR_TYPE_TIME. Em seguida, o código recupera o primeiro sensor da coleção pelo seu índice.
// Get the sensor collection.
hr = pSensorManager->GetSensorsByType(SAMPLE_SENSOR_TYPE_TIME, &pSensorColl);
if(SUCCEEDED(hr))
{
ULONG ulCount = 0;
// Verify that the collection contains
// at least one sensor.
hr = pSensorColl->GetCount(&ulCount);
if(SUCCEEDED(hr))
{
if(ulCount < 1)
{
wprintf_s(L"\nNo sensors of the requested type.\n");
hr = E_UNEXPECTED;
}
}
}
if(SUCCEEDED(hr))
{
// Get the first available sensor.
hr = pSensorColl->GetAt(0, &pSensor);
}
Para recuperar um sensor pelo seu ID, você deve saber o ID exclusivo do sensor. Os sensores geralmente geram esse ID quando conectados pela primeira vez para permitir que você identifique vários sensores da mesma marca e modelo. Isso significa que você provavelmente não saberá o ID do sensor com antecedência. No entanto, se você tiver armazenado uma cópia de um ID de sensor específico que você recuperou anteriormente, por exemplo, chamando ISensor::GetID, convém recuperar o mesmo sensor novamente.
O código de exemplo a seguir mostra como recuperar um sensor usando sua ID.
ISensor* pSensor = NULL;
// Get the sensor collection.
hr = pSensorManager->GetSensorByID(SAMPLE_SENSOR_TIME_ID, &pSensor);
Você também pode recuperar sensores quando eles estiverem disponíveis recebendo um evento do gerenciador de sensores. Para obter mais informações, consulte ISensorManager::SetEventSink.