En esta página

Qt Positioning Plugin NMEA

Visión general

Incluido en Qt Positioning hay un plugin de posición que analiza las sentencias NMEA en actualizaciones de posición. Este plugin puede usar puerto serie, socket o archivo como fuente.

Este plugin puede ser cargado usando el nombre de proveedor nmea.

Parámetros

La siguiente tabla lista los parámetros que pueden ser pasados al plugin nmea.

ParámetroDescripción
nmea.sourceLa fuente que se utilizará para obtener los datos NMEA.
nmea.baudrateLa velocidad en baudios que utilizará la conexión del puerto serie, expresada con un número entero positivo. Típicamente debería ser uno de los valores del enum QSerialPort::BaudRate. Si el parámetro no se especifica o no contiene un número entero positivo, se utiliza el valor por defecto de 4800.
nmea.satellite_info_simulation_intervalEl intervalo de lectura de los datos de información de satélite del archivo en modo de simulación.

Diferentes fuentes requieren diferentes formas de proporcionar los datos. La siguiente tabla enumera las diferentes formas de proporcionar el parámetro nmea.source para las entradas de socket, puerto serie y archivo.

EsquemaEjemploDescripción
socket://nombrehost:puertosocket://localhost:12345Utilice la palabra clave socket: para especificar que desea obtener los datos nmea del socket. Se creará un socket TCP, que intentará conectarse al host hostname utilizando el puerto port. Si la conexión tiene éxito, se espera recibir un flujo de texto NMEA del servidor.
serial:nombredelpuertoserial:/dev/ttyUSB0Utilice la palabra clave serial: para especificar que desea obtener los datos nmea del puerto serie. El plugin intentará establecer una conexión con el puerto portname con una tasa de baudios por defecto = 4800 Bd (el valor de la tasa de baudios se puede especificar usando el parámetro nmea.baudrate ). Si la conexión tiene éxito, se espera recibir un flujo de texto NMEA desde el puerto serie. Si usas serial: sin ningún nombre de puerto, el plugin intentará encontrar uno de los dispositivos serie bien conocidos usando el identificador de vendedor. Tenga en cuenta, sin embargo, que esta no es una forma recomendada de utilizar la conexión del puerto serie, ya que la lista de dispositivos conocidos es pequeña y lo más probable es que no incluya su hardware.
serial:COM1
serial:
ruta de archivo/home/user/nmealog.txtUtilice file:/// o simplemente la ruta de archivo completa para especificar una ruta a un archivo local.
file:///rutaarchivofile:///home/user/nmealog.txt
qrc:///rutaarchivoqrc:///nmealog.txtUtilice el prefijo qrc:/// para especificar una ruta a un archivo en los recursos de la aplicación.

Nota: Si no se especifica el parámetro nmea.source, el complemento intentará localizar uno de los dispositivos serie conocidos (como si se hubiera especificado nmea.source = serial: ).

Ejemplo de uso de la fuente de posición

Los siguientes ejemplos muestran cómo crear un nmea PositionSource utilizando diferentes fuentes de datos.

QML

// text file
PositionSource {
    name: "nmea"
    PluginParameter { name: "nmea.source"; value: "qrc:///nmealog.txt" }
}

// socket
PositionSource {
    name: "nmea"
    PluginParameter { name: "nmea.source"; value: "socket://localhost:22222" }
}

// serial port
PositionSource {
    name: "nmea"
    PluginParameter { name: "nmea.source"; value: "serial:/dev/ttyACM0" }
    PluginParameter { name: "nmea.baudrate"; value: 4800 }
}

C++

// text file
QVariantMap params;
params["nmea.source"] = "qrc:///nmealog.txt";
QGeoPositionInfoSource *textPositionSource = QGeoPositionInfoSource::createSource("nmea", params, this);

// socket
params["nmea.source"] = "socket://localhost:22222";
QGeoPositionInfoSource *socketPositionSource = QGeoPositionInfoSource::createSource("nmea", params, this);

// serial port
params["nmea.source"] = "serial:/dev/ttyACM0";
params["nmea.baudrate"] = 4800;
QGeoPositionInfoSource *serialPositionSource = QGeoPositionInfoSource::createSource("nmea", params, this);

Nota: Una vez creado un PositionSource, no se puede reconfigurar para utilizar otro tipo de fuente de datos.

Ejemplo de uso de una fuente de información de satélite

Además de la información de posición, el plugin nmea también es capaz de proporcionar información de satélite.

QML

// serial port
SatelliteSource {
    name: "nmea"
    PluginParameter { name: "nmea.source"; value: "serial:/dev/ttyUSB0" }
    PluginParameter { name: "nmea.baudrate"; value: 9600 }
}

// socket
SatelliteSource {
    name: "nmea"
    PluginParameter { name: "nmea.source"; value: "socket://localhost:22222" }
}

C++

// serial port
QVariantMap parameters;
parameters["nmea.source"] = "serial:/dev/ttyUSB0";
params["nmea.baudrate"] = 9600;
QGeoSatelliteInfoSource *serialSource = QGeoSatelliteInfoSource::createSource("nmea", parameters, this);

// socket
parameters["nmea.source"] = "socket://localhost:22222";
QGeoSatelliteInfoSource *socketSource = QGeoSatelliteInfoSource::createSource("nmea", parameters, this);

Configuración de la velocidad de simulación personalizada

Si desea utilizar QGeoSatelliteInfoSource para leer archivos con flujo NMEA, también puede utilizar el parámetro adicional "nmea.satellite_info_simulation_interval". Este parámetro se utiliza para especificar la velocidad de reproducción (en milisegundos) de los mensajes de información de satélite. La frecuencia mínima permitida se especifica en minimumUpdateInterval(). Si se especifica un valor menor, se ignorará. Si no se especifica ningún valor, el valor por defecto es qMax(100, minimumUpdateInterval()). En tiempo de ejecución se puede utilizar el método QNmeaSatelliteInfoSource::setBackendProperty() para actualizar este parámetro.

// file
QVariantMap parameters;
parameters["nmea.source"] = "qrc:///nmealog.txt";
parameters["nmea.satellite_info_simulation_interval"] = 1000;
QGeoSatelliteInfoSource *fileSource = QGeoSatelliteInfoSource::createSource("nmea", parameters, this);

Este parámetro no es aplicable a la fuente de posición porque el protocolo NMEA ya tiene marcas de tiempo en los mensajes de posición. Estas marcas de tiempo se utilizan para simular la tasa correcta de mensajes mientras se utiliza QGeoPositionInfoSource con un archivo como fuente de datos.

Nota: Una vez creado QGeoSatelliteInfoSource, no puede ser reconfigurado para usar otro tipo de fuente de datos.

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