Sur cette page

QNmeaPositionInfoSource Class

La classe QNmeaPositionInfoSource fournit des informations sur la position à l'aide d'une source de données NMEA. Plus d'informations...

En-tête : #include <QNmeaPositionInfoSource>
CMake : find_package(Qt6 REQUIRED COMPONENTS Positioning)
target_link_libraries(mytarget PRIVATE Qt6::Positioning)
qmake : QT += positioning
Héritages : QGeoPositionInfoSource

Types publics

enum UpdateMode { RealTimeMode, SimulationMode }

Fonctions publiques

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

Fonctions publiques réimplémentées

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

Emplacements publics

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

Fonctions protégées

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

Description détaillée

NMEA est un protocole couramment utilisé pour spécifier la position globale d'une personne à un moment donné. La classe QNmeaPositionInfoSource lit les données NMEA et les utilise pour fournir des données de position sous la forme d'objets QGeoPositionInfo.

Une instance de QNmeaPositionInfoSource fonctionne selon les modes RealTimeMode ou SimulationMode. Ces modes permettent de lire les données NMEA à partir d'une source de données de position en direct ou de les rejouer à des fins de simulation à partir de données NMEA précédemment enregistrées.

La source des données NMEA est définie à l'aide de setDevice().

Utilisez startUpdates() pour commencer à recevoir des mises à jour régulières de la position et stopUpdates() pour arrêter ces mises à jour. Si vous ne souhaitez que des mises à jour occasionnelles, vous pouvez appeler requestUpdate() pour demander une seule mise à jour.

Dans les deux cas, les informations sur la position sont reçues via le signal positionUpdated() et la dernière position connue est accessible via lastKnownPosition().

QNmeaPositionInfoSource permet de signaler la précision de la position horizontale et verticale. Pour activer la déclaration de la précision de la position, une estimation de l'erreur de portée équivalente à l'utilisateur associée à la source NMEA doit être définie à l'aide de setUserEquivalentRangeError().

Documentation sur les types de membres

enum QNmeaPositionInfoSource::UpdateMode

Définit les modes de mise à jour disponibles.

ConstanteValeurDescription du mode de mise à jour
QNmeaPositionInfoSource::RealTimeMode1Les données de position sont lues et distribuées à partir de la source de données dès qu'elles sont disponibles. Utilisez ce mode si vous utilisez une source de données de position en temps réel (par exemple, un dispositif matériel GPS).
QNmeaPositionInfoSource::SimulationMode2Les données et les informations temporelles contenues dans les données de la source NMEA sont utilisées pour fournir des mises à jour de position à la vitesse à laquelle les données ont été enregistrées à l'origine. Utilisez ce mode si la source de données contient des données NMEA précédemment enregistrées et que vous souhaitez les rejouer à des fins de simulation.

Documentation des fonctions membres

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

Construit une instance de QNmeaPositionInfoSource avec les données parent et updateMode.

[virtual noexcept] QNmeaPositionInfoSource::~QNmeaPositionInfoSource()

Détruit la source de position.

QIODevice *QNmeaPositionInfoSource::device() const

Renvoie la source de données NMEA.

Voir également setDevice().

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

Réimplémente : QGeoPositionInfoSource::error() const.

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

Réimplémente : QGeoPositionInfoSource::lastKnownPosition(bool fromSatellitePositioningMethodsOnly) const.

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

Réimplémente une fonction d'accès à la propriété : QGeoPositionInfoSource::minimumUpdateInterval.

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

Analyse une chaîne de phrases NMEA en QGeoPositionInfo.

L'implémentation par défaut analyse les phrases NMEA standard. Cette méthode doit être réimplémentée dans une sous-classe chaque fois qu'il est nécessaire de traiter des phrases NMEA non standard.

L'analyseur lit size octets à partir de data et utilise ces informations pour configurer posInfo et hasFix. Si hasFix est défini comme faux, posInfo peut contenir uniquement l'heure ou la date et l'heure.

Retourne vrai si la phrase a été analysée avec succès, sinon retourne faux et ne doit pas modifier posInfo ou hasFix.

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

Réimplémente : QGeoPositionInfoSource::requestUpdate(int timeout).

void QNmeaPositionInfoSource::setDevice(QIODevice *device)

Définit la source de données NMEA sur device. Si le dispositif n'est pas ouvert, il le sera en mode ReadOnly.

Le dispositif source ne peut être défini qu'une seule fois et doit l'être avant d'appeler startUpdates() ou requestUpdate().

Remarque : device doit émettre QIODevice::readyRead() pour que la source soit informée de la disponibilité des données en lecture. QNmeaPositionInfoSource n'assume pas la propriété du périphérique et ne le désalloue donc pas en cas de destruction.

Voir également device().

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

Réimplémente une fonction d'accès à la propriété : QGeoPositionInfoSource::updateInterval.

void QNmeaPositionInfoSource::setUserEquivalentRangeError(double uere)

Définit l'erreur de portée équivalente de l'utilisateur (UERE) à uere. L'UERE est utilisée pour calculer une estimation de la précision des informations de position rapportées par la source d'informations de position. L'UERE doit être réglé sur une valeur appropriée pour l'appareil GPS qui a généré le flux NMEA.

La valeur réelle de l'UERE est calculée à partir de plusieurs sources d'erreur, notamment les erreurs introduites par les satellites et les retards de propagation du signal dans l'atmosphère, ainsi que les erreurs introduites par l'équipement GPS récepteur. Pour plus de détails sur la précision du GPS, voir Sam J. Wormley, GPS Errors & Estimating Your Reveiver's Accuracy.

Une valeur typique pour UERE est d'environ 5,1.

Voir également userEquivalentRangeError().

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

Réimplémente : QGeoPositionInfoSource::startUpdates().

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

Réimplémente : QGeoPositionInfoSource::stopUpdates().

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

Réimplémente : QGeoPositionInfoSource::supportedPositioningMethods() const.

QNmeaPositionInfoSource::UpdateMode QNmeaPositionInfoSource::updateMode() const

Renvoie le mode de mise à jour.

double QNmeaPositionInfoSource::userEquivalentRangeError() const

Renvoie l'erreur de portée équivalente de l'utilisateur (UERE) actuelle. L'UERE est utilisée pour calculer une estimation de la précision des informations de position rapportées par la source d'informations de position. La valeur par défaut est NaN, ce qui signifie qu'aucune information de précision ne sera fournie.

Voir également 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.