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.
| Parameter | Beschreibung |
|---|---|
| nmea.source | Die Quelle, aus der NMEA-Daten abgerufen werden sollen. |
| nmea.baudrate | Die 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_interval | Das 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.
| Schema | Beispiel | Beschreibung |
|---|---|---|
| socket://hostname:port | socket://localhost:12345 | Verwenden 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:portname | serial:/dev/ttyUSB0 | Verwenden 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.txt | Verwenden Sie „file:///“ oder einfach den vollständigen Dateipfad, um einen Pfad zu einer lokalen Datei anzugeben. |
| file:///filepath | file:///home/user/nmealog.txt | |
| qrc:///filepath | qrc:///nmealog.txt | Verwenden 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.