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 |
Классы фильтров
Как и в случае с классами датчиков, эти классы предоставляют удобные обертки, которые уменьшают необходимость приведения типов.
Удобная оболочка вокруг 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/archives/qt-5.6/qtsensors-cpp.html