Qt Positioning NMEAプラグイン
概要
Qt Positioning には、NMEA 文を位置情報の更新データに解析する位置情報プラグインが含まれています。このプラグインは、シリアルポート、ソケット、またはファイルをデータソースとして使用できます。
このプラグインは、プロバイダ名nmea を使用して読み込むことができます。
パラメータ
以下の表は、nmeaプラグインに渡すことができるパラメータの一覧です。
| パラメータ | 説明 |
|---|---|
| nmea.source | NMEA データの取得に使用するソース。 |
| nmea.baudrate | シリアルポート接続で使用するボーレート。正の整数で指定します。通常は、QSerialPort::BaudRate 列挙型のいずれかの値である必要があります。このパラメータが指定されていない場合、または正の整数が含まれていない場合は、デフォルト値の4800 が使用されます。 |
| nmea.satellite_info_simulation_interval | シミュレーションモードにおいて、ファイルから衛星情報データを読み込む間隔。 |
データソースによって、データの提供方法は異なります。以下の表は、ソケット、シリアルポート、およびファイル入力における `nmea.source ` パラメータの指定方法をまとめたものです。
| 方式 | 例 | 説明 |
|---|---|---|
| socket://hostname:port | socket://localhost:12345 | `socket:` キーワードを使用して、ソケットから NMEA データを取得することを指定します。TCP ソケットが作成され、ポート `port` を使用してホスト `hostname ` への接続が試みられます。接続に成功すると、サーバーからテキスト形式の NMEA ストリームが受信されることが期待されます。 |
| serial:portname | serial:/dev/ttyUSB0 | serial:キーワードを使用すると、シリアルポートから NMEA データを取得するように指定できます。 プラグインは、デフォルトのボーレート = 4800 Bd(ボーレートの値はnmea.baudrateパラメータを使用して指定可能)で、portname への接続を試みます。接続に成功すると、シリアルポートからテキスト形式の NMEA ストリームを受信する予定です。 ポート名を指定せずに`serial:`を使用した場合、プラグインはベンダー識別子を使用して、既知のシリアルデバイスのいずれかを探そうとします。ただし、既知のデバイスのリストは限られており、お使いのハードウェアが含まれていない可能性が高いことから、これはシリアルポート接続の推奨される使用方法ではありません。 |
serial:COM1 | ||
serial: | ||
| filepath | /home/user/nmealog.txt | ローカルファイルへのパスを指定するには、file:///または完全なファイルパスを使用してください。 |
| file:///filepath | file:///home/user/nmealog.txt | |
| qrc:///filepath | qrc:///nmealog.txt | qrc:///というプレフィックスを使用して、アプリケーションのリソース内にあるファイルへのパスを指定します。 |
注: nmea.source パラメータが指定されていない場合 、プラグインは(nmea.source = serial: が指定された場合と同様に)よく知られたシリアルデバイスのいずれかを探そうとします。
警告: socket:// スキーマは 、暗号化されていない接続のみをサポートしています。したがって、ホスト内または信頼できるネットワーク上での使用にのみ適しています。
位置情報のソースの使用例
以下の例は、さまざまなデータソースを使用してnmea PositionSource を作成する方法を示しています。
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);注: PositionSource を作成すると 、他のタイプのデータソースを使用するように再設定することはできません。
衛星情報ソースの使用例
位置情報に加え、nmeaプラグインは衛星情報の提供も可能です。
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);シミュレーション速度のカスタマイズ
QGeoSatelliteInfoSource を使用して NMEA ストリームを含むファイルを読み込む場合、追加パラメータ"nmea.satellite_info_simulation_interval" を使用することもできます。このパラメータは、衛星情報メッセージの再生レート(ミリ秒単位)を指定するために使用されます。 許可される最小周波数は、minimumUpdateInterval() で指定されます。これより小さい値を指定しても無視されます。値が指定されていない場合、デフォルト値はqMax(100, minimumUpdateInterval()) です。実行時には、QNmeaSatelliteInfoSource::setBackendProperty() メソッドを使用してこのパラメータを更新できます。
// file
QVariantMap parameters;
parameters["nmea.source"] = "qrc:///nmealog.txt";
parameters["nmea.satellite_info_simulation_interval"] = 1000;
QGeoSatelliteInfoSource *fileSource = QGeoSatelliteInfoSource::createSource("nmea", parameters, this);このパラメータは位置情報ソースには適用されません。これは、NMEAプロトコルの位置メッセージにはすでにタイムスタンプが含まれているためです。これらのタイムスタンプは、QGeoPositionInfoSource でファイルをデータソースとして使用する際に、正しいメッセージレートをシミュレートするために使用されます。
注: QGeoSatelliteInfoSource を作成すると 、他の種類のデータソースを使用するように再設定することはできません。
© 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.