Spec-Zone.ru › Qt 5.14

Обзор Qt Sensors C++

Типы датчиков

На устройстве может быть множество типов датчиков. Не все типы, поддерживаемые API Qt Sensors, могут быть доступны. Также могут быть доступны типы, которые не определены в API Qt Sensors. Типы датчиков, доступные на устройстве, находятся с помощью функции QSensor::sensorTypes().

Список встроенных типов датчиков см. в разделе Классы датчиков ниже.

Общие соглашения

Если не указано иное, Qt Sensors использует Декартову систему координат с правой ориентацией.

Для измерения во всех 6 направлениях используются отрицательные значения.

При вращении вокруг оси вращение должно быть выражено как вращение по правилу правой руки.

В общем случае данные датчика ориентированы относительно QScreen::nativeOrientation, то есть к верху устройства, когда устройство находится в своем естественном положении (обычно когда логотип устройства отображается правильно). Если значения должны быть отображены на экране, значения могут потребоваться преобразовать, чтобы они соответствовали ориентации пользовательского интерфейса. Датчик может определить свои данные как ориентированные относительно пользовательского интерфейса. Это будет указано в документации к датчику.

Использование датчика

Жизненный цикл QSensor обычно следующий:

  • Создать экземпляр QSensor или одного из его подклассов в стеке или куче.
  • Настроить, как требуется приложением.
  • Начать получение значений.
  • Данные датчика используются приложением.
  • Остановить получение значений.

Вот пример создания датчика в куче и в стеке.


  // On the heap (deleted when this object is deleted)
  QAccelerometer *sensor = new QAccelerometer(this);

  // On the stack (deleted when the current scope ends)
  QOrientationSensor orient_sensor;

Получение данных датчика общим способом

Предпочтительный способ работы с данными датчиков — через Классы чтения. Однако иногда это может быть невозможно. Например, вы можете развернуть приложение на устройстве с новым типом датчика, но заголовок C++ с описанием класса чтения недоступен.

Благодаря системе свойств Qt вы все равно можете получить доступ к данным датчика. Вам нужно знать три параметра:

  • Тип датчика.
  • Имя или индекс свойства.
  • Тип свойства или сопоставимый тип.

Например, вот пример того, как получить доступ к свойству акселерометра. Этот код не требует никаких ссылок на время компиляции на QAccelerometer или QAccelerometerReading.


  // start the sensor
  QSensor sensor("QAccelerometer");
  sensor.start();

  // later
  QSensorReading *reading = sensor.reading();
  qreal x = reading->property("x").value<qreal>();
  qreal y = reading->value(1).value<qreal>();

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

Фронтенд, бэкенд

API Qt Sensors имеет фронтенд для использования разработчиками приложений и бэкенд, где разработчики устройств пишут код для доступа к своему оборудованию. Как разработчику приложений вам не нужно обращаться к бэкенду, хотя может быть полезно понять, как он работает.

Команды из приложения передаются через QSensor, а затем в плагин устройства. Данные возвращаются через класс QSensorReading.

Дополнительную информацию о бэкенде можно найти в Qt Sensors Backend.

Основные классы

Основные классы, составляющие API Qt Sensors.

QSensor

Представляет собой отдельный датчик аппаратного обеспечения

QSensorFilter

Эффективная служба обратного вызова для асинхронных уведомлений о изменениях датчика

QSensorReading

Содержит показания датчика

Классы чтения

Лучший способ доступа к данным датчиков — через один из этих классов.

QAccelerometerReading

Сообщает о линейном ускорении по осям X, Y и Z

QAltimeterReading

Содержит показания с датчика высотомера

QAmbientLightReading

Представляет одно измерение с датчика освещенности

QAmbientTemperatureReading

Содержит показания окружающей температуры

QCompassReading

Представляет одно измерение с компаса

QDistanceReading

Содержит расстояние в см от датчика приближения

QGyroscopeReading

Представляет одно измерение с датчика гироскопа

QHolsterReading

Содержит показания с датчика кобуры

QHumidityReading

Содержит показания с датчика влажности

QIRProximityReading

Содержит показания с ИК-датчика приближения

QLidReading

Содержит показания с датчика крышки

QLightReading

Представляет одно измерение с датчика света

QMagnetometerReading

Представляет одно измерение с датчика магнитного поля

QOrientationReading

Представляет одно измерение с датчика ориентации

QPressureReading

Содержит показания с датчика давления

QProximityReading

Представляет одно измерение с датчика приближения

QRotationReading

Представляет одно измерение с датчика вращения

QTapReading

Представляет одно измерение с датчика касания

QTiltReading

Содержит показания с датчика наклона

Классы датчиков

Эти классы предоставляют удобные оболочки, которые уменьшают необходимость в приведении типов. Каждый из этих классов представляет собой тип датчика, о котором API Qt Sensors знает. Обратите внимание, что дополнительные типы могут быть доступны во время выполнения. Подробнее см. Типы датчиков.

QAccelerometer

Удобная обёртка вокруг QSensor

QAltimeter

Удобная обёртка вокруг QSensor

QAmbientLightSensor

Удобная обёртка вокруг QSensor

QAmbientTemperatureSensor

Удобная обёртка вокруг QSensor

QCompass

Удобная обёртка вокруг QSensor

QDistanceSensor

Удобная обёртка вокруг QSensor

QGyroscope

Удобная обёртка вокруг QSensor

QHolsterSensor

Удобная обёртка вокруг QSensor

QHumiditySensor

Удобная обёртка вокруг QSensor

QIRProximitySensor

Удобная обёртка вокруг QSensor

QLidSensor

Удобная обёртка вокруг QSensor

QLightSensor

Удобная обёртка вокруг QSensor

QMagnetometer

Удобная обёртка вокруг QSensor

QOrientationSensor

Удобная обёртка вокруг QSensor

QPressureSensor

Удобная обёртка вокруг QSensor

QProximitySensor

Удобная обёртка вокруг QSensor

QRotationSensor

Удобная обёртка вокруг QSensor

QTapSensor

Удобная обёртка вокруг QSensor

QTiltSensor

Удобная обёртка вокруг QSensor

Классы фильтров

Как и классы датчиков, они предоставляют удобные обёртки, уменьшая необходимость в приведении типов.

QAccelerometerFilter

Удобная обёртка вокруг QSensorFilter

QAltimeterFilter

Удобная обёртка вокруг QSensorFilter

QAmbientLightFilter

Удобная обёртка вокруг QSensorFilter

QAmbientTemperatureFilter

Удобная обёртка вокруг QSensorFilter

QCompassFilter

Удобная обёртка вокруг QSensorFilter

QDistanceFilter

Удобная обёртка вокруг QSensorFilter

QGyroscopeFilter

Удобная обёртка вокруг QSensorFilter

QHolsterFilter

Удобная обёртка вокруг QSensorFilter

QHumidityFilter

Удобная обёртка вокруг QSensorFilter

QIRProximityFilter

Удобная обёртка вокруг QSensorFilter

QLidFilter

Удобная обёртка вокруг QSensorFilter

QLightFilter

Удобная обёртка вокруг QSensorFilter

QMagnetometerFilter

Удобная обёртка вокруг QSensorFilter

QOrientationFilter

Удобная обёртка вокруг QSensorFilter

QPressureFilter

Удобная обёртка вокруг QSensorFilter

QProximityFilter

Удобная обёртка вокруг QSensorFilter

QRotationFilter

Удобная обёртка вокруг QSensorFilter

QTapFilter

Удобная обёртка вокруг QSensorFilter

QTiltFilter

Удобная обёртка вокруг QSensorFilter

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qtsensors-cpp.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API