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.12/qtsensors-cpp.html