QSensorBackend Class

QSensorBackend クラスはセンサーの実装です。詳細...

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

センサーのデータレート(minmax 値からなる)を追加する。

この関数はコンストラクタから呼び出す必要があることに注意してください。

QSensor::availableDataRatesも参照

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

センサーの出力レンジ(minmax 値、accuracy で構成)を追加する。

この関数はコンストラクタから呼び出す必要があることに注意する。

QSensor::outputRange およびQSensor::outputRangesも参照

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

機能がこのセンサーのバックエンドでサポートされているかどうかをチェックする。

これはQSensor::isFeatureSupported() のバックエンド側である。バックエンドがQSensor::Feature の追加センサ機能の 1 つをサポートしている場合、この関数を再実装する。

feature の機能がこのバックエンドでサポートされているかどうかを返します。デフォルトの実装は false を返します。

void QSensorBackend::newReadingAvailable()

新しい読み取り値が利用可能になったことをQSensor クラスに通知する。

QSensorReading *QSensorBackend::reading() const

バックエンドが読み取り値への参照を失った場合は、このメソッドを呼び出してアドレスを取得することができます。

適切な型にダウンキャストする必要があることに注意しましょう。

setReading()も参照

QSensor *QSensorBackend::sensor() const

このバックエンドに関連付けられているセンサーのフロントエンドを返します。

void QSensorBackend::sensorBusy(bool busy = true)

指定された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()

値の報告を停止します。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。