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.
Представляет собой один датчик оборудования |
|
Эффективный механизм обратного вызова для асинхронных уведомлений об изменениях датчика |
|
Содержит показания датчика |
Классы чтения
Лучший способ доступа к данным датчика — через один из этих классов.
Сообщает о линейном ускорении вдоль осей X, Y и Z |
|
Содержит показания датчика альтиметра |
|
Представляет собой одно считывание датчика окружающего света |
|
Содержит показания окружающей температуры |
|
Представляет собой одно считывание компаса |
|
Содержит показания расстояния в см от датчика приближения |
|
Представляет собой одно считывание датчика гироскопа |
|
Содержит показания датчика кобуры |
|
Содержит показания датчика влажности |
|
Содержит показания инфракрасного датчика приближения |
|
Содержит показания датчика крышки |
|
Представляет собой одно считывание датчика света |
|
Представляет собой одно считывание компаса |
|
Представляет собой одно считывание датчика ориентации |
|
Содержит показания датчика давления |
|
Представляет собой одно считывание датчика приближения |
|
Представляет собой одно считывание датчика вращения |
|
Представляет собой одно считывание датчика нажатия |
|
Содержит показания датчика наклона |
Классы датчиков
Эти классы предоставляют удобные оболочки, которые уменьшают необходимость приведения типов. Каждый из этих классов представляет тип датчика, который API Qt Sensors знает. Обратите внимание, что дополнительные типы могут быть доступны во время выполнения. См. Типы датчиков для получения дополнительной информации.
Обёртка для удобства работы с QSensor |
|
Обёртка для удобства работы с QSensor |
|
Обёртка для удобства работы с QSensor |
|
Обёртка для удобства работы с QSensor |
|
Обёртка для удобства работы с QSensor |
|
Обёртка для удобства работы с QSensor |
|
Обёртка для удобства работы с QSensor |
|
Обёртка для удобства работы с QSensor |
|
Обёртка для удобства работы с QSensor |
|
Обёртка для удобства работы с QSensor |
|
Обёртка для удобства работы с QSensor |
|
Обёртка для удобства работы с QSensor |
|
Обёртка для удобства работы с QSensor |
|
Обёртка для удобства работы с QSensor |
|
Обёртка для удобства работы с QSensor |
|
Обёртка для удобства работы с QSensor |
|
Обёртка для удобства работы с QSensor |
|
Обёртка для удобства работы с QSensor |
|
Обёртка для удобства работы с QSensor |
Классы фильтров
Как и классы датчиков, они предоставляют удобные обёртки, которые уменьшают необходимость приведения типов.
Обёртка для удобства работы с QSensorFilter |
|
Обёртка для удобства работы с QSensorFilter |
|
Обёртка для удобства работы с QSensorFilter |
|
Обёртка для удобства работы с QSensorFilter |
|
Обёртка для удобства работы с QSensorFilter |
|
Обёртка для удобства работы с QSensorFilter |
|
Обёртка для удобства работы с QSensorFilter |
|
Обёртка для удобства работы с QSensorFilter |
|
Обёртка для удобства работы с QSensorFilter |
|
Обёртка для удобства работы с QSensorFilter |
|
Обёртка для удобства работы с QSensorFilter |
|
Обёртка для удобства работы с QSensorFilter |
|
Обёртка для удобства работы с QSensorFilter |
|
Обёртка для удобства работы с QSensorFilter |
|
Обёртка для удобства работы с QSensorFilter |
|
Обёртка для удобства работы с QSensorFilter |
|
Обёртка для удобства работы с QSensorFilter |
|
Обёртка для удобства работы с QSensorFilter |
|
Обёртка для удобства работы с 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