Qt Positioning Plugin NMEA
Vue d'ensemble
Le site Qt Positioning comprend un module d'extension de position qui analyse les phrases NMEA pour en faire des mises à jour de position. Ce plugin peut utiliser le port série, le socket ou un fichier comme source.
Ce plugin peut être chargé en utilisant le nom du fournisseur nmea.
Paramètres
Le tableau suivant énumère les paramètres qui peuvent être transmis au plugin nmea.
| Paramètre | Description |
|---|---|
| nmea.source | La source qui sera utilisée pour obtenir les données NMEA. |
| nmea.baudrate | Le débit en bauds à utiliser pour la connexion au port série, exprimé par un nombre entier positif. Typiquement, il s'agit d'une des valeurs de l'enum QSerialPort::BaudRate. Si le paramètre n'est pas spécifié ou ne contient pas d'entier positif, la valeur par défaut de 4800 est utilisée. |
| nmea.satellite_info_simulation_intervalle | Intervalle de lecture des données d'information satellite à partir du fichier en mode simulation. |
Les données doivent être fournies de différentes manières selon les sources. Le tableau suivant répertorie les différentes manières de fournir le paramètre nmea.source pour les entrées de type socket, port série et fichier.
| Schéma | Exemple | Description du paramètre |
|---|---|---|
| socket://hostname:port | socket://localhost:12345 | Utilisez le mot-clé socket : pour spécifier que vous souhaitez obtenir les données nmea à partir du socket. Un socket TCP sera créé, qui essaiera de se connecter à l'hôte hostname en utilisant le port port. En cas de connexion réussie, un flux de texte NMEA devrait être reçu du serveur. |
| serial:portname | serial:/dev/ttyUSB0 | Utilisez le mot clé serial : pour spécifier que vous voulez obtenir les données NMEA à partir du port série. Le plugin essaiera d'établir une connexion au port portname avec une vitesse de transmission par défaut = 4800 Bd (la valeur de la vitesse de transmission peut être spécifiée en utilisant le paramètre nmea.baudrate ). Une fois la connexion établie, un flux NMEA textuel devrait être reçu du port série. Si vous utilisez serial : sans nom de port, le plugin essaiera de trouver l'un des dispositifs série bien connus en utilisant l'identifiant du fournisseur. Notez cependant que ce n'est pas une façon recommandée d'utiliser la connexion au port série, car la liste des périphériques bien connus est petite et n'inclut 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 le chemin d'accès à un fichier local. |
| file:///chemin de fichier | file:///home/user/nmealog.txt | |
| qrc:///chemin de 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 essaiera de localiser l'un des périphériques série bien connus (comme si nmea.source = serial: était spécifié).
Exemple d'utilisation de la source de position
Les exemples suivants montrent comment créer un nmea PositionSource en utilisant 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 qu'un PositionSource est créé, il ne peut pas être reconfiguré pour utiliser d'autres types de sources de données.
Exemple d'utilisation d'une source d'information satellite
Outre les informations sur la position, le plugin nmea est également capable de fournir des informations sur les satellites.
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);
Paramétrage 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 permet de spécifier la fréquence de lecture (en millisecondes) des messages d'information sur les satellites. La fréquence minimale autorisée est spécifiée par minimumUpdateInterval(). Si vous spécifiez une valeur inférieure, elle sera ignorée. Si aucune valeur n'est spécifiée, la valeur par défaut est qMax(100, minimumUpdateInterval()). Au moment 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 n'est pas applicable à la source de position car le protocole NMEA contient déjà des horodatages dans les messages de position. Ces horodatages sont utilisés pour simuler le taux de messages correct lors de l'utilisation de QGeoPositionInfoSource avec un fichier comme source de données.
Remarque : une fois qu'un site QGeoSatelliteInfoSource a été créé, il ne peut pas ê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.