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ámetro | Descripción |
|---|---|
| nmea.source | La fuente que se utilizará para obtener los datos NMEA. |
| nmea.baudrate | La 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_interval | El 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.
| Esquema | Ejemplo | Descripción |
|---|---|---|
| socket://nombrehost:puerto | socket://localhost:12345 | Utilice 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:nombredelpuerto | serial:/dev/ttyUSB0 | Utilice 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.txt | Utilice file:/// o simplemente la ruta de archivo completa para especificar una ruta a un archivo local. |
| file:///rutaarchivo | file:///home/user/nmealog.txt | |
| qrc:///rutaarchivo | qrc:///nmealog.txt | Utilice 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.