En esta página

QNmeaPositionInfoSource Class

La clase QNmeaPositionInfoSource proporciona información posicional utilizando una fuente de datos NMEA. Más...

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

Tipos Públicos

enum UpdateMode { RealTimeMode, SimulationMode }

Funciones Públicas

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

Funciones Públicas Reimplementadas

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

Ranuras Públicas

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

Funciones protegidas

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

Descripción detallada

NMEA es un protocolo de uso común para la especificación de la posición global en un momento determinado. La clase QNmeaPositionInfoSource lee datos NMEA y los utiliza para proporcionar datos de posición en forma de objetos QGeoPositionInfo.

Una instancia de QNmeaPositionInfoSource opera en RealTimeMode o SimulationMode. Estos modos permiten que los datos NMEA sean leídos desde una fuente de datos posicionales en vivo, o reproducidos para propósitos de simulación desde datos NMEA previamente grabados.

La fuente de datos NMEA se configura con setDevice().

Utilice startUpdates() para empezar a recibir actualizaciones regulares de posición y stopUpdates() para detener estas actualizaciones. Si sólo necesita actualizaciones ocasionalmente, puede llamar a requestUpdate() para solicitar una única actualización.

En ambos casos, la información de posición se recibe a través de la señal positionUpdated() y se puede acceder a la última posición conocida con lastKnownPosition().

QNmeaPositionInfoSource permite informar de la precisión de la posición horizontal y vertical. Para habilitar la notificación de la precisión de la posición se debe establecer una estimación del Error de Rango Equivalente del Usuario asociado con la fuente NMEA con setUserEquivalentRangeError().

Documentación del tipo de miembro

enum QNmeaPositionInfoSource::UpdateMode

Define los modos de actualización disponibles.

ConstanteValorDescripción
QNmeaPositionInfoSource::RealTimeMode1Los datos posicionales se leen y distribuyen desde la fuente de datos a medida que están disponibles. Utilice este modo si está utilizando una fuente de datos posicionales en tiempo real (por ejemplo, un dispositivo de hardware GPS).
QNmeaPositionInfoSource::SimulationMode2Los datos y la información horaria de la fuente de datos NMEA se utilizan para proporcionar actualizaciones posicionales a la velocidad a la que se registraron originalmente los datos. Utilice este modo si la fuente de datos contiene datos NMEA grabados previamente y desea reproducir los datos con fines de simulación.

Documentación de las funciones miembro

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

Construye una instancia de QNmeaPositionInfoSource con los datos parent y updateMode.

[virtual noexcept] QNmeaPositionInfoSource::~QNmeaPositionInfoSource()

Destruye la fuente de posición.

QIODevice *QNmeaPositionInfoSource::device() const

Devuelve la fuente de datos NMEA.

Véase también setDevice().

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

Reimplementa: QGeoPositionInfoSource::error() const.

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

Reimplementa: QGeoPositionInfoSource::lastKnownPosition(bool fromSatellitePositioningMethodsOnly) const.

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

Reimplementa una función de acceso para la propiedad: QGeoPositionInfoSource::minimumUpdateInterval.

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

Analiza una cadena de sentencia NMEA en QGeoPositionInfo.

La implementación por defecto analizará sentencias NMEA estándar. Este método debe ser reimplementado en una subclase siempre que surja la necesidad de tratar con sentencias NMEA no estándar.

El analizador lee size bytes de data y utiliza esa información para configurar posInfo y hasFix. Si hasFix se establece en false entonces posInfo puede contener sólo la hora o la fecha y la hora.

Devuelve true si la sentencia ha sido analizada con éxito, en caso contrario devuelve false y no debe modificar posInfo o hasFix.

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

Reimplementa: QGeoPositionInfoSource::requestUpdate(int timeout).

void QNmeaPositionInfoSource::setDevice(QIODevice *device)

Establece la fuente de datos NMEA en device. Si el dispositivo no está abierto, se abrirá en modo ReadOnly.

El dispositivo fuente sólo puede establecerse una vez y debe establecerse antes de llamar a startUpdates() o requestUpdate().

Nota: device debe emitir QIODevice::readyRead() para que la fuente reciba una notificación cuando los datos estén disponibles para su lectura. QNmeaPositionInfoSource no asume la propiedad del dispositivo y, por lo tanto, no lo desasigna al destruirlo.

Véase también device().

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

Reimplementa una función de acceso para la propiedad: QGeoPositionInfoSource::updateInterval.

void QNmeaPositionInfoSource::setUserEquivalentRangeError(double uere)

Establece el Error de Alcance Equivalente del Usuario (UERE) en uere. El UERE se utiliza para calcular una estimación de la precisión de la información de posición comunicada por la fuente de información de posición. El UERE debe establecerse en un valor apropiado para el dispositivo GPS que generó el flujo NMEA.

El valor verdadero de UERE se calcula a partir de múltiples fuentes de error, incluidos los errores introducidos por los satélites y los retrasos en la propagación de la señal a través de la atmósfera, así como los errores introducidos por el equipo GPS receptor. Para más detalles sobre la precisión del GPS, véase Sam J. Wormley, GPS Errors & Estimating Your Reveiver's Accuracy.

Un valor típico para UERE es aproximadamente 5,1.

Véase también userEquivalentRangeError().

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

Reimplementa: QGeoPositionInfoSource::startUpdates().

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

Reimplementa: QGeoPositionInfoSource::stopUpdates().

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

Reimplementa: QGeoPositionInfoSource::supportedPositioningMethods() const.

QNmeaPositionInfoSource::UpdateMode QNmeaPositionInfoSource::updateMode() const

Devuelve el modo de actualización.

double QNmeaPositionInfoSource::userEquivalentRangeError() const

Devuelve el Error de Rango Equivalente de Usuario (UERE) actual. El UERE se utiliza para calcular una estimación de la precisión de la información de posición proporcionada por la fuente de información de posición. El valor por defecto es NaN, lo que significa que no se proporcionará ninguna información de precisión.

Véase también 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.