Qt Positioning NMEA-Plugin
Übersicht
Qt Positioning enthält ein Positions-Plugin, das NMEA-Sätze in Positionsaktualisierungen parst. Dieses Plugin kann eine serielle Schnittstelle, einen Socket oder eine Datei als Quelle verwenden.
Dieses Plugin kann mit dem Providernamen nmea geladen werden.
Parameter
In der folgenden Tabelle sind die Parameter aufgeführt, die an das nmea-Plugin übergeben werden können.
Parameter | Beschreibung |
---|---|
nmea.Quelle | Die Quelle, die verwendet wird, um NMEA-Daten zu erhalten. |
nmea.baudrate | Die Baudrate, die von der seriellen Verbindung verwendet werden soll, ausgedrückt durch eine positive ganze Zahl. Normalerweise sollte es einer der Werte aus dem QSerialPort::BaudRate enum sein. Wird der Parameter nicht angegeben oder enthält er keine positive ganze Zahl, wird der Standardwert 4800 verwendet. |
nmea.satellite_info_simulation_interval | Das Intervall für das Lesen von Satelliteninformationsdaten aus der Datei im Simulationsmodus. |
Unterschiedliche Quellen erfordern unterschiedliche Methoden zur Bereitstellung der Daten. In der folgenden Tabelle sind die verschiedenen Möglichkeiten zur Bereitstellung der nmea.source
Parameter für Socket-, serielle Port- und Dateieingänge aufgeführt.
Schema | Beispiel | Beschreibung |
---|---|---|
socket://hostname:port | socket://localhost:12345 | Verwenden Sie das Schlüsselwort socket:, um anzugeben, dass Sie die Nmea-Daten vom Socket abrufen möchten. Es wird ein TCP-Socket erstellt, der versucht, sich mit dem Host hostname über den Port port zu verbinden. Bei erfolgreicher Verbindung wird ein NMEA-Textstrom vom Server erwartet. |
seriell:Anschlussname | serial:/dev/ttyUSB0 | Verwenden Sie das Schlüsselwort serial:, um anzugeben, dass Sie die NMEA-Daten von der seriellen Schnittstelle abrufen möchten. Das Plugin wird versuchen, eine Verbindung zum Port portname mit einer Standard-Baudrate = 4800 Bd herzustellen (der Wert der Baudrate kann mit dem Parameter nmea.baudrate angegeben werden). Nach erfolgreichem Verbindungsaufbau wird ein NMEA-Textstrom von der seriellen Schnittstelle erwartet. Wenn Sie serial: ohne einen Portnamen verwenden, versucht das Plugin, eines der bekannten seriellen Geräte anhand der Herstellerkennung zu finden. Beachten Sie jedoch, dass dies kein empfohlener Weg ist, die serielle Schnittstelle zu nutzen, da die Liste der bekannten Geräte klein ist und Ihre Hardware höchstwahrscheinlich nicht enthält. |
serial:COM1 | ||
serial: | ||
Dateipfad | /home/user/nmealog.txt | Verwenden Sie file:/// oder einfach den vollständigen Dateipfad, um einen Pfad zu einer lokalen Datei anzugeben. |
file:///Dateipfad | file:///home/user/nmealog.txt | |
qrc:///dateipfad | 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 wird, versucht das Plugin, eines der bekannten seriellen Geräte zu finden (als ob nmea.source = serial:
angegeben wäre).
Beispiel für die Verwendung der Positionsquelle
Die folgenden Beispiele zeigen, wie ein nmea PositionSource unter Verwendung verschiedener Datenquellen erstellt werden kann.
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 eine PositionSource erstellt wurde, kann sie nicht mehr für die Verwendung anderer Datenquellen umkonfiguriert werden.
Beispiel für die Verwendung einer Satelliteninformationsquelle
Neben den Positionsdaten kann das nmea-Plugin auch Satelliteninformationen 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);
Einstellungen der benutzerdefinierten Simulationsgeschwindigkeit
Wenn Sie QGeoSatelliteInfoSource zum Lesen von Dateien mit NMEA-Stream verwenden möchten, können Sie auch den zusätzlichen Parameter "nmea.satellite_info_simulation_interval"
verwenden. Mit diesem Parameter wird die Wiedergaberate (in Millisekunden) für die Satelliteninformationsmeldungen festgelegt. Die minimal zulässige Frequenz wird durch minimumUpdateInterval() festgelegt. Wenn Sie einen kleineren Wert angeben, wird dieser ignoriert. Wenn kein Wert angegeben wird, ist 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 ist nicht auf die Positionsquelle anwendbar, da das NMEA-Protokoll bereits Zeitstempel in Positionsnachrichten enthält. Diese Zeitstempel werden verwendet, um die korrekte Nachrichtenrate zu simulieren, wenn QGeoPositionInfoSource mit einer Datei als Datenquelle verwendet wird.
Hinweis: Sobald eine QGeoSatelliteInfoSource erstellt wurde, kann sie nicht mehr für die Verwendung anderer Datenquellen umkonfiguriert werden.
© 2025 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.