QSensorBackend Class

Die Klasse QSensorBackend ist eine Sensor-Implementierung. Mehr...

Kopfzeile: #include <QSensorBackend>
CMake: find_package(Qt6 REQUIRED COMPONENTS Sensors)
target_link_libraries(mytarget PRIVATE Qt6::Sensors)
qmake: QT += sensors
Vererbungen: 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

Detaillierte Beschreibung

Die 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 min und max Werten) 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 ein Merkmal von diesem Sensor-Backend unterstützt wird.

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

Gibt zurück, ob das Merkmal feature von diesem Backend unterstützt wird. Die Standardimplementierung gibt false zurück.

void QSensorBackend::newReadingAvailable()

Benachrichtigen Sie die Klasse QSensor, dass eine neue Lesung verfügbar ist.

QSensorReading *QSensorBackend::reading() const

Wenn das Backend seinen Verweis auf das Lesen verloren hat, kann es diese Methode aufrufen, um die Adresse zu erhalten.

Beachten Sie, dass Sie auf den entsprechenden Typ herunterkonvertieren müssen.

Siehe auch setReading().

QSensor *QSensorBackend::sensor() const

Gibt das mit diesem Backend verbundene Sensor-Frontend zurück.

void QSensorBackend::sensorBusy(bool busy = true)

Informiert das Frontend über den Besetzt-Zustand des Sensors gemäß dem angegebenen Parameter busy.

Wenn der Sensor auf besetzt gesetzt ist, wird implizit sensorStopped() aufgerufen. Die Besetztmeldung erfolgt normalerweise in start().

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

void QSensorBackend::sensorError(int error)

Informiert das Frontend, dass ein Sensorfehler aufgetreten ist. Beachten Sie, dass dies nur einen error Code meldet. Der Sensor wird nicht angehalten.

Siehe auch sensorStopped().

void QSensorBackend::sensorStopped()

Informiert das Frontend, dass der Sensor angehalten hat. Dies kann durch ein Fehlschlagen von start() oder aus einem unerwarteten Grund (z. B. Hardwarefehler) geschehen.

Beachten Sie, dass das Frontend QSensor::isActive() aufrufen muss, um festzustellen, ob der Sensor angehalten wurde. Wenn der Sensor aufgrund eines Fehlers angehalten hat, 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 auf Basis von otherSensor ein.

Dies ist für Sensoren gedacht, 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)

Setzen Sie die description für den Sensor.

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 reading Klassen zu initialisieren, die für einen Sensor verwendet werden.

Wenn Ihr Backend bereits einen Messwert zugewiesen hat, sollten Sie die Adresse dieses Wertes an die Funktion übergeben. Andernfalls sollten Sie 0 übergeben, und die Funktion gibt die Adresse des Messwerts zurück, den Ihr Backend verwenden soll, wenn es die Sensor-API über neue Messwerte informieren will.

Beachten Sie, dass es sich hierbei um eine Vorlagenfunktion handelt, die mit dem entsprechenden Typ aufgerufen werden sollte.

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, sonst können Sie keine Messwerte an das Frontend senden.

Wenn Sie die Adresse des Messwerts nicht speichern möchten, können Sie die Methode reading() verwenden, um sie später wieder 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 von Werten.

[pure virtual] void QSensorBackend::stop()

Werte nicht mehr melden.

© 2025 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.