Spec-Zone.ru › Qt 5.9

Qt Sensors C++ Обзор

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

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

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

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

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

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

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

В общем случае данные датчика ориентированы относительно QPlatformScreen::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 знает. Обратите внимание, что дополнительные типы могут быть доступны во время выполнения. См. Типы датчиков для получения дополнительной информации.

QУскорение

Обёртка для удобства работы с QSensor

QДатчик высоты

Обёртка для удобства работы с QSensor

QДатчик освещенности

Обёртка для удобства работы с QSensor

QДатчик температуры

Обёртка для удобства работы с QSensor

QКомпас

Обёртка для удобства работы с QSensor

QДатчик расстояния

Обёртка для удобства работы с QSensor

QГироскоп

Обёртка для удобства работы с QSensor

QДатчик фиксации в кобуре

Обёртка для удобства работы с QSensor

QДатчик влажности

Обёртка для удобства работы с QSensor

QИнфракрасный датчик приближения

Обёртка для удобства работы с QSensor

QДатчик открытия крышки

Обёртка для удобства работы с QSensor

QДатчик света

Обёртка для удобства работы с QSensor

QМагнитнометр

Обёртка для удобства работы с QSensor

QДатчик ориентации

Обёртка для удобства работы с QSensor

QДатчик давления

Обёртка для удобства работы с QSensor

QДатчик приближения

Обёртка для удобства работы с QSensor

QДатчик вращения

Обёртка для удобства работы с QSensor

QДатчик касания

Обёртка для удобства работы с QSensor

QДатчик наклона

Обёртка для удобства работы с QSensor

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

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

QФильтр ускорения

Обёртка для удобства работы с QSensorFilter

QФильтр высоты

Обёртка для удобства работы с QSensorFilter

QФильтр освещенности

Обёртка для удобства работы с QSensorFilter

QФильтр температуры

Обёртка для удобства работы с QSensorFilter

QФильтр компаса

Обёртка для удобства работы с QSensorFilter

QФильтр расстояния

Обёртка для удобства работы с QSensorFilter

QФильтр гироскопа

Обёртка для удобства работы с QSensorFilter

QФильтр кобуры

Обёртка для удобства работы с QSensorFilter

QФильтр влажности

Обёртка для удобства работы с QSensorFilter

QФильтр ИК приближения

Обёртка для удобства работы с QSensorFilter

QФильтр крышки

Обёртка для удобства работы с QSensorFilter

QФильтр света

Обёртка для удобства работы с QSensorFilter

QФильтр магнитного поля

Обёртка для удобства работы с QSensorFilter

QФильтр ориентации

Обёртка для удобства работы с QSensorFilter

QФильтр давления

Обёртка для удобства работы с QSensorFilter

QФильтр приближения

Обёртка для удобства работы с QSensorFilter

QФильтр вращения

Обёртка для удобства работы с QSensorFilter

QФильтр касания

Обёртка для удобства работы с QSensorFilter

QФильтр наклона

Обёртка для удобства работы с QSensorFilter

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

Spec-Zone.ru

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