Класс QSensorBackend
Класс QSensorBackend — это реализация датчика. Подробнее...
| Заголовок: | #include <QSensorBackend> |
| CMake: | find_package(Qt6 COMPONENTS Sensors REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Sensors) |
| qmake: | QT += sensors |
| С момента: | Qt 5.1 |
| Наследует: | QObject |
Открытые функции
| void | addDataRate(qreal min, qreal max) |
| void | addOutputRange(qreal min, qreal max, qreal accuracy) |
| virtual bool | isFeatureSupported(QSensor::Feature feature) const |
| void | newReadingAvailable() |
| QSensorReading * | reading() const |
| QSensor * | sensor() const |
| void | sensorBusy(bool busy = true) |
| void | sensorError(int error) |
| void | sensorStopped() |
| void | setDataRates(const QSensor *otherSensor) |
| void | setDescription(const QString &description) |
| T * | setReading(T *reading) |
| virtual void | start() = 0 |
| virtual void | stop() = 0 |
Подробное описание
Датчики на устройстве будут представлены подклассами QSensorBackend.
Документация по членам-функциям
void QSensorBackend::addDataRate(qreal min, qreal max)
Добавляет скорость передачи данных (состоящую из значений min и max) для датчика.
Обратите внимание, что эту функцию следует вызывать из конструктора, чтобы информация была доступна сразу.
См. также QSensor::availableDataRates.
void QSensorBackend::addOutputRange(qreal min, qreal max, qreal accuracy)
Добавляет диапазон выходных данных (состоящий из значений min, max и accuracy) для датчика.
Обратите внимание, что эту функцию следует вызывать из конструктора, чтобы информация была доступна сразу.
См. также QSensor::outputRange и QSensor::outputRanges.
[virtual, since 5.0] bool QSensorBackend::isFeatureSupported(QSensor::Feature feature) const
Проверяет, поддерживается ли функция этим бэкендом датчика.
Это сторона бэкенда функции QSensor::isFeatureSupported(). Переопределите эту функцию, если бэкенд поддерживает одну из дополнительных функций датчика в QSensor::Feature.
Возвращает значение true, если функция feature поддерживается этим бэкендом. По умолчанию реализация возвращает false.
Эта функция была добавлена в Qt 5.0.
void QSensorBackend::newReadingAvailable()
Уведомляет класс QSensor о том, что доступно новое значение.
QSensorReading *QSensorBackend::reading() const
Если бэкенд потерял ссылку на значение, он может вызвать этот метод, чтобы получить адрес.
Обратите внимание, что вам потребуется выполнить приведение типов.
См. также setReading().
QSensor *QSensorBackend::sensor() const
Возвращает интерфейс датчика, связанный с этим бэкендом.
void QSensorBackend::sensorBusy(bool busy = true)
Уведомляет интерфейс датчика о состоянии готовности, в соответствии с переданным параметром busy.
Если датчик устанавливается в состояние busy, это неявно вызывает sensorStopped(). Указание занятости обычно выполняется в start().
Обратите внимание, что интерфейс должен вызывать QSensor::isBusy(), чтобы определить, занят ли датчик. Если датчик остановился из-за ошибки, функция sensorError() должна быть вызвана, чтобы уведомить класс об ошибке.
void QSensorBackend::sensorError(int error)
Уведомляет интерфейс о возникновении ошибки датчика. Обратите внимание, что это сообщает только код error. Это не останавливает датчик.
См. также sensorStopped().
void QSensorBackend::sensorStopped()
Уведомляет интерфейс о том, что датчик остановлен. Это может быть вызвано неудачей start() или по какой-либо непредвиденной причине (например, сбой оборудования).
Обратите внимание, что интерфейс должен вызывать QSensor::isActive(), чтобы определить, остановлен ли датчик. Если датчик остановился из-за ошибки, функция sensorError() должна быть вызвана, чтобы уведомить класс об ошибке.
void QSensorBackend::setDataRates(const QSensor *otherSensor)
Устанавливает скорость передачи данных для датчика на основе otherSensor.
Это предназначено для датчиков, которые основаны на других датчиках.
setDataRates(otherSensor);
Обратите внимание, что эту функцию необходимо вызывать из конструктора.
См. также QSensor::availableDataRates и addDataRate().
void QSensorBackend::setDescription(const QString &description)
Устанавливает description для датчика.
Обратите внимание, что эту функцию следует вызывать из конструктора, чтобы информация была доступна сразу.
template <typename T> T *QSensorBackend::setReading(T *reading)
Эта функция вызывается для инициализации классов reading, используемых для датчика.
Если ваш бэкенд уже выделил значение, вы должны передать адрес этого значения в функцию. В противном случае вы должны передать 0, и функция вернёт адрес значения, которое ваш бэкенд должен использовать, когда захочет уведомить API датчика о новых значениях.
Обратите внимание, что это шаблонная функция, поэтому её следует вызывать с соответствующим типом.
class MyBackend : public QSensorBackend
{
QAccelerometerReading m_reading;
public:
MyBackend(QSensor *sensor)
: QSensorBackend(sensor)
{
setReading<QAccelerometerReading>(&m_reading);
}
...
Обратите внимание, что эту функцию необходимо вызвать, иначе вы не сможете отправлять значения в интерфейс.
Если вы не хотите хранить адрес значения, вы можете использовать метод reading(), чтобы получить его позже.
class MyBackend : public QSensorBackend
{
public:
MyBackend(QSensor *sensor)
: QSensorBackend(sensor)
{
setReading<QAccelerometerReading>(0);
}
void poll()
{
quint64 timestamp;
qreal x, y, z;
...
QAccelerometerReading *reading = static_cast<QAccelerometerReading*>(reading());
reading->setTimestamp(timestamp);
reading->setX(x);
reading->setY(y);
reading->setZ(z);
}
...
См. также reading().
[pure virtual] void QSensorBackend::start()
Начать отчёт значений.
[pure virtual] void QSensorBackend::stop()
Остановить отчёт значений.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qsensorbackend.html