Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Вместо этого используйте API датчика UWP .
API датчика на основе COM не рекомендуется использовать в новых приложениях. Никаких дополнительных функций или улучшений не планируется, а поддержка будет ограничена.
В этом разделе содержатся сведения, включая пример кода, о том, как использовать функции API датчика. Дополнительные сведения о различных интерфейсах программирования см. в API датчика.
Пример кода в этом разделе использует следующие дополнительные включенные заголовки.
#include <windows.h>
#include <initguid.h>
#include <propkeydef.h>
#include <iostream>
#include <propvarutil.h>
#include <functiondiscoverykeys.h>
#include <assert.h>
Кроме того, необходимо связать эти дополнительные связанные файлы библиотеки: Propsys.lib и PortableDeviceGuids.lib.
В примере кода в этом разделе используются следующие константы для категорий датчиков, типов и полей данных. Эти константы — это пользовательские значения, определенные примером драйвера TimeSensor в комплекте драйверов Windows. Обратите внимание, что, хотя платформа датчика позволяет определять и использовать пользовательские типы, такие как эти, следует использовать определяемые платформой типы по возможности.
// 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
В примере кода в этом разделе используются следующие переменные.
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;
Пример кода в этом разделе использует следующую функцию для выпуска указателей интерфейса COM.
template <class T> void SafeRelease(T **ppT)
{
if (*ppT)
{
(*ppT)->Release();
*ppT = NULL;
}
}
В этом разделе
- получение объекта датчика
- запрос разрешений пользователей
- получение и настройка свойств датчика
- проверка поддерживаемых полей данных датчика
- использование событий API датчика
- получение значений данных датчика
- получение типов векторов
- использование логических датчиков
- создание Light-Aware пользовательских интерфейсов