Guia de Programação da API do Sensor
Esta seção fornece informações, incluindo código de exemplo, sobre como usar os recursos da API do Sensor. Para obter informações em segundo plano sobre as várias interfaces de programação, consulte Sobre a API do sensor.
O código de exemplo nesta seção usa os seguintes cabeçalhos incluídos adicionais.
#include <windows.h>
#include <initguid.h>
#include <propkeydef.h>
#include <iostream>
#include <propvarutil.h>
#include <functiondiscoverykeys.h>
#include <assert.h>
Você também deve vincular a esses arquivos de biblioteca associados adicionais: Propsys.lib e PortableDeviceGuids.lib.
O código de exemplo nesta seção usa as seguintes constantes para categorias de sensor, tipos e campos de dados. Essas constantes são valores personalizados definidos pelo exemplo de driver TimeSensor no Kit de Driver do Windows. Observe que, embora a plataforma Sensor habilite a definição e o uso de tipos personalizados como esses, você deve usar tipos definidos pela plataforma sempre que possível.
// Define an object ID.
// {0D77BEE3-7169-42bf-8379-28F9A9B59A57}
DEFINE_GUID(SAMPLE_SENSOR_TIME_ID,
0xd77bee3, 0x7169, 0x42bf, 0x83, 0x79, 0x28, 0xf9, 0xa9, 0xb5, 0x9a, 0x57);
// Define a custom category.
// {062A5C3B-44C1-4ad1-8EFC-0F65B2E4AD48}
DEFINE_GUID(SAMPLE_SENSOR_CATEGORY_DATE_TIME,
0x62a5c3b, 0x44c1, 0x4ad1, 0x8e, 0xfc, 0xf, 0x65, 0xb2, 0xe4, 0xad, 0x48);
// Define a custom type.
// {5F199A84-409F-4e35-B2DD-F9C79F5318A0}
DEFINE_GUID(SAMPLE_SENSOR_TYPE_TIME,
0x5f199a84, 0x409f, 0x4e35, 0xb2, 0xdd, 0xf9, 0xc7, 0x9f, 0x53, 0x18, 0xa0);
// Time sensor fields.
// Because these are related, each field uses the same GUID, but changes the PID.
// {340946F2-9A77-42b0-8176-57D4DF00E5CA}
DEFINE_PROPERTYKEY(SAMPLE_SENSOR_DATA_TYPE_HOUR,
0x340946f2, 0x9a77, 0x42b0, 0x81, 0x76, 0x57, 0xd4, 0xdf, 0x0, 0xe5, 0xca, PID_FIRST_USABLE); // PID = 2
DEFINE_PROPERTYKEY(SAMPLE_SENSOR_DATA_TYPE_MINUTE,
0x340946f2, 0x9a77, 0x42b0, 0x81, 0x76, 0x57, 0xd4, 0xdf, 0x0, 0xe5, 0xca, PID_FIRST_USABLE + 1); // PID = 3
DEFINE_PROPERTYKEY(SAMPLE_SENSOR_DATA_TYPE_SECOND,
0x340946f2, 0x9a77, 0x42b0, 0x81, 0x76, 0x57, 0xd4, 0xdf, 0x0, 0xe5, 0xca, PID_FIRST_USABLE + 2); // PID = 4
O código de exemplo nesta seção usa as variáveis a seguir.
HRESULT hr = S_OK;
// Sensor interface pointers
ISensorManager* pSensorManager = NULL;
ISensorCollection* pSensorColl = NULL;
ISensor* pSensor = NULL;
ISensorDataReport* pReport = NULL;
// Time sensor data field variables
ULONG ulHour, ulMinute, ulSecond = 0;
O código de exemplo nesta seção usa a função a seguir para liberar ponteiros de interface COM.
template <class T> void SafeRelease(T **ppT)
{
if (*ppT)
{
(*ppT)->Release();
*ppT = NULL;
}
}
Nesta seção
- Recuperando um objeto sensor
- Solicitando permissões de usuário
- Recuperando e definindo propriedades do sensor
- Verificando campos de dados do sensor com suporte
- Usando eventos de API do sensor
- Recuperando valores de dados do sensor
- Recuperando tipos de vetor
- Usando sensores lógicos
- Criando interfaces de usuário Light-Aware
Tópicos relacionados