Qt Positioning NMEAプラグイン

概要

Qt Positioning に含まれる位置プラグインは、NMEA文を解析して位置を更新します。このプラグインは、シリアルポート、ソケット、ファイルをソースとして使用できます。

このプラグインは、プロバイダ名nmea を使用して読み込むことができます。

パラメータ

次の表は、nmeaプラグインに渡すことができるパラメータの一覧です。

パラメータ説明
nmea.sourceNMEAデータの取得に使用するソース。
nmea.baudrateシリアルポート接続で使用するボーレート。通常、QSerialPort::BaudRate enumの値のいずれかでなければならない。パラメータが指定されていないか、正の整数が含まれていない場合は、デフォルト値の4800 が使用される。
nmea.satellite_info_simulation_intervalシミュレーションモードで衛星情報データをファイルから読み込む間隔。

情報源によって、データの提供方法が異なる。以下の表は、ソケット、シリアルポート、ファイル入力に対するnmea.source パラメータの提供方法を示している。

スキーム説明
ソケット://ホスト名:ポートsocket://localhost:12345socket:キーワードを使用して、ソケットから nmea データを取得することを指定する。TCP ソケットが作成され、ポートport を使用してホストhostname への接続を試みます。接続に成功すると、サーバーからテキストNMEAストリームが受信されます。
シリアル:ポート名serial:/dev/ttyUSB0シリアルポートから NMEA データを取得する場合は、serial:キーワードを使用します。プラグインはデフォルトのボーレート = 4800 Bd でポートportname への接続を確立しようとします(ボーレートの値はnmea.baudrateパラメータで指定できます)。接続に成功すると、シリアルポートからテキストNMEAストリームが受信されます。ポート名を指定せずにserial:を使用した場合、プラグインはベンダー識別子を使用してよく知られたシリアルデバイスのいずれかを見つけようとします。よく知られているデバイスのリストは少なく、おそらくあなたのハードウェアは含まれていないでしょう。
serial:COM1
serial:
ファイルパス/home/user/nmealog.txtローカルファイルへのパスを指定するには、file:///または完全なファイルパスを使用します。
file:///filepathfile:///home/user/nmealog.txt
qrc:///filepathqrc:///nmealog.txtqrc:///プレフィックスを使用して、アプリケーション・リソース内のファイルへのパスを指定します。

注: nmea.source パラメータが指定されていない場合、プラグインは(nmea.source = serial: が指定されている場合と同様に)よく知られたシリアル・デバイスの 1 つを検索しようとします。

ポジション・ソースの使用例

以下の例では、異なるデータソースを使用して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 を一度作成すると、他のタイプのソース・データを使用するように再設定することはできません。

© 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.