Auf dieser Seite

QSensorBackend Class

Die Klasse „QSensorBackend“ ist eine Sensorimplementierung. Mehr...

Header: #include <QSensorBackend>
CMake: find_package(Qt6 REQUIRED COMPONENTS Sensors)
target_link_libraries(mytarget PRIVATE Qt6::Sensors)
qmake: QT += sensors
Erbt von: QObject

Öffentliche Funktionen

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

Ausführliche Beschreibung

Sensoren auf einem Gerät werden durch Unterklassen von QSensorBackend dargestellt.

Dokumentation der Mitgliedsfunktionen

void QSensorBackend::addDataRate(qreal min, qreal max)

Fügen Sie eine Datenrate (bestehend aus den Werten „ min “ und „ max “) für den Sensor hinzu.

Beachten Sie, dass diese Funktion vom Konstruktor aus aufgerufen werden sollte, damit die Informationen sofort verfügbar sind.

Siehe auch QSensor::availableDataRates.

void QSensorBackend::addOutputRange(qreal min, qreal max, qreal accuracy)

Fügen Sie einen Ausgabebereich (bestehend aus den Werten „ min “, „ max “ und „ accuracy “) für den Sensor hinzu.

Beachten Sie, dass diese Funktion vom Konstruktor aus aufgerufen werden sollte, damit die Informationen sofort verfügbar sind.

Siehe auch QSensor::outputRange und QSensor::outputRanges.

[virtual] bool QSensorBackend::isFeatureSupported(QSensor::Feature feature) const

Prüft, ob eine Funktion von diesem Sensor-Backend unterstützt wird.

Dies ist die Backend-Seite von ` QSensor::isFeatureSupported()`. Implementieren Sie diese Funktion neu, wenn das Backend eine der zusätzlichen Sensorfunktionen von ` QSensor::Feature` unterstützt.

Gibt zurück, ob die Funktion feature von diesem Backend unterstützt wird. Die Standardimplementierung gibt „false“ zurück.

void QSensorBackend::newReadingAvailable()

Teile der Klasse „ QSensor “ mit, dass ein neuer Messwert vorliegt.

QSensorReading *QSensorBackend::reading() const

Falls das Backend den Verweis auf die Lesedaten verloren hat, kann es diese Methode aufrufen, um die Adresse abzurufen.

Beachten Sie, dass Sie eine Typumwandlung zum entsprechenden Typ vornehmen müssen.

Siehe auch ` setReading()`.

QSensor *QSensorBackend::sensor() const

Gibt das zu diesem Backend gehörende Sensor-Frontend zurück.

void QSensorBackend::sensorBusy(bool busy = true)

Teile dem Frontend den „Beschäftigt“-Zustand des Sensors gemäß dem bereitgestellten Parameter „ busy “ mit.

Wenn der Sensor als beschäftigt gesetzt ist, wird dadurch implizit ` sensorStopped()` aufgerufen. Die Besetztanzeige erfolgt typischerweise in ` start()`.

Beachten Sie, dass das Frontend die Funktion ` QSensor::isBusy()` aufrufen muss, um zu prüfen, ob der Sensor belegt ist. Wenn der Sensor aufgrund eines Fehlers angehalten wurde, sollte die Funktion ` sensorError()` aufgerufen werden, um die Klasse über den Fehlerzustand zu informieren.

void QSensorBackend::sensorError(int error)

Teilen Sie dem Frontend mit, dass ein Sensorfehler aufgetreten ist. Beachten Sie, dass hierbei lediglich ein „ error “-Code gemeldet wird. Der Sensor wird dadurch nicht abgeschaltet.

Siehe auch ` sensorStopped()`.

void QSensorBackend::sensorStopped()

Teilen Sie dem Frontend mit, dass der Sensor gestoppt wurde. Dies kann daran liegen, dass start() fehlgeschlagen ist, oder aus einem unerwarteten Grund (z. B. Hardwarefehler).

Beachten Sie, dass das Frontend die Funktion ` QSensor::isActive()` aufrufen muss, um festzustellen, ob der Sensor angehalten wurde. Wenn der Sensor aufgrund eines Fehlers angehalten wurde, sollte die Funktion ` sensorError()` aufgerufen werden, um die Klasse über den Fehlerzustand zu informieren.

void QSensorBackend::setDataRates(const QSensor *otherSensor)

Stellen Sie die Datenraten für den Sensor gemäß otherSensor ein.

Dies ist für Sensoren vorgesehen, die auf anderen Sensoren basieren.

setDataRates(otherSensor);

Beachten Sie, dass diese Funktion vom Konstruktor aus aufgerufen werden muss.

Siehe auch QSensor::availableDataRates und addDataRate().

void QSensorBackend::setDescription(const QString &description)

Legen Sie die Funktion „ description “ für den Sensor fest.

Beachten Sie, dass diese Funktion vom Konstruktor aus aufgerufen werden sollte, damit die Informationen sofort verfügbar sind.

template <typename T> T *QSensorBackend::setReading(T *reading)

Diese Funktion wird aufgerufen, um die für einen Sensor verwendeten „ reading “-Klassen zu initialisieren.

Falls Ihr Backend bereits einen Messwert zugewiesen hat, sollten Sie die Adresse dieses Messwerts an die Funktion übergeben. Andernfalls sollten Sie 0 übergeben; die Funktion gibt dann die Adresse des Messwerts zurück, den Ihr Backend verwenden soll, wenn es die Sensor-API über neue Messwerte informieren möchte.

Beachten Sie, dass es sich hierbei um eine Template-Funktion handelt, die daher mit dem entsprechenden Typ aufgerufen werden muss.

class MyBackend : public QSensorBackend
{
    QAccelerometerReading m_reading;
public:
    MyBackend(QSensor *sensor)
        : QSensorBackend(sensor)
    {
        setReading<QAccelerometerReading>(&m_reading);
    }

    ...

Beachten Sie, dass diese Funktion aufgerufen werden muss, da Sie sonst keine Messwerte an das Frontend senden können.

Wenn Sie die Adresse des Messwerts nicht speichern möchten, können Sie die Methode ` reading()` verwenden, um sie später erneut abzurufen.

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);
    }

    ...

Siehe auch ` reading()`.

[pure virtual] void QSensorBackend::start()

Beginnen Sie mit der Meldung der Werte.

[pure virtual] void QSensorBackend::stop()

Keine Werte mehr melden.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.