Spec-Zone.ru › Qt

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 Бэкэнд.

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

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

QSensor

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

QSensorFilter

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

QSensorReading

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

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

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

QAccelerometerReading

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

QAmbientLightReading

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

QAmbientTemperatureReading

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

QCompassReading

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

QGyroscopeReading

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

QHumidityReading

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

QLightReading

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

QMagnetometerReading

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

QOrientationReading

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

QPressureReading

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

QProximityReading

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

QRotationReading

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

QTiltReading

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

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

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

QAccelerometer

Удобная оболочка для QSensor

QAmbientLightSensor

Удобная оболочка для QSensor

QAmbientTemperatureSensor

Удобная оболочка для QSensor

QCompass

Удобная оболочка для QSensor

QGyroscope

Удобная оболочка для QSensor

QHumiditySensor

Удобная оболочка для QSensor

QLightSensor

Удобная оболочка для QSensor

QMagnetometer

Удобная оболочка для QSensor

QOrientationSensor

Удобная оболочка для QSensor

QPressureSensor

Удобная оболочка для QSensor

QProximitySensor

Удобная оболочка для QSensor

QRotationSensor

Удобная оболочка для QSensor

QTiltSensor

Удобная оболочка для QSensor

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

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

QAccelerometerFilter

Удобная оболочка вокруг QSensorFilter

QAmbientLightFilter

Удобная оболочка вокруг QSensorFilter

QAmbientTemperatureFilter

Удобная оболочка вокруг QSensorFilter

QCompassFilter

Удобная оболочка вокруг QSensorFilter

QGyroscopeFilter

Удобная оболочка вокруг QSensorFilter

QHumidityFilter

Удобная оболочка вокруг QSensorFilter

QLightFilter

Удобная оболочка вокруг QSensorFilter

QMagnetometerFilter

Удобная оболочка вокруг QSensorFilter

QOrientationFilter

Удобная оболочка вокруг QSensorFilter

QPressureFilter

Удобная оболочка вокруг QSensorFilter

QProximityFilter

Удобная оболочка вокруг QSensorFilter

QRotationFilter

Удобная оболочка вокруг QSensorFilter

QTiltFilter

Удобная оболочка вокруг QSensorFilter

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

Spec-Zone.ru

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