Auf dieser Seite

QNmeaPositionInfoSource Class

Die Klasse „QNmeaPositionInfoSource“ stellt Positionsdaten über eine NMEA-Datenquelle bereit. Mehr...

Header: #include <QNmeaPositionInfoSource>
CMake: find_package(Qt6 REQUIRED COMPONENTS Positioning)
target_link_libraries(mytarget PRIVATE Qt6::Positioning)
qmake: QT += positioning
Erbt von: QGeoPositionInfoSource

Öffentliche Typen

enum UpdateMode { RealTimeMode, SimulationMode }

Öffentliche Funktionen

QNmeaPositionInfoSource(QNmeaPositionInfoSource::UpdateMode updateMode, QObject *parent = nullptr)
virtual ~QNmeaPositionInfoSource()
QIODevice *device() const
void setDevice(QIODevice *device)
void setUserEquivalentRangeError(double uere)
QNmeaPositionInfoSource::UpdateMode updateMode() const
double userEquivalentRangeError() const

Neu implementierte öffentliche Funktionen

virtual QGeoPositionInfoSource::Error error() const override
virtual QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const override
virtual int minimumUpdateInterval() const override
virtual void setUpdateInterval(int msec) override
virtual QGeoPositionInfoSource::PositioningMethods supportedPositioningMethods() const override

Öffentliche Slots

virtual void requestUpdate(int msec = 0) override
virtual void startUpdates() override
virtual void stopUpdates() override

Geschützte Funktionen

virtual bool parsePosInfoFromNmeaData(const char *data, int size, QGeoPositionInfo *posInfo, bool *hasFix)

Ausführliche Beschreibung

NMEA ist ein weit verbreitetes Protokoll zur Angabe der eigenen globalen Position zu einem bestimmten Zeitpunkt. Die Klasse „QNmeaPositionInfoSource“ liest NMEA-Daten ein und stellt anhand dieser Positionsdaten in Form von „ QGeoPositionInfo “-Objekten bereit.

Eine Instanz von `QNmeaPositionInfoSource` arbeitet entweder im Modus „ RealTimeMode “ oder „ SimulationMode “. Diese Modi ermöglichen es, NMEA-Daten entweder aus einer Live-Quelle von Positionsdaten zu lesen oder sie zu Simulationszwecken aus zuvor aufgezeichneten NMEA-Daten wiederzugeben.

Die Quelle der NMEA-Daten wird mit ` setDevice()` festgelegt.

Verwenden Sie ` startUpdates()` (), um den Empfang regelmäßiger Positionsaktualisierungen zu starten, und ` stopUpdates()` (), um diese Aktualisierungen zu beenden. Wenn Sie nur gelegentlich Aktualisierungen benötigen, können Sie ` requestUpdate()` () aufrufen, um eine einzelne Aktualisierung anzufordern.

In beiden Fällen werden die Positionsdaten über das Signal „ positionUpdated()“ empfangen, und die zuletzt bekannte Position kann mit „ lastKnownPosition()“ abgerufen werden.

QNmeaPositionInfoSource unterstützt die Meldung der Genauigkeit der horizontalen und vertikalen Position. Um die Meldung der Positionsgenauigkeit zu aktivieren, muss mit „ setUserEquivalentRangeError()“ ein Schätzwert für den mit der NMEA-Quelle verbundenen „User Equivalent Range Error“ festgelegt werden.

Dokumentation zum Mitgliedstyp

enum QNmeaPositionInfoSource::UpdateMode

Definiert die verfügbaren Aktualisierungsmodi.

KonstanteWertBeschreibung
QNmeaPositionInfoSource::RealTimeMode1Positionsdaten werden aus der Datenquelle gelesen und verteilt, sobald sie verfügbar sind. Verwenden Sie diesen Modus, wenn Sie eine Live-Quelle für Positionsdaten nutzen (z. B. ein GPS-Hardwaregerät).
QNmeaPositionInfoSource::SimulationMode2Die Datums- und Zeitangaben in den NMEA-Quelldaten werden verwendet, um Positionsaktualisierungen mit der Rate bereitzustellen, mit der die Daten ursprünglich aufgezeichnet wurden. Verwenden Sie diesen Modus, wenn die Datenquelle zuvor aufgezeichnete NMEA-Daten enthält und Sie die Daten zu Simulationszwecken wiedergeben möchten.

Dokumentation der Mitgliedsfunktionen

[explicit] QNmeaPositionInfoSource::QNmeaPositionInfoSource(QNmeaPositionInfoSource::UpdateMode updateMode, QObject *parent = nullptr)

Erstellt eine Instanz von `QNmeaPositionInfoSource` mit den angegebenen Werten für ` parent ` und ` updateMode`.

[virtual noexcept] QNmeaPositionInfoSource::~QNmeaPositionInfoSource()

Löscht die Positionsquelle.

QIODevice *QNmeaPositionInfoSource::device() const

Gibt die NMEA-Datenquelle zurück.

Siehe auch „ setDevice()“.

[override virtual] QGeoPositionInfoSource::Error QNmeaPositionInfoSource::error() const

Implementiert: ` QGeoPositionInfoSource::error()` const.

[override virtual] QGeoPositionInfo QNmeaPositionInfoSource::lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const

Implementiert erneut: ` QGeoPositionInfoSource::lastKnownPosition` (bool fromSatellitePositioningMethodsOnly) const.

[override virtual] int QNmeaPositionInfoSource::minimumUpdateInterval() const

Implementiert eine Zugriffsfunktion für die Eigenschaft „ QGeoPositionInfoSource::minimumUpdateInterval “ neu.

[virtual protected] bool QNmeaPositionInfoSource::parsePosInfoFromNmeaData(const char *data, int size, QGeoPositionInfo *posInfo, bool *hasFix)

Analysiert eine NMEA-Satzzeichenfolge und wandelt sie in ein ` QGeoPositionInfo` um.

Die Standardimplementierung analysiert standardmäßige NMEA-Sätze. Diese Methode sollte in einer Unterklasse neu implementiert werden, sobald die Notwendigkeit besteht, nicht standardmäßige NMEA-Sätze zu verarbeiten.

Der Parser liest die Bytes von „ size “ aus „ data “ ein und verwendet diese Informationen, um „ posInfo “ und „ hasFix “ einzurichten. Ist „ hasFix “ auf „false“ gesetzt, darf „ posInfo “ nur die Uhrzeit oder das Datum und die Uhrzeit enthalten.

Gibt „true“ zurück, wenn der Satz erfolgreich analysiert wurde; andernfalls gibt die Funktion „false“ zurück und sollte posInfo oder hasFix nicht ändern.

[override virtual slot] void QNmeaPositionInfoSource::requestUpdate(int msec = 0)

Implementiert: ` QGeoPositionInfoSource::requestUpdate(int timeout)`.

void QNmeaPositionInfoSource::setDevice(QIODevice *device)

Legt die NMEA-Datenquelle auf „ device “ fest. Ist das Gerät noch nicht geöffnet, wird es im Modus „ ReadOnly “ geöffnet.

Das Quellgerät kann nur einmal festgelegt werden und muss vor dem Aufruf von ` startUpdates()` oder ` requestUpdate()` festgelegt werden.

Hinweis: Die Funktion „ device “ muss „ QIODevice::readyRead()“ auslösen, damit die Quelle benachrichtigt wird, sobald Daten zum Lesen verfügbar sind. „ QNmeaPositionInfoSource “ übernimmt nicht die Verantwortung für das Gerät und gibt es daher bei der Zerstörung nicht frei.

Siehe auch „ device()“.

[override virtual] void QNmeaPositionInfoSource::setUpdateInterval(int msec)

Implementiert eine Zugriffsfunktion für die Eigenschaft „ QGeoPositionInfoSource::updateInterval “ neu.

void QNmeaPositionInfoSource::setUserEquivalentRangeError(double uere)

Setzt den „User Equivalent Range Error“ (UERE) auf „ uere “. Der UERE wird zur Berechnung einer Schätzung der Genauigkeit der von der Positionsdatenquelle gemeldeten Positionsinformationen verwendet. Der UERE sollte auf einen Wert eingestellt werden, der für das GPS-Gerät geeignet ist, das den NMEA-Datenstrom erzeugt hat.

Der tatsächliche UERE-Wert wird aus mehreren Fehlerquellen berechnet, darunter Fehler, die durch die Satelliten und Signalausbreitungsverzögerungen in der Atmosphäre verursacht werden, sowie Fehler, die durch die empfangende GPS-Ausrüstung entstehen. Weitere Informationen zur GPS-Genauigkeit finden Sie bei Sam J. Wormley, „GPS Errors & Estimating Your Receiver’s Accuracy“.

Ein typischer Wert für UERE liegt bei etwa 5,1.

Siehe auch „ userEquivalentRangeError“ ().

[override virtual slot] void QNmeaPositionInfoSource::startUpdates()

Implementiert: QGeoPositionInfoSource::startUpdates().

[override virtual slot] void QNmeaPositionInfoSource::stopUpdates()

Implementiert: QGeoPositionInfoSource::stopUpdates().

[override virtual] QGeoPositionInfoSource::PositioningMethods QNmeaPositionInfoSource::supportedPositioningMethods() const

Implementiert erneut: ` QGeoPositionInfoSource::supportedPositioningMethods()` const.

QNmeaPositionInfoSource::UpdateMode QNmeaPositionInfoSource::updateMode() const

Gibt den Aktualisierungsmodus zurück.

double QNmeaPositionInfoSource::userEquivalentRangeError() const

Gibt den aktuellen „User Equivalent Range Error“ (UERE) zurück. Der UERE wird zur Berechnung einer Schätzung der Genauigkeit der von der Positionsdatenquelle gemeldeten Positionsdaten verwendet. Der Standardwert ist „NaN“, was bedeutet, dass keine Genauigkeitsangaben bereitgestellt werden.

Siehe auch ` setUserEquivalentRangeError()`.

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