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.
| Parameter | Description |
|---|---|
| nmea.source | The 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.
| Scheme | Example | Description |
|---|---|---|
| socket://hostname:port | socket://localhost:12345 | Use 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:portname | serial:/dev/ttyUSB0 | Use 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.txt | Use file:/// or just full file path to specify a path to a local file. |
| file:///filepath | file:///home/user/nmealog.txt | |
| qrc:///filepath | qrc:///nmealog.txt | Use 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.