Qt Positioning Plugin NMEA
Présentation
Qt Positioning intègre un plugin de position qui analyse les phrases NMEA pour en extraire les mises à jour de position. Ce plugin peut utiliser un port série, un socket ou un fichier comme source.
Ce plugin peut être chargé en utilisant le nom de fournisseur « nmea ».
Paramètres
Le tableau suivant répertorie les paramètres pouvant être transmis au plug-in nmea.
| Paramètre | Description |
|---|---|
| nmea.source | La source qui sera utilisée pour récupérer les données NMEA. |
| nmea.baudrate | Le débit en bauds à utiliser pour la connexion du port série, exprimé sous la forme d'un nombre entier positif. En général, il doit s'agir d'une des valeurs de l'énumération QSerialPort::BaudRate. Si le paramètre n'est pas spécifié ou ne contient pas de nombre entier positif, la valeur par défaut 4800 est utilisée. |
| nmea.satellite_info_simulation_interval | Intervalle de lecture des données d’informations satellite à partir du fichier en mode simulation. |
Les différentes sources nécessitent des méthodes différentes pour fournir les données. Le tableau suivant répertorie les différentes façons de fournir le paramètre ` nmea.source ` pour les entrées via socket, port série et fichier.
| Schéma | Exemple | Description |
|---|---|---|
| socket://nom_d’hôte:port | socket://localhost:12345 | Utilisez le mot-clé `socket:` pour indiquer que vous souhaitez récupérer les données NMEA à partir du socket. Un socket TCP sera créé, qui tentera de se connecter à l'hostname de l'hôte via le port port. Une fois la connexion établie, un flux de données NMEA au format texte devrait être reçu du serveur. |
| serial:portname | serial:/dev/ttyUSB0 | Utilisez le mot-clé « serial: » pour indiquer que vous souhaitez récupérer les données NMEA via le port série. Le plugin tentera d’établir une connexion au port portname avec un débit en bauds par défaut de 4 800 Bd (la valeur du débit en bauds peut être spécifiée à l’aide du paramètre nmea.baudrate ). Une fois la connexion établie, un flux NMEA au format texte devrait être reçu depuis le port série. Si vous utilisez « serial: » sans nom de port, le plugin tentera de détecter l’un des périphériques série connus à l’aide de l’identifiant du fabricant. Notez toutefois qu’il ne s’agit pas d’une méthode recommandée pour utiliser la connexion via le port série, car la liste des périphériques connus est restreinte et n’inclut très probablement pas votre matériel. |
serial:COM1 | ||
serial: | ||
| filepath | /home/user/nmealog.txt | Utilisez « file:/// » ou simplement le chemin d'accès complet pour spécifier l'emplacement d'un fichier local. |
| file:///chemin_de_fichier | file:///home/user/nmealog.txt | |
| qrc:///chemin_fichier | qrc:///nmealog.txt | Utilisez le préfixe « qrc:/// » pour indiquer le chemin d'accès à un fichier dans les ressources de l'application. |
Remarque : si le paramètre nmea.source n'est pas spécifié, le plugin tentera de localiser l'un des périphériques série connus (comme si nmea.source = serial: avait été spécifié).
Avertissement : le schéma socket:// ne prend en charge que les connexions non chiffrées. Il ne convient donc qu’à une utilisation au sein d’un hôte ou sur un réseau de confiance.
Exemple d’utilisation de la source de position
Les exemples suivants montrent comment créer une PositionSource NMEA à l’aide de différentes sources de données.
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);Remarque : une fois l'PositionSource créée, elle ne peut plus être reconfigurée pour utiliser un autre type de source de données.
Exemple d'utilisation d'une source d'informations par satellite
Outre les informations de position, le plugin NMEA est également capable de fournir des informations par satellite.
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);Réglage de la vitesse de simulation personnalisée
Si vous souhaitez utiliser QGeoSatelliteInfoSource pour lire un fichier contenant un flux NMEA, vous pouvez également utiliser le paramètre supplémentaire "nmea.satellite_info_simulation_interval". Ce paramètre sert à spécifier la fréquence de lecture (en millisecondes) des messages d’informations satellite. La fréquence minimale autorisée est définie par minimumUpdateInterval(). Si vous spécifiez une valeur inférieure, celle-ci sera ignorée. Si aucune valeur n’est spécifiée, la valeur par défaut est qMax(100, minimumUpdateInterval()). Lors de l’exécution, la méthode QNmeaSatelliteInfoSource::setBackendProperty() peut être utilisée pour mettre à jour ce paramètre.
// file
QVariantMap parameters;
parameters["nmea.source"] = "qrc:///nmealog.txt";
parameters["nmea.satellite_info_simulation_interval"] = 1000;
QGeoSatelliteInfoSource *fileSource = QGeoSatelliteInfoSource::createSource("nmea", parameters, this);Ce paramètre ne s’applique pas à la source de position, car le protocole NMEA inclut déjà des horodatages dans les messages de position. Ces horodatages sont utilisés pour simuler le débit de messages correct lors de l’utilisation de ` QGeoPositionInfoSource ` avec un fichier comme source de données.
Remarque : une fois qu’ un « QGeoSatelliteInfoSource » est créé, il ne peut plus être reconfiguré pour utiliser un autre type de source de données.
© 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.