Auf dieser Seite

Qt Positioning NMEA-Plugin

Übersicht

Im Lieferumfang von „ Qt Positioning “ ist ein Positions-Plugin enthalten, das NMEA-Sätze in Positionsaktualisierungen parst. Dieses Plugin kann eine serielle Schnittstelle, einen Socket oder eine Datei als Quelle verwenden.

Dieses Plugin kann unter Verwendung des Anbieternamens „nmea“ geladen werden.

Parameter

Die folgende Tabelle listet die Parameter auf, die an das NMEA-Plugin übergeben werden können.

ParameterBeschreibung
nmea.sourceDie Quelle, aus der NMEA-Daten abgerufen werden sollen.
nmea.baudrateDie für die serielle Schnittstellenverbindung zu verwendende Baudrate, ausgedrückt als positive Ganzzahl. In der Regel sollte es sich um einen der Werte aus der Aufzählung „ QSerialPort::BaudRate “ handeln. Wenn der Parameter nicht angegeben ist oder keine positive Ganzzahl enthält, wird der Standardwert „ 4800 “ verwendet.
nmea.satellite_info_simulation_intervalDas Intervall für das Einlesen von Satellitendaten aus der Datei im Simulationsmodus.

Verschiedene Quellen erfordern unterschiedliche Methoden zur Bereitstellung der Daten. Die folgende Tabelle listet verschiedene Möglichkeiten zur Angabe des Parameters „ nmea.source “ für Socket-, serielle Schnittstellen- und Dateieingaben auf.

SchemaBeispielBeschreibung
socket://hostname:portsocket://localhost:12345Verwenden Sie das Schlüsselwort `socket:`, um anzugeben, dass Sie die NMEA-Daten über den Socket beziehen möchten. Es wird ein TCP-Socket erstellt, der versucht, über den Port ` port` eine Verbindung zum Host ` hostname ` herzustellen. Bei erfolgreicher Verbindung wird erwartet, dass ein NMEA-Textstrom vom Server empfangen wird.
serial:portnameserial:/dev/ttyUSB0Verwenden Sie das Schlüsselwort „serial:“, um anzugeben, dass Sie die NMEA-Daten über den seriellen Anschluss abrufen möchten. Das Plugin versucht, eine Verbindung zum Port portname mit einer Standard-Baudrate von 4800 Bd herzustellen (der Baudratenwert kann über den Parameter „nmea.baudrate“ festgelegt werden). Bei erfolgreicher Verbindung wird erwartet, dass ein NMEA-Textstrom vom seriellen Anschluss empfangen wird. Wenn Sie „serial:“ ohne Angabe eines Portnamens verwenden, versucht das Plugin, anhand der Hersteller-ID eines der bekannten seriellen Geräte zu finden. Beachten Sie jedoch, dass dies keine empfohlene Vorgehensweise für die Nutzung der seriellen Schnittstelle ist, da die Liste der bekannten Geräte klein ist und Ihre Hardware höchstwahrscheinlich nicht enthalten ist.
serial:COM1
serial:
filepath/home/user/nmealog.txtVerwenden Sie „file:///“ oder einfach den vollständigen Dateipfad, um einen Pfad zu einer lokalen Datei anzugeben.
file:///filepathfile:///home/user/nmealog.txt
qrc:///filepathqrc:///nmealog.txtVerwenden Sie das Präfix „qrc:///“, um einen Pfad zu einer Datei in den Anwendungsressourcen anzugeben.

Hinweis: Wenn der Parameter „ nmea.source “ nicht angegeben ist, versucht das Plugin, eines der bekannten seriellen Geräte zu finden (als ob „ nmea.source = serial: “ angegeben wäre).

Warnung: Das Schema „ socket:// “ unterstützt nur unverschlüsselte Verbindungen. Daher eignet es sich nur für die Verwendung auf einem Host oder über ein vertrauenswürdiges Netzwerk.

Anwendungsbeispiel für Positionsquellen

Die folgenden Beispiele zeigen, wie ein NMEA- PositionSource -Objekt unter Verwendung verschiedener Datenquellen erstellt wird.

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);

Hinweis: Sobald ein „ PositionSource “ erstellt wurde, kann er nicht mehr für die Verwendung anderer Datenquellen umkonfiguriert werden.

Anwendungsbeispiel für eine Satelliteninformationsquelle

Neben den Positionsdaten kann das NMEA -Plugin auch Satellitendaten bereitstellen.

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);

Einstellung der benutzerdefinierten Simulationsgeschwindigkeit

Wenn Sie die Funktion „ QGeoSatelliteInfoSource “ zum Einlesen einer Datei mit NMEA-Datenstrom verwenden möchten, können Sie zusätzlich den Parameter „ "nmea.satellite_info_simulation_interval" “ nutzen. Mit diesem Parameter legen Sie die Wiedergabegeschwindigkeit (in Millisekunden) für die Satelliteninformationsmeldungen fest. Die minimal zulässige Frequenz wird durch ` minimumUpdateInterval()` festgelegt. Wenn Sie einen kleineren Wert angeben, wird dieser ignoriert. Wird kein Wert angegeben, gilt der Standardwert ` qMax(100, minimumUpdateInterval())`. Zur Laufzeit kann die Methode ` QNmeaSatelliteInfoSource::setBackendProperty()` verwendet werden, um diesen Parameter zu aktualisieren.

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

Dieser Parameter gilt nicht für Positionsdatenquellen, da das NMEA-Protokoll bereits Zeitstempel in den Positionsmeldungen enthält. Diese Zeitstempel werden verwendet, um die korrekte Nachrichtenrate zu simulieren, wenn „ QGeoPositionInfoSource “ mit einer Datei als Datenquelle verwendet wird.

Hinweis: Sobald ein „ QGeoSatelliteInfoSource “ erstellt wurde, kann es nicht mehr für die Verwendung anderer Arten von Quelldaten neu konfiguriert werden.

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