Qt Positioning NMEA plugin

Overview

Included with Qt Positioning is a position plugin which parses NMEA sentences into position updates. This plugin can use serial port, socket or file as a source.

This plugin can be loaded by using the provider name nmea.

Parameters

The following table lists parameters that can be passed to the nmea plugin.

ParameterDescription
nmea.sourceThe source that will be used to get NMEA data.

Different sources require different ways of providing the data. The following table lists different ways of providing nmea.source parameter for socket, serial port and file inputs.

SchemeExampleDescription
socket://hostname:portsocket://localhost:12345Use socket: keyword to specify that you want to get the nmea data from the socket. A TCP socket will be created, which will try to connect to host hostname using port port. Upon successful connection a text NMEA stream is expected to be received from the server.
serial:portnameserial:/dev/ttyUSB0Use serial: keyword to specify that you want to get the nmea data from the serial port. The plugin will try to establish a connection to port portname with baudrate = 4800 Bd. Upon successful connection a text NMEA stream is expected to be received from the serial port. If you use serial: without any port name, the plugin will try to find one of the well known serial devices using vendor identifier. Note however that this is not a recommended way of using the serial port connection, as the list of well-known devices is small and most probably does not include your hardware.
serial:COM1
serial:
filepath/home/user/nmealog.txtUse file:/// or just full file path to specify a path to a local file.
file:///filepathfile:///home/user/nmealog.txt
qrc:///filepathqrc:///nmealog.txtUse qrc:/// prefix to specify a path to a file in the application resources.

Note: If nmea.source parameter is not specified, the plugin will try to locate one of the well-known serial devices (as if nmea.source = serial: was specified).

Parameter Usage Example

The following examples show how to create a nmea PositionSource using different data sources.

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" }
 }

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";
 QGeoPositionInfoSource *serialPositionSource = QGeoPositionInfoSource::createSource("nmea", params, this);

Note: Once a PositionSource is created, it can't be reconfigured to use other type of source data.