QNmeaPositionInfoSource Class
QNmeaPositionInfoSource クラスは、NMEA データソースを使用して位置情報を提供します。詳細...
| ヘッダー: | #include <QNmeaPositionInfoSource> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Positioning) target_link_libraries(mytarget PRIVATE Qt6::Positioning) |
| qmake: | QT += positioning |
| 継承元: | QGeoPositionInfoSource |
パブリック型
| enum | UpdateMode { RealTimeMode, SimulationMode } |
パブリック関数
| QNmeaPositionInfoSource(QNmeaPositionInfoSource::UpdateMode updateMode, QObject *parent = nullptr) | |
| virtual | ~QNmeaPositionInfoSource() |
| QIODevice * | device() const |
| void | setDevice(QIODevice *device) |
| void | setUserEquivalentRangeError(double uere) |
| QNmeaPositionInfoSource::UpdateMode | updateMode() const |
| double | userEquivalentRangeError() const |
再実装されたパブリック関数
| virtual QGeoPositionInfoSource::Error | error() const override |
| virtual QGeoPositionInfo | lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const override |
| virtual int | minimumUpdateInterval() const override |
| virtual void | setUpdateInterval(int msec) override |
| virtual QGeoPositionInfoSource::PositioningMethods | supportedPositioningMethods() const override |
パブリック・スロット
| virtual void | requestUpdate(int msec = 0) override |
| virtual void | startUpdates() override |
| virtual void | stopUpdates() override |
プロテクトされた関数
| virtual bool | parsePosInfoFromNmeaData(const char *data, int size, QGeoPositionInfo *posInfo, bool *hasFix) |
詳細な説明
NMEAは、特定の時点における自身の全球位置を指定するために広く使用されているプロトコルです。QNmeaPositionInfoSourceクラスは、NMEAデータを読み取り、それを用いてQGeoPositionInfo オブジェクトの形式で位置データを提供します。
QNmeaPositionInfoSource インスタンスは、RealTimeMode またはSimulationMode のいずれかのモードで動作します。これらのモードにより、NMEA データを、位置データのライブソースから読み取るか、シミュレーションの目的で、以前に記録された NMEA データから再生することができます。
NMEA データのソースは、setDevice() を使用して設定します。
startUpdates() を使用すると定期的な位置情報の更新受信が開始され、stopUpdates() を使用するとこれらの更新が停止されます。更新をたまにしか必要としない場合は、requestUpdate() を呼び出して単一の更新を要求できます。
いずれの場合も、位置情報はpositionUpdated()シグナルを介して受信され、最後に認識された位置にはlastKnownPosition()でアクセスできます。
QNmeaPositionInfoSourceは、水平および垂直位置の精度報告をサポートしています。位置精度報告を有効にするには、setUserEquivalentRangeError() を使用して、NMEAソースに関連付けられたユーザー等価範囲誤差(User Equivalent Range Error)の推定値を設定する必要があります。
メンバ型のドキュメント
enum QNmeaPositionInfoSource::UpdateMode
利用可能な更新モードを定義します。
| 定数 | 値 | 説明 |
|---|---|---|
QNmeaPositionInfoSource::RealTimeMode | 1 | 位置データは、データソースから利用可能になり次第、読み込まれ、配信されます。ライブの位置データソース(GPSハードウェアデバイスなど)を使用する場合は、このモードを使用してください。 |
QNmeaPositionInfoSource::SimulationMode | 2 | NMEA ソースデータに含まれる日時情報を使用して、データが最初に記録されたレートで位置情報の更新を行います。データソースに以前に記録された NMEA データが含まれており、シミュレーションの目的でそのデータを再生したい場合に、このモードを使用します。 |
メンバ関数のドキュメント
[explicit] QNmeaPositionInfoSource::QNmeaPositionInfoSource(QNmeaPositionInfoSource::UpdateMode updateMode, QObject *parent = nullptr)
指定されたparent およびupdateMode を使用して、QNmeaPositionInfoSourceのインスタンスを作成します。
[virtual noexcept] QNmeaPositionInfoSource::~QNmeaPositionInfoSource()
位置ソースを破棄します。
QIODevice *QNmeaPositionInfoSource::device() const
NMEAデータソースを返します。
setDevice()も参照してください 。
[override virtual] QGeoPositionInfoSource::Error QNmeaPositionInfoSource::error() const
QGeoPositionInfoSource::error() const を再実装します。
[override virtual] QGeoPositionInfo QNmeaPositionInfoSource::lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const
QGeoPositionInfoSource::lastKnownPosition (bool fromSatellitePositioningMethodsOnly)const を再実装します。
[override virtual] int QNmeaPositionInfoSource::minimumUpdateInterval() const
プロパティ「QGeoPositionInfoSource::minimumUpdateInterval 」のアクセス関数を再実装します。
[virtual protected] bool QNmeaPositionInfoSource::parsePosInfoFromNmeaData(const char *data, int size, QGeoPositionInfo *posInfo, bool *hasFix)
NMEA文の文字列をQGeoPositionInfo に解析します。
デフォルトの実装では、標準的なNMEAセンテンスを解析します。非標準のNMEAセンテンスを扱う必要が生じた場合は、サブクラスでこのメソッドを再実装する必要があります。
パーサーは、data からsize バイトを読み取り、その情報を使用してposInfo およびhasFix を設定します。hasFix がfalseに設定されている場合、posInfo には時刻のみ、または日付と時刻のみが含まれることがあります。
文の解析が成功した場合は true を返し、失敗した場合は false を返します。この場合、posInfo やhasFix を変更してはなりません。
[override virtual slot] void QNmeaPositionInfoSource::requestUpdate(int msec = 0)
QGeoPositionInfoSource::requestUpdate(int timeout) を再実装します。
void QNmeaPositionInfoSource::setDevice(QIODevice *device)
NMEAデータソースをdevice に設定します。デバイスが開かれていない場合は、ReadOnly モードで開かれます。
データソースとなるデバイスの設定は1回のみ可能であり、startUpdates() またはrequestUpdate() を呼び出す前に設定する必要があります。
注: 読み取り可能なデータが利用可能になった際にソースに通知されるためには、device が QIODevice::readyRead()を発行する必要があります。QNmeaPositionInfoSource は デバイスの所有権を取得しないため、破棄時にデバイスの割り当てを解除することはありません。
device()も参照してください 。
[override virtual] void QNmeaPositionInfoSource::setUpdateInterval(int msec)
プロパティ「QGeoPositionInfoSource::updateInterval 」のアクセス関数を再実装します。
void QNmeaPositionInfoSource::setUserEquivalentRangeError(double uere)
ユーザー等価範囲誤差(UERE)をuere に設定します。UEREは、位置情報ソースから報告される位置情報の精度の推定値を算出する際に使用されます。UEREは、NMEAストリームを生成したGPSデバイスに適した値に設定する必要があります。
実際のUERE値は、衛星による誤差や大気中を通る信号の伝搬遅延、および受信側のGPS機器による誤差など、複数の誤差要因から算出されます。GPSの精度に関する詳細については、Sam J. Wormley著『GPS Errors & Estimating Your Receiver's Accuracy』を参照してください。
UEREの典型的な値は約5.1です。
userEquivalentRangeError()も参照してください 。
[override virtual slot] void QNmeaPositionInfoSource::startUpdates()
QGeoPositionInfoSource::startUpdates() を再実装します。
[override virtual slot] void QNmeaPositionInfoSource::stopUpdates()
QGeoPositionInfoSource::stopUpdates() を再実装します。
[override virtual] QGeoPositionInfoSource::PositioningMethods QNmeaPositionInfoSource::supportedPositioningMethods() const
QGeoPositionInfoSource::supportedPositioningMethods() const を再実装します。
QNmeaPositionInfoSource::UpdateMode QNmeaPositionInfoSource::updateMode() const
更新モードを返します。
double QNmeaPositionInfoSource::userEquivalentRangeError() const
現在のユーザー等価範囲誤差(UERE)を返します。UEREは、位置情報ソースから報告された位置情報の精度の推定値を算出する際に使用されます。デフォルト値はNaNであり、これは精度情報が提供されないことを意味します。
setUserEquivalentRangeError()も参照してください 。
© 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.