QNmeaPositionInfoSource Class
Die Klasse QNmeaPositionInfoSource liefert Positionsinformationen unter Verwendung einer NMEA-Datenquelle. Mehr...
Kopfzeile: | #include <QNmeaPositionInfoSource> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Positioning) target_link_libraries(mytarget PRIVATE Qt6::Positioning) |
qmake: | QT += positioning |
Vererbt: | 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 |
Reimplementierte ö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) |
Detaillierte Beschreibung
NMEA ist ein häufig verwendetes Protokoll für die Angabe der eigenen globalen Position zu einem bestimmten Zeitpunkt. Die Klasse QNmeaPositionInfoSource liest NMEA-Daten und verwendet sie, um Positionsdaten in Form von QGeoPositionInfo -Objekten bereitzustellen.
Eine QNmeaPositionInfoSource-Instanz arbeitet entweder in RealTimeMode oder SimulationMode. Diese Modi ermöglichen es, NMEA-Daten entweder aus einer Live-Quelle von Positionsdaten zu lesen oder zu Simulationszwecken aus zuvor aufgezeichneten NMEA-Daten wiederzugeben.
Die Quelle der NMEA-Daten wird mit setDevice() eingestellt.
Verwenden Sie startUpdates(), um regelmäßige Positionsaktualisierungen zu erhalten, und stopUpdates(), um diese Aktualisierungen zu stoppen. Wenn Sie nur gelegentlich Aktualisierungen benötigen, können Sie requestUpdate() aufrufen, um eine einzelne Aktualisierung anzufordern.
In beiden Fällen wird die Positionsinformation über das Signal positionUpdated() empfangen und die letzte 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 eine Schätzung des mit der NMEA-Quelle verbundenen User Equivalent Range Error mit setUserEquivalentRangeError() gesetzt werden.
Dokumentation der Mitgliedstypen
enum QNmeaPositionInfoSource::UpdateMode
Legt die verfügbaren Aktualisierungsmodi fest.
Konstante | Wert | Beschreibung |
---|---|---|
QNmeaPositionInfoSource::RealTimeMode | 1 | Positionsdaten werden von der Datenquelle gelesen und verteilt, sobald sie verfügbar sind. Verwenden Sie diesen Modus, wenn Sie eine Live-Quelle für Positionsdaten verwenden (z. B. ein GPS-Hardwaregerät). |
QNmeaPositionInfoSource::SimulationMode | 2 | Die Daten und Zeitinformationen 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)
Konstruiert eine QNmeaPositionInfoSource-Instanz mit der angegebenen parent und updateMode.
[virtual noexcept]
QNmeaPositionInfoSource::~QNmeaPositionInfoSource()
Zerstört die Positionsquelle.
QIODevice *QNmeaPositionInfoSource::device() const
Gibt die NMEA-Datenquelle zurück.
Siehe auch setDevice().
[override virtual]
QGeoPositionInfoSource::Error QNmeaPositionInfoSource::error() const
Reimplements: QGeoPositionInfoSource::error() const.
[override virtual]
QGeoPositionInfo QNmeaPositionInfoSource::lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const
Reimplements: QGeoPositionInfoSource::lastKnownPosition(bool fromSatellitePositioningMethodsOnly) const.
[override virtual]
int QNmeaPositionInfoSource::minimumUpdateInterval() const
Reimplantiert eine Zugriffsfunktion für die Eigenschaft: QGeoPositionInfoSource::minimumUpdateInterval.
[virtual protected]
bool QNmeaPositionInfoSource::parsePosInfoFromNmeaData(const char *data, int size, QGeoPositionInfo *posInfo, bool *hasFix)
Analysiert eine NMEA-Satzfolge in eine QGeoPositionInfo.
Die Standardimplementierung parst Standard-NMEA-Sätze. Diese Methode sollte in einer Unterklasse neu implementiert werden, wenn die Notwendigkeit besteht, nicht standardisierte NMEA-Sätze zu verarbeiten.
Der Parser liest size Bytes von data und verwendet diese Informationen, um posInfo und hasFix zu erstellen. Wenn hasFix auf false gesetzt ist, kann posInfo nur die Uhrzeit oder das Datum und die Uhrzeit enthalten.
Gibt true zurück, wenn der Satz erfolgreich geparst wurde, andernfalls gibt er false zurück und sollte posInfo oder hasFix nicht verändern.
[override virtual slot]
void QNmeaPositionInfoSource::requestUpdate(int msec = 0)
Reimplements: QGeoPositionInfoSource::requestUpdate(int timeout).
void QNmeaPositionInfoSource::setDevice(QIODevice *device)
Setzt die NMEA-Datenquelle auf device. Wenn das Gerät nicht geöffnet ist, wird es im Modus ReadOnly geöffnet.
Das Quellgerät kann nur einmal eingestellt werden und muss vor dem Aufruf von startUpdates() oder requestUpdate() eingestellt werden.
Hinweis: device muss QIODevice::readyRead() senden, damit die Quelle benachrichtigt wird, wenn Daten zum Lesen verfügbar sind. QNmeaPositionInfoSource übernimmt nicht den Besitz des Geräts und gibt es daher bei Zerstörung nicht frei.
Siehe auch device().
[override virtual]
void QNmeaPositionInfoSource::setUpdateInterval(int msec)
Reimplantiert eine Zugriffsfunktion für die Eigenschaft: QGeoPositionInfoSource::updateInterval.
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 Positionsinfoquelle gemeldeten Positionsdaten verwendet. Der UERE-Wert sollte auf einen Wert gesetzt werden, der für das GPS-Gerät geeignet ist, das den NMEA-Strom erzeugt hat.
Der tatsächliche UERE-Wert wird aus mehreren Fehlerquellen berechnet, einschließlich der von den Satelliten verursachten Fehler und der Verzögerungen bei der Signalausbreitung durch die Atmosphäre sowie der vom empfangenden GPS-Gerät verursachten Fehler. Einzelheiten zur GPS-Genauigkeit finden Sie in Sam J. Wormley, GPS Errors & Estimating Your Reveiver's Accuracy.
Ein typischer Wert für UERE ist ungefähr 5,1.
Siehe auch userEquivalentRangeError().
[override virtual slot]
void QNmeaPositionInfoSource::startUpdates()
Reimplements: QGeoPositionInfoSource::startUpdates().
[override virtual slot]
void QNmeaPositionInfoSource::stopUpdates()
Reimplements: QGeoPositionInfoSource::stopUpdates().
[override virtual]
QGeoPositionInfoSource::PositioningMethods QNmeaPositionInfoSource::supportedPositioningMethods() const
Reimplements: 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 für die Berechnung einer Schätzung der Genauigkeit der von der Positionsinformationsquelle gemeldeten Positionsdaten verwendet. Der Standardwert ist NaN, was bedeutet, dass keine Genauigkeitsangaben gemacht werden.
Siehe auch setUserEquivalentRangeError().
© 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.