QNmeaPositionInfoSource Class
QNmeaPositionInfoSource 类使用 NMEA 数据源提供位置信息。更多
Header: | #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 信号源相关的用户等效范围误差估计值。
成员类型文档
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 模式打开。
源设备只能设置一次,且必须在调用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 Reveiver'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()。
© 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.