Поделиться через


Сведения о константах датчика

Датчик Windows и платформа расположения используют константы различными способами. В этом разделе описываются эти константы и их использование.

Платформа определяет различные константы, которые можно использовать в коде драйвера датчика. Вы также можете определить собственные константы. Определения констант, определяемых платформой, можно найти в файлах Sensors.h и Sensorsdef.h.

Организация датчиков и данных

Платформа упорядочивает датчики и их данные следующими способами:

  • Категории представляют широкие классы устройств датчиков. Категории позволяют группировать датчики, которые, скорее всего, предоставляют похожие типы информации или каким-либо образом связаны. Каждая категория представлена константой GUID. Например, датчики, сообщающие координаты широты и долготы, относятся к категории датчиков местоположения, которая представлена константой SENSOR_CATEGORY_LOCATION .

  • Типы датчиков представляют определенные типы датчиков. Каждый тип датчика относится к определенной категории. Два датчика разных типов могут относиться к одной или двум разным категориям. Каждый тип датчика представлен константой GUID. Например, датчик системы глобального позиционирования идентифицируется константой SENSOR_TYPE_LOCATION_GPS, а датчик, предоставляющий текущее расположение с помощью IP-адреса в Интернете, будет определяться константой SENSOR_TYPE_LOCATION_LOOKUP. Однако оба датчика будут относиться к категории датчиков расположения.

  • Типы данных представляют определенные виды информации, которую может предоставить датчик. Типы данных датчиков могут содержать фактическое значение измерения, например высоту, сведения об единицах, используемых для выражения данных, например метров, и опорные точки для данных, например уровень моря. Каждый тип данных представлен константой PROPERTYKEY . Например, тип данных, представляющий ускорение по оси X в g, будет константой SENSOR_DATA_TYPE_ACCELERATION_X_G.

  • При отправке данных считается, что значение содержится в поле данных, а коллекция связанных полей данных состоит из отчета о данных. Отчеты о данных упаковываются с помощью интерфейса IPortableDeviceValues . Каждый отчет о данных должен содержать по крайней мере одно допустимое поле данных и метку времени, которая определяет время создания отчета по данным. Метки времени представлены ключом свойства SENSOR_DATA_TYPE_TIMESTAMP.

Другие константы

Драйверу также потребуется использовать некоторые другие типы констант. К этим константам относятся:

  • Свойства датчика, например SENSOR_PROPERTY_DESCRIPTION. К этим константам относятся константы WPD, например WPD_FUNCTIONAL_OBJECT_CATEGORY. Обычно эти константы используются для описания датчика, например при вызове в ISensorDriver::OnGetSupportedSensorObjects. Значения свойств также возвращаются через ISensorDriver::OnGetSupportedProperties и ISensorDriver::OnGetProperties.

  • Некоторые свойства датчика должны быть предоставлены драйвером, некоторые свойства могут быть заданы клиентскими приложениями, а некоторые всегда должны возвращать одно и то же значение. В разделе Справочник по свойствам датчика приведены эти сведения для каждого свойства. Чтобы понять, какие свойства необходимы для конкретного метода, см. документацию по методу в разделе Справочник по датчику Windows .

  • Константы событий, такие как SENSOR_EVENT_STATE_CHANGED. Константы событий включают GUID, представляющие типы событий, и PROPERTYKEYs, которые представляют типы параметров событий. Эти константы будут использоваться при вызове расширения класса в ISensorDriver::OnGetSupportedEvents или при вызове событий через ISensorClassExtension::P ostEvent или ISensorClassExtension::P ostStateChange.

  • Константы значков. Драйвер может указать определенный значок для представления устройства в Windows. См. раздел Указание значка.

  • Платформа датчика определяет константу GUID_DEVINTERFACE_SENSOR для определения класса интерфейса устройства датчика. Во время установки драйвер регистрирует по крайней мере один класс интерфейса устройства. Расширение класса датчика регистрирует класс интерфейса устройства датчика.

Постоянный уникальный идентификатор

Свойство датчика с именем SENSOR_PROPERTY_PERSISTENT_UNIQUE_ID требует особого внимания. Значение этого свойства должно быть уникальным для каждого датчика на устройстве. В то же время это значение должно оставаться неизменным для конкретного датчика каждый раз, когда платформа датчика использует его. Пример создания постоянного уникального идентификатора в коде драйвера см. в разделе Создание постоянного уникального идентификатора.

Предоставление сведений о географическом расположении

Иногда пользователям важно знать физическое расположение датчика, даже если датчик не является датчиком местоположения. Например, значение данных, которые предоставляет метеостанция, тесно связано с расположением станции.

Чтобы предоставить данные геолокации этого типа, любой датчик может использовать соответствующие поля данных из категории SENSOR_CATEGORY_LOCATION , даже если датчик не является датчиком местоположения. Таким образом, метеостанция может сообщить о своем расположении с помощью SENSOR_DATA_TYPE_LATITUDE_DEGREES и SENSOR_DATA_TYPE_LONGITUDE_DEGREES констант полей данных. Однако при вызове в ISensorDriver::OnGetProperties не следует сообщать о том, что такие датчики относятся к категории Расположение.

Windows рассматривает датчик с любым типом расположения как существующий в категории расположения (SENSOR_CATEGORY_LOCATION). В результате эти датчики подпадают под модель разрешений расположения. Не следует пытаться обходить модель разрешений для датчика местоположения (например, отображая тип датчика GPS как SENSOR_TYPE_LOCATION_GPS но указывая категорию, не являющуюся местоположением).

Пользовательские значения

Вы можете определить пользовательские значения для категорий, типов датчиков, полей данных, свойств и событий.

Рекомендации и пример определения пользовательских значений для констант см. в разделе Определение пользовательских значений для констант.