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.
| Konstante | Wert | Beschreibung |
|---|---|---|
QNmeaPositionInfoSource::RealTimeMode | 1 | Positionsdaten 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::SimulationMode | 2 | Die 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.