Класс QSensorBackend
Класс QSensorBackend является реализацией датчика. Подробнее...
| Заголовок: | #include <QSensorBackend> |
| qmake: | QT += sensors |
| С момента: | Qt 5.1 |
| Наследует: | QObject |
Этот класс был представлен в Qt 5.1.
Открытые функции
| 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() |
| 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] 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()
Уведомляет фронтенд о том, что датчик занят. Это подразумевает вызов 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)
Устанавливает описание для датчика.
Обратите внимание, что эту функцию следует вызывать из конструктора, чтобы информация была доступна сразу же.
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-5.14/qsensorbackend.html