QSensor Class
Die Klasse QSensor repräsentiert einen einzelnen Hardware-Sensor. Mehr...
Kopfzeile: | #include <QSensor> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Sensors) target_link_libraries(mytarget PRIVATE Qt6::Sensors) |
qmake: | QT += sensors |
Vererbt: | QObject |
Geerbt von: |
Öffentliche Typen
enum | AxesOrientationMode { FixedOrientation, AutomaticOrientation, UserOrientation } |
enum | Feature { Buffering, AlwaysOn, SkipDuplicates, GeoValues, FieldOfView, …, AxesOrientation } |
Eigenschaften
|
|
Öffentliche Funktionen
QSensor(const QByteArray &type, QObject *parent = nullptr) | |
virtual | ~QSensor() |
void | addFilter(QSensorFilter *filter) |
qrangelist | availableDataRates() const |
QSensor::AxesOrientationMode | axesOrientationMode() const |
int | bufferSize() const |
bool | connectToBackend() |
int | currentOrientation() const |
int | dataRate() const |
QString | description() const |
int | efficientBufferSize() const |
int | error() const |
QList<QSensorFilter *> | filters() const |
QByteArray | identifier() const |
bool | isActive() const |
bool | isAlwaysOn() const |
bool | isBusy() const |
bool | isConnectedToBackend() const |
bool | isFeatureSupported(QSensor::Feature feature) const |
int | maxBufferSize() const |
int | outputRange() const |
qoutputrangelist | outputRanges() const |
QSensorReading * | reading() const |
void | removeFilter(QSensorFilter *filter) |
void | setActive(bool active) |
void | setAlwaysOn(bool alwaysOn) |
void | setAxesOrientationMode(QSensor::AxesOrientationMode axesOrientationMode) |
void | setBufferSize(int bufferSize) |
void | setCurrentOrientation(int currentOrientation) |
void | setDataRate(int rate) |
void | setEfficientBufferSize(int efficientBufferSize) |
void | setIdentifier(const QByteArray &identifier) |
void | setMaxBufferSize(int maxBufferSize) |
void | setOutputRange(int index) |
void | setSkipDuplicates(bool skipDuplicates) |
void | setUserOrientation(int userOrientation) |
bool | skipDuplicates() const |
QByteArray | type() const |
int | userOrientation() const |
Öffentliche Slots
Signale
void | activeChanged() |
void | alwaysOnChanged() |
void | availableSensorsChanged() |
void | axesOrientationModeChanged(QSensor::AxesOrientationMode axesOrientationMode) |
void | bufferSizeChanged(int bufferSize) |
void | busyChanged() |
void | currentOrientationChanged(int currentOrientation) |
void | dataRateChanged() |
void | efficientBufferSizeChanged(int efficientBufferSize) |
void | identifierChanged() |
void | maxBufferSizeChanged(int maxBufferSize) |
void | readingChanged() |
void | sensorError(int error) |
void | skipDuplicatesChanged(bool skipDuplicates) |
void | userOrientationChanged(int userOrientation) |
Statische öffentliche Mitglieder
QByteArray | defaultSensorForType(const QByteArray &type) |
QList<QByteArray> | sensorTypes() |
QList<QByteArray> | sensorsForType(const QByteArray &type) |
Verwandte Nicht-Mitglieder
Detaillierte Beschreibung
Der Lebenszyklus eines Sensors ist typisch:
- Erstellen einer Unterklasse von QSensor auf dem Stack oder Heap.
- Einrichten wie von der Anwendung benötigt.
- Beginn des Empfangs von Werten.
- Sensordaten werden von der Anwendung verwendet.
- Beenden Sie den Empfang von Werten.
Die Sensordaten werden über QSensorReading und seine Unterklassen geliefert.
Ausrichtung
Einige Sensoren reagieren auf Änderungen der Bildschirmausrichtung, z. B. QAccelerometer, QMagnetometer und QRotationSensor. Dies sind so genannte orientierbare Sensoren. Für ausrichtbare Sensoren unterstützt QSensor die Änderung der Meldung der Messwerte basierend auf der Ausrichtung des Bildschirms.
Bei ausrichtbaren Sensoren steuert die Eigenschaft axesOrientationMode, wie sich die Ausrichtung auf die Messwerte auswirkt.
Im Standardmodus QSensor::FixedOrientation bleiben die Messwerte von der Ausrichtung unbeeinflusst. Im Modus QSensor::AutomaticOrientation werden die Messwerte automatisch gedreht, wobei die aktuelle Bildschirmausrichtung berücksichtigt wird. Und im Modus QSensor::UserOrientation schließlich werden die Lesewerte entsprechend einer vom Benutzer festgelegten Ausrichtung gedreht.
Diese Funktionalität ist nur verfügbar, wenn sie vom Backend unterstützt wird und der Sensor orientierbar ist, was durch den Aufruf von QSensor::isFeatureSupported() mit dem Flag QSensor::AxesOrientation überprüft werden kann.
Die Orientierungswerte hier beziehen sich immer auf die Bildschirmorientierung, nicht auf die Geräteorientierung. Die Bildschirmausrichtung ist die Ausrichtung der GUI. Wenn ein Gerät beispielsweise um 90 Grad gegen den Uhrzeigersinn gedreht wird, kompensiert die Bildschirmausrichtung dies durch eine Drehung um 90 Grad im Uhrzeigersinn, so dass die grafische Benutzeroberfläche auch nach der Drehung des Geräts noch aufrecht steht. Beachten Sie, dass Anwendungen die Bildschirmausrichtung sperren können, um z. B. den Hoch- oder Querformatmodus zu erzwingen. Bei gesperrten Ausrichtungen reagieren orientierbare Sensoren nicht mit Leseänderungen, wenn die Geräteausrichtung geändert wird, da orientierbare Sensoren nur auf Änderungen der Bildschirmausrichtung reagieren. Dies ist sinnvoll, da der Zweck der ausrichtbaren Sensoren darin besteht, die Sensorausrichtung mit der Bildschirmausrichtung synchron zu halten.
Die Ausrichtungswerte reichen von 0 bis 270 Grad. Die Ausrichtung erfolgt im Uhrzeigersinn, d. h. ein Ausrichtungswert von 90 Grad bedeutet, dass der Bildschirm von seiner Ausgangsposition um 90 Grad nach rechts gedreht wurde, um eine Gerätedrehung von 90 Grad nach links zu kompensieren.
Siehe auch QSensorReading.
Dokumentation der Mitgliedstypen
enum QSensor::AxesOrientationMode
Beschreibt, wie die Lesewerte durch die Bildschirmausrichtung beeinflusst werden.
Konstante | Wert | Beschreibung |
---|---|---|
QSensor::FixedOrientation | 0 | Es wird keine automatische Drehung auf die Messwerte angewendet. |
QSensor::AutomaticOrientation | 1 | Die Ablesewerte werden automatisch auf der Grundlage der Bildschirmausrichtung gedreht. |
QSensor::UserOrientation | 2 | Die Ablesewerte werden auf der Grundlage des Winkels der Eigenschaft userOrientation gedreht. |
Siehe auch QSensor::axesOrientationMode.
enum QSensor::Feature
Listet optionale Merkmale auf, die ein Backend unterstützen kann.
Allen Sensortypen gemeinsam sind die folgenden Merkmale:
Konstante | Wert | Beschreibung |
---|---|---|
QSensor::Buffering | 0 | Das Backend unterstützt die Pufferung von Messwerten, gesteuert durch die Eigenschaft QSensor::bufferSize. |
QSensor::AlwaysOn | 1 | Das Backend unterstützt die Änderung der Richtlinie, ob die Messung im Leerlauf ausgesetzt werden soll, gesteuert durch die Eigenschaft QSensor::alwaysOn. |
QSensor::SkipDuplicates | 5 | Das Backend unterstützt das Überspringen von gleichen oder sehr ähnlichen aufeinanderfolgenden Messwerten. Dies kann durch die Einstellung der Eigenschaft QSensor::skipDuplicates auf true aktiviert werden. |
Die Merkmale von QMagnetometer sind:
Konstante | Wert | Beschreibung |
---|---|---|
QSensor::GeoValues | 2 | Das Backend unterstützt die Rückgabe von Geowerten, die mit der Eigenschaft QMagnetometer::returnGeoValues gesteuert werden können. |
Die Eigenschaften von QLightSensor sind:
Konstante | Wert | Beschreibung |
---|---|---|
QSensor::FieldOfView | 3 | Das Backend gibt sein Sichtfeld an, das über die Eigenschaft QLightSensor::fieldOfView ausgelesen werden kann. |
Die Eigenschaften von QAccelerometer sind:
Konstante | Wert | Beschreibung |
---|---|---|
QSensor::AccelerationMode | 4 | Das Backend unterstützt das Umschalten des Beschleunigungsmodus des Beschleunigers mit der Eigenschaft QAccelerometer::accelerationMode. |
Die Eigenschaften von QPressureSensor sind:
Konstante | Wert | Beschreibung |
---|---|---|
QSensor::PressureSensorTemperature | 7 | Das Backend liefert die Temperatur des Drucksensors |
Die Merkmale aller orientierbaren Sensoren sind:
Konstante | Wert | Beschreibung |
---|---|---|
QSensor::AxesOrientation | 6 | Das Backend unterstützt das Ändern der Achsenausrichtung von der Standardeinstellung QSensor::FixedOrientation auf eine andere. |
Siehe auch QSensor::isFeatureSupported().
Eigenschaft Dokumentation
active : bool
Diese Eigenschaft enthält einen Wert, der angibt, ob der Sensor aktiv ist.
Sie ist true, wenn der Sensor aktiv ist (Werte liefert). Andernfalls ist dieser Wert falsch.
Beachten Sie, dass das Setzen dieses Wertes auf true keine unmittelbare Wirkung hat. Stattdessen wird der Sensor gestartet, sobald die Ereignisschleife erreicht ist.
Zugriffsfunktionen:
bool | isActive() const |
void | setActive(bool active) |
Melder-Signal:
void | activeChanged() |
alwaysOn : bool
Diese Eigenschaft enthält einen Wert, der angibt, ob der Sensor in Betrieb bleiben soll, wenn der Bildschirm ausgeschaltet ist.
Auf einigen Plattformen werden Sensoren ausgesetzt, wenn der Bildschirm ausgeschaltet wird. Wenn Sie diese Eigenschaft auf true setzen, wird der Sensor weiterlaufen.
Zugriffsfunktionen:
bool | isAlwaysOn() const |
void | setAlwaysOn(bool alwaysOn) |
Benachrichtigungssignal:
void | alwaysOnChanged() |
[read-only]
availableDataRates : const qrangelist
Diese Eigenschaft enthält die Datenraten, die der Sensor unterstützt.
Dies ist eine Liste der Datenraten, die der Sensor unterstützt. Gemessen in Hertz.
Die Einträge in der Liste können diskrete Raten oder einen kontinuierlichen Bereich von Raten darstellen. Eine diskrete Rate ist dadurch gekennzeichnet, dass beide Werte gleich sind.
Beachten Sie, dass diese Angabe nicht zwingend erforderlich ist, da nicht alle Sensoren über eine bestimmte Geschwindigkeit verfügen, mit der sie arbeiten. In solchen Fällen ist die Liste leer.
Zugriffsfunktionen:
qrangelist | availableDataRates() const |
Siehe auch QSensor::dataRate und qrangelist.
axesOrientationMode : AxesOrientationMode
Diese Eigenschaft enthält den Modus, der sich darauf auswirkt, wie die Bildschirmausrichtung die Lesewerte verändert.
Wenn sie auf FixedOrientation gesetzt ist, was der Standardmodus ist, wird keine automatische Drehung auf die Lesung angewendet. Dies ist der einzige verfügbare Modus für Backends, die die Funktion QSensor::AxesOrientation nicht unterstützen.
Bei der Einstellung AutomaticOrientation werden die Ablesewerte automatisch gedreht, wenn sich die Bildschirmausrichtung ändert. Die Bildschirmausrichtung wird also aufgehoben.
Nehmen wir als Beispiel an, dass das Gerät um 180 Grad gedreht wird und somit auch die Bildschirmausrichtung um 180 Grad gegenüber der ursprünglichen Ausrichtung gedreht wird. Ohne die automatische Achsenausrichtung würden sich nun die Messwerte ändern: Sowohl der X- als auch der Y-Wert würden negiert, so dass ein Anwendungsentwickler gezwungen wäre, die Negation im Anwendungscode manuell aufzuheben. Die automatische Achsenausrichtung tut dies automatisch, in diesem Modus wären die X- und Y-Werte dieselben wie bei der Standard-Bildschirmausrichtung.
Diese automatische Achsendrehung ist in einigen Anwendungsfällen praktisch, z. B. in einer Wasserwaagenanwendung, die anhand des X-Achsenwerts eines Beschleunigungsmessers misst, wie eben eine Oberfläche ist. Wenn sich die Ausrichtung des Geräts und des Bildschirms um 90 Grad ändert, braucht der Anwendungsentwickler nichts zu ändern, er kann den Wert der X-Achse weiter verwenden, auch wenn das Gerät gedreht wird. Ohne automatische Achsenausrichtung müsste der Anwendungsentwickler stattdessen auf die Y-Werte achten und somit der Anwendung Code hinzufügen, der je nach Bildschirmausrichtung eine andere Achse ausliest.
Der Modus UserOrientation ist dem Modus AutomaticOrientation sehr ähnlich, nur dass die Bildschirmausrichtung manuell gesteuert und nicht automatisch bestimmt wird. Der Winkel der Eigenschaft userOrientation wird dann zum Drehen der Lesewerte verwendet.
Da die Drehung der Lesewerte auf der Bildschirmausrichtung basiert, ändern sich die Z-Werte nie, da die Z-Achse senkrecht zum Bildschirm steht. Da sich die Bildschirmausrichtung in 90-Grad-Schritten ändert, erfolgt die Drehung der Ablesewerte ebenfalls in 90-Grad-Schritten.
Diese Eigenschaft wird nur für ausrichtbare Sensoren verwendet.
Zugriffsfunktionen:
QSensor::AxesOrientationMode | axesOrientationMode() const |
void | setAxesOrientationMode(QSensor::AxesOrientationMode axesOrientationMode) |
Melder-Signal:
void | axesOrientationModeChanged(QSensor::AxesOrientationMode axesOrientationMode) |
bufferSize : int
Diese Eigenschaft gibt die Größe des Puffers an. Standardmäßig ist die Puffergröße 1, was bedeutet, dass keine Pufferung erfolgt. Wenn die maximale Puffergröße 1 ist, wird die Pufferung vom Sensor nicht unterstützt.
Wird bufferSize größer als maxBufferSize eingestellt, wird maxBufferSize verwendet.
Die Pufferung ist eingeschaltet, wenn bufferSize größer als 1 ist. Der Sensor sammelt die angeforderte Anzahl von Proben und liefert sie alle auf einmal an die Anwendung. Es ist daher besonders wichtig, dass die Anwendung jeden Messwert sofort verarbeitet oder die Werte an anderer Stelle speichert.
Wenn stop() bei laufender Pufferung aufgerufen wird, wird der Teilpuffer nicht geliefert.
Wenn der Sensor mit der Option Pufferung gestartet wird, werden die Werte von diesem Moment an gesammelt. Es gibt keinen bereits existierenden Puffer, der genutzt werden kann.
Einige Backends unterstützen nur die Aktivierung oder Deaktivierung des Puffers und bieten keine Kontrolle über die Größe. In diesem Fall werden die Eigenschaften maxBufferSize und efficientBufferSize möglicherweise gar nicht gesetzt, obwohl die Pufferung unterstützt wird. Wenn Sie die Eigenschaft bufferSize auf einen Wert größer als 1 setzen, wird die Pufferung aktiviert. Nachdem der Sensor gestartet wurde, wird die Eigenschaft bufferSize vom Backend auf den aktuellen Wert gesetzt.
Zugriffsfunktionen:
int | bufferSize() const |
void | setBufferSize(int bufferSize) |
Benachrichtigungssignal:
void | bufferSizeChanged(int bufferSize) |
Siehe auch QSensor::maxBufferSize und QSensor::efficientBufferSize.
[read-only]
busy : const bool
Diese Eigenschaft enthält einen Wert, der angibt, ob der Sensor belegt ist.
Einige Sensoren können im System vorhanden sein, aber nicht verwendet werden. Diese Funktion gibt true zurück, wenn der Sensor belegt ist. Sie können den Sensor dann nicht über start() aufrufen.
Beachten Sie, dass diese Funktion nicht true zurückgibt, wenn Sie den Sensor verwenden, sondern nur, wenn ein anderer Prozess den Sensor verwendet.
Zugriffsfunktionen:
bool | isBusy() const |
Benachrichtigungssignal:
void | busyChanged() |
Siehe auch busyChanged().
[read-only]
connectedToBackend : const bool
Diese Eigenschaft enthält einen Wert, der angibt, ob der Sensor mit einem Backend verbunden ist.
Ein Sensor, der nicht mit einem Backend verbunden ist, kann nichts Nützliches tun.
Rufen Sie die Methode connectToBackend() auf, um den Sensor zu zwingen, sich sofort mit einem Backend zu verbinden. Diese Methode wird automatisch aufgerufen, wenn Sie start() aufrufen, so dass Sie dies nur tun müssen, wenn Sie Zugriff auf die Sensoreigenschaften benötigen (z. B. um die Metadaten des Sensors abzufragen, bevor Sie ihn verwenden).
Zugriffsfunktionen:
bool | isConnectedToBackend() const |
[read-only]
currentOrientation : const int
Diese Eigenschaft enthält die aktuelle Ausrichtung, die für die Drehung der Messwerte verwendet wird.
Dies ist möglicherweise nicht die gleiche wie die Bildschirmausrichtung. Im Modus FixedOrientation werden die Messwerte beispielsweise nicht gedreht, weshalb die Eigenschaft 0 ist.
Im Modus UserOrientation werden die Messwerte auf der Grundlage der Eigenschaft userOrientation gedreht, und daher ist diese Eigenschaft gleich der Eigenschaft userOrientation.
Im Modus AutomaticOrientation werden die Messwerte auf der Grundlage der Bildschirmausrichtung gedreht, und daher entspricht diese Eigenschaft der aktuellen Bildschirmausrichtung.
Diese Eigenschaft wird vom Backend festgelegt und gilt nur für ausrichtbare Sensoren.
Zugriffsfunktionen:
int | currentOrientation() const |
Melder-Signal:
void | currentOrientationChanged(int currentOrientation) |
dataRate : int
Diese Eigenschaft enthält die Datenrate, mit der der Sensor betrieben werden soll.
Gemessen in Hertz.
Die Datenrate ist die maximale Frequenz, mit der der Sensor Änderungen erkennen kann.
Die Einstellung dieser Eigenschaft ist nicht portabel und kann zu Konflikten mit anderen Anwendungen führen. Erkundigen Sie sich beim Sensor-Backend und in der Plattformdokumentation nach den Richtlinien für die Anforderung einer Datenrate durch mehrere Anwendungen.
Der Standardwert (0) bedeutet, dass es der Anwendung egal ist, wie hoch die Datenrate ist. Anwendungen sollten eine zeitgesteuerte Abfrage des aktuellen Wertes in Betracht ziehen oder sicherstellen, dass der Code, der die Werte verarbeitet, sehr schnell ausgeführt werden kann, da die Plattform möglicherweise Hunderte von Aktualisierungen pro Sekunde bereitstellt.
Dieser Wert sollte vor dem Aufruf von start() festgelegt werden, da der Sensor Änderungen an diesem Wert möglicherweise nicht bemerkt, während er läuft.
Beachten Sie, dass es keinen Mechanismus gibt, um die aktuelle Datenrate zu ermitteln, die von der Plattform verwendet wird.
Zugriffsfunktionen:
int | dataRate() const |
void | setDataRate(int rate) |
Benachrichtigungssignal:
void | dataRateChanged() |
Siehe auch QSensor::availableDataRates.
[read-only]
description : const QString
Diese Eigenschaft enthält eine beschreibende Zeichenfolge für den Sensor.
Zugriffsfunktionen:
QString | description() const |
[read-only]
efficientBufferSize : const int
Die Eigenschaft enthält die effizienteste Puffergröße. Normalerweise ist dies 1 (was bedeutet, dass keine bestimmte Größe am effizientesten ist). Einige Sensortreiber haben einen FIFO-Puffer, der es effizienter macht, Messwerte in der Größe des FIFOs auf einmal zu liefern.
Zugriffsfunktionen:
int | efficientBufferSize() const |
Benachrichtigungssignal:
void | efficientBufferSizeChanged(int efficientBufferSize) |
Siehe auch QSensor::bufferSize und QSensor::maxBufferSize.
[read-only]
error : const int
Diese Eigenschaft enthält den zuletzt am Sensor eingestellten Fehlercode.
Beachten Sie, dass Fehlercodes sensorspezifisch sind.
Zugriffsfunktionen:
int | error() const |
Melder-Signal:
void | sensorError(int error) |
identifier : QByteArray
Diese Eigenschaft enthält den Backend-Bezeichner für den Sensor.
Beachten Sie, dass der Bezeichner automatisch ausgefüllt wird, wenn der Sensor mit einem Backend verbunden wird. Wenn Sie ein bestimmtes Backend verbinden möchten, sollten Sie setIdentifier() vor connectToBackend() aufrufen.
Zugriffsfunktionen:
QByteArray | identifier() const |
void | setIdentifier(const QByteArray &identifier) |
Melder-Signal:
void | identifierChanged() |
[read-only]
maxBufferSize : const int
Die Eigenschaft enthält die maximale Puffergröße.
Beachten Sie, dass dieser Wert 1 sein kann, wenn der Sensor keine Pufferung unterstützt. In diesem Fall gibt isFeatureSupported(QSensor::Buffering) ebenfalls false zurück.
Zugriffsfunktionen:
int | maxBufferSize() const |
Benachrichtigungssignal:
void | maxBufferSizeChanged(int maxBufferSize) |
Siehe auch QSensor::bufferSize und QSensor::efficientBufferSize.
outputRange : int
Diese Eigenschaft enthält den vom Sensor verwendeten Ausgabebereich.
Dieser Wert stellt den zu verwendenden Index in der Liste QSensor::outputRanges dar.
Die Einstellung dieser Eigenschaft ist nicht portabel und kann zu Konflikten mit anderen Anwendungen führen. Informieren Sie sich in der Dokumentation des Sensor-Backends und der Plattform über alle Richtlinien bezüglich mehrerer Anwendungen, die einen Ausgabebereich anfordern.
Der Standardwert (-1) bedeutet, dass es der Anwendung egal ist, was der Ausgabebereich ist.
Beachten Sie, dass es keinen Mechanismus gibt, um den aktuellen Ausgabebereich zu ermitteln, der von der Plattform verwendet wird.
Zugriffsfunktionen:
int | outputRange() const |
void | setOutputRange(int index) |
Siehe auch QSensor::outputRanges.
[read-only]
outputRanges : const qoutputrangelist
Diese Eigenschaft enthält eine Liste der vom Sensor unterstützten Ausgangsbereiche.
Ein Sensor kann mehr als einen Ausgangsbereich haben. In der Regel wird dies getan, um einen größeren Messbereich auf Kosten einer geringeren Genauigkeit zu erhalten.
Beachten Sie, dass diese Information nicht zwingend erforderlich ist. Diese Information ist in der Regel nur für Sensoren verfügbar, die wählbare Ausgangsbereiche haben (wie z. B. typische Beschleunigungsaufnehmer).
Zugriffsfunktionen:
qoutputrangelist | outputRanges() const |
Siehe auch QSensor::outputRange und qoutputrangelist.
[read-only]
reading : QSensorReading* const
Diese Eigenschaft enthält die Leseklasse.
Die Leseklasse ermöglicht den Zugriff auf Sensormesswerte. Das Leseobjekt ist ein flüchtiger Zwischenspeicher der zuletzt empfangenen Sensormesswerte, so dass die Anwendung die Messwerte sofort verarbeiten oder die Werte für eine spätere Verarbeitung irgendwo speichern sollte.
Beachten Sie, dass dies 0 zurückgibt, bis ein Sensor-Backend mit einem Backend verbunden ist.
Beachten Sie auch, dass die Messwerte nach dem Aufruf von start() nicht sofort verfügbar sind. Anwendungen müssen warten, bis das Signal readingChanged() ausgegeben wird.
Zugriffsfunktionen:
QSensorReading * | reading() const |
Notifier-Signal:
void | readingChanged() |
Siehe auch isConnectedToBackend() und start().
skipDuplicates : bool
Gibt an, ob doppelte Messwerte ausgelassen werden sollen.
Wenn das Überspringen von doppelten Messwerten aktiviert ist, werden aufeinanderfolgende Messwerte mit denselben oder sehr ähnlichen Werten ausgelassen. Dies trägt zur Verringerung des Verarbeitungsaufwands bei, da weniger Sensormesswerte zur Verfügung stehen. Dies hat zur Folge, dass die Messwerte in unregelmäßigen Abständen eintreffen.
Das Überspringen von Duplikaten wird nicht nur bei exakt gleichen Messwerten aktiviert, sondern auch bei sehr ähnlichen Messwerten, da jeder Sensor einen gewissen Jitter aufweist, selbst wenn das Gerät nicht bewegt wird.
Die Unterstützung für diese Eigenschaft hängt vom Backend ab. Verwenden Sie isFeatureSupported(), um zu prüfen, ob sie auf der aktuellen Plattform unterstützt wird.
Das Überspringen von Duplikaten ist standardmäßig deaktiviert.
Das Überspringen von Duplikaten wird wirksam, wenn der Sensor gestartet wird; eine Änderung der Eigenschaft, während der Sensor aktiv ist, hat keine unmittelbare Auswirkung.
Zugriffsfunktionen:
bool | skipDuplicates() const |
void | setSkipDuplicates(bool skipDuplicates) |
Melder-Signal:
void | skipDuplicatesChanged(bool skipDuplicates) |
[read-only]
type : const QByteArray
Diese Eigenschaft enthält den Typ des Sensors.
Zugriffsfunktionen:
QByteArray | type() const |
userOrientation : int
Diese Eigenschaft enthält den Winkel, der für die Drehung der Ablesewerte im Modus UserOrientation verwendet wird.
Wenn die Eigenschaft axesOrientationMode auf UserOrientation eingestellt ist, wird der Winkel für die Drehung der Ablesewerte von dieser Eigenschaft übernommen. In anderen Modi hat die Eigenschaft keine Auswirkung.
Der Standardwert ist 0. Die einzigen gültigen Werte sind 0, 90, 180 und 270, da dies die einzigen möglichen Bildschirmausrichtungen sind.
Diese Eigenschaft ist nur für ausrichtbare Sensoren gültig.
Zugriffsfunktionen:
int | userOrientation() const |
void | setUserOrientation(int userOrientation) |
Melder-Signal:
void | userOrientationChanged(int userOrientation) |
Member Function Dokumentation
[explicit]
QSensor::QSensor(const QByteArray &type, QObject *parent = nullptr)
Konstruieren Sie den Sensor type als untergeordnetes Element von parent.
Verwenden Sie diesen Konstruktor nicht, wenn eine abgeleitete Klasse für den spezifischen Sensortyp existiert.
Der falsche Weg ist, den Konstruktor der Basisklasse zu verwenden:
QSensor *magnetometer = new QSensor(QMagnetometer::sensorType, this);
Der richtige Weg ist, eine Instanz der abgeleiteten Klasse zu erzeugen:
QMagnetometer *magnetometer = new QMagnetometer(this);
Die abgeleiteten Klassen haben zusätzliche Eigenschaften und Datenelemente, die für bestimmte Funktionen benötigt werden, wie z. B. die Unterstützung von Geowerten in QMagnetometer oder die Unterstützung des Beschleunigungsmodus in QAccelerometer. Diese Funktionen funktionieren nur dann richtig, wenn eine Sensorinstanz aus einer QSensor-Unterklasse erzeugt wird.
Verwenden Sie diesen Konstruktor nur, wenn keine abgeleitete Sensorklasse vorhanden ist. Beachten Sie, dass alle eingebauten Sensoren eine abgeleitete Klasse haben, so dass die Verwendung dieses Konstruktors nur bei der Implementierung von benutzerdefinierten Sensoren notwendig sein sollte.
[virtual noexcept]
QSensor::~QSensor()
Zerstört den Sensor. Stoppt den Sensor, wenn er nicht bereits gestoppt wurde.
[signal]
void QSensor::activeChanged()
Dieses Signal wird ausgesendet, wenn sich die Eigenschaft QSensor::active geändert hat.
Hinweis: Benachrichtigungssignal für die Eigenschaft active.
Siehe auch QSensor::active.
void QSensor::addFilter(QSensorFilter *filter)
Fügen Sie dem Sensor ein filter hinzu.
Der Sensor ist nicht Eigentümer des Filters. QSensorFilter informiert den Sensor, wenn er zerstört wird.
Siehe auch QSensorFilter.
[signal]
void QSensor::alwaysOnChanged()
Dieses Signal wird ausgesendet, wenn sich die Eigenschaft alwaysOn ändert.
Hinweis: Meldersignal für die Eigenschaft alwaysOn.
[signal]
void QSensor::availableSensorsChanged()
Dieses Signal wird ausgegeben, wenn sich die Liste der verfügbaren Sensoren geändert hat. Die einem Programm zur Verfügung stehenden Sensoren ändern sich im Allgemeinen nicht mit der Zeit, allerdings können einige der verfügbaren Sensoren Hardware darstellen, die nicht ständig angeschlossen ist. Ein über Bluetooth verbundener Gamecontroller würde zum Beispiel verfügbar werden, wenn er eingeschaltet ist, und nicht verfügbar, wenn er ausgeschaltet ist.
Siehe auch QSensor::sensorTypes() und QSensor::sensorsForType().
[signal]
void QSensor::busyChanged()
Dieses Signal wird ausgesendet, wenn der Sensor nicht mehr belegt ist. Dies kann verwendet werden, um einen Sensor zu erfassen, wenn er verfügbar wird.
sensor.start(); if (sensor.isBusy()) { // need to wait for busyChanged signal and try again }
Hinweis: Benachrichtigungssignal für die Eigenschaft busy.
[invokable]
bool QSensor::connectToBackend()
Versucht, eine Verbindung zu einem Sensor-Backend herzustellen.
Gibt true zurück, wenn ein geeignetes Backend gefunden werden konnte, andernfalls false.
Der Typ muss vor dem Aufruf dieser Methode festgelegt werden, wenn Sie QSensor direkt verwenden.
Hinweis: Diese Funktion kann über das Meta-Objektsystem und von QML aus aufgerufen werden. Siehe Q_INVOKABLE.
Siehe auch isConnectedToBackend().
[static]
QByteArray QSensor::defaultSensorForType(const QByteArray &type)
Liefert den Standard-Sensorbezeichner für type. Diese wird in einer Konfigurationsdatei festgelegt und kann bei Bedarf überschrieben werden. Wenn kein Standardwert verfügbar ist, wird der erste registrierte Sensor für type zurückgegeben.
Beachten Sie, dass es eine spezielle Logik gibt, die verhindert, dass die Backends des generischen Plugins zum Standard werden, wenn ein anderes Backend für denselben Typ registriert ist. Diese Logik bedeutet, dass ein Backend-Identifikator, der mit generic.
beginnt, nur dann der Standard ist, wenn keine anderen Backends für diesen Typ registriert wurden oder wenn er in Sensors.conf
angegeben ist.
Siehe auch Festlegen des Standardsensors für einen Typ.
QList<QSensorFilter *> QSensor::filters() const
Gibt die aktuell am Sensor angebrachten Filter zurück.
Siehe auch QSensorFilter.
[invokable]
bool QSensor::isFeatureSupported(QSensor::Feature feature) const
Prüft, ob eine bestimmte Funktion vom Backend unterstützt wird.
QtSensors unterstützt eine umfangreiche API zur Steuerung und Bereitstellung von Informationen über Sensoren. Natürlich können nicht alle diese Funktionen von allen Backends unterstützt werden.
Um zu prüfen, ob das aktuelle Backend die Funktion feature unterstützt, rufen Sie diese Funktion auf.
Das Backend muss verbunden sein, andernfalls wird false zurückgegeben. Durch den Aufruf von connectToBackend() oder start() wird eine Verbindung zum Backend hergestellt.
Backends müssen QSensorBackend::isFeatureSupported() implementieren, damit dies funktioniert.
Gibt zurück, ob die Funktion unterstützt wird oder nicht, wenn das Backend verbunden ist, oder false, wenn das Backend nicht verbunden ist.
Hinweis: Diese Funktion kann über das Meta-Objektsystem und von QML aus aufgerufen werden. Siehe Q_INVOKABLE.
[signal]
void QSensor::readingChanged()
Dieses Signal wird ausgesendet, wenn ein neuer Sensormesswert empfangen wird.
Der Sensormesswert kann in der Eigenschaft QSensor::reading gefunden werden. Beachten Sie, dass das Leseobjekt ein flüchtiger Zwischenspeicher des zuletzt empfangenen Sensormesswerts ist, so dass die Anwendung den Messwert sofort verarbeiten oder die Werte für eine spätere Verarbeitung irgendwo speichern sollte.
Bevor dieses Signal zum ersten Mal ausgegeben wird, verfügt das Leseobjekt über uninitialisierte Daten.
Hinweis: Benachrichtigungssignal für die Eigenschaft reading.
Siehe auch start().
void QSensor::removeFilter(QSensorFilter *filter)
Entfernen Sie filter vom Sensor.
Siehe auch QSensorFilter.
[signal]
void QSensor::sensorError(int error)
Dieses Signal wird ausgegeben, wenn ein error Code auf dem Sensor eingestellt ist. Beachten Sie, dass einige Fehler dazu führen, dass der Sensor nicht mehr funktioniert. Sie sollten isActive() aufrufen, um festzustellen, ob der Sensor noch in Betrieb ist.
Hinweis: Benachrichtigungssignal für die Eigenschaft error.
[static]
QList<QByteArray> QSensor::sensorTypes()
Gibt eine Liste aller Sensortypen zurück.
[static]
QList<QByteArray> QSensor::sensorsForType(const QByteArray &type)
Gibt eine Liste von IDs für jeden der Sensoren für type zurück. Wenn keine Sensoren dieses Typs vorhanden sind, ist die Liste leer.
void QSensor::setCurrentOrientation(int currentOrientation)
Setzt die aktuelle Bildschirmausrichtung auf currentOrientation. Diese Funktion muss vom Backend aus aufgerufen werden, wenn sich die Bildschirmausrichtung oder die Eigenschaft userOrientation ändert.
Siehe auch currentOrientation().
void QSensor::setEfficientBufferSize(int efficientBufferSize)
Setzt die effiziente Puffergröße auf efficientBufferSize. Dieser Aufruf erfolgt vom Backend aus.
Siehe auch efficientBufferSize().
void QSensor::setMaxBufferSize(int maxBufferSize)
Setzt die maximale Puffergröße auf maxBufferSize. Dies ist vom Backend aus aufzurufen.
Siehe auch maxBufferSize().
void QSensor::setSkipDuplicates(bool skipDuplicates)
Setzt das Überspringen von Duplikaten auf skipDuplicates.
Hinweis: Setter-Funktion für die Eigenschaft skipDuplicates.
Siehe auch skipDuplicates().
[signal]
void QSensor::skipDuplicatesChanged(bool skipDuplicates)
Dieses Signal wird ausgesendet, wenn sich die Eigenschaft skipDuplicates ändert.
Hinweis: Benachrichtigungssignal für die Eigenschaft skipDuplicates.
[slot]
bool QSensor::start()
Startet den Abruf von Werten aus dem Sensor. Gibt true zurück, wenn der Sensor gestartet wurde, andernfalls false.
Der Sensor kann aus verschiedenen Gründen nicht gestartet werden.
Sobald eine Anwendung einen Sensor gestartet hat, muss sie warten, bis der Sensor einen neuen Wert empfängt, bevor sie die Werte des Sensors abfragen kann. Dies liegt daran, wie der Sensor Werte vom System erhält. Sensoren fragen (im Allgemeinen) keine neuen Werte ab, sondern neue Werte werden den Sensoren nach und nach zugeführt.
Dieser Code funktioniert zum Beispiel nicht wie vorgesehen.
sensor->start(); sensor->reading()->x(); // no data available
Um korrekt zu funktionieren, sollte der Code, der auf den Messwert zugreift, sicherstellen, dass das Signal readingChanged() ausgegeben wurde.
connect(sensor, SIGNAL(readingChanged()), this, SLOT(checkReading())); sensor->start(); } void MyClass::checkReading() { sensor->reading()->x();
Siehe auch QSensor::busy.
[slot]
void QSensor::stop()
Beendet das Abrufen von Werten vom Sensor.
Dadurch wird der Sensor freigegeben, so dass andere Prozesse ihn verwenden können.
Siehe auch QSensor::busy.
Verwandte Nicht-Mitglieder
[alias]
qoutputrangelist
Dieser Typ ist als eine Liste von qoutputrange-Werten definiert.
typedef QList<qoutputrange> qoutputrangelist;
Siehe auch QList, qoutputrange, und QSensor::outputRanges.
[alias]
qrange
Dieser Typ ist als QPair definiert.
typedef QPair<int,int> qrange;
Siehe auch QPair, qrangelist, und QSensor::availableDataRates.
[alias]
qrangelist
Dieser Typ ist als eine Liste von qrange-Werten definiert.
typedef QList<qrange> qrangelist;
Siehe auch QList, qrange, und QSensor::availableDataRates.
© 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.