QNmeaPositionInfoSource 类

QNmeaPositionInfoSource 类使用 NMEA 数据源提供位置信息。 更多...

头文件 #include <QNmeaPositionInfoSource>
CMakefind_package(Qt6 REQUIRED COMPONENTS Positioning)
target_link_libraries(mytarget PRIVATE Qt6::Positioning)
qmakeQT += positioning
继承 QGeoPositionInfoSource

公共类型

枚举UpdateMode { RealTimeMode, SimulationMode }

公共函数

QNmeaPositionInfoSource(QNmeaPositionInfoSource::UpdateMode updateMode, QObject *parent = nullptr)
虚拟~QNmeaPositionInfoSource()
QIODevice *device() const
voidsetDevice(QIODevice *device)
voidsetUserEquivalentRangeError(double uere)
QNmeaPositionInfoSource::UpdateModeupdateMode() const
doubleuserEquivalentRangeError() const

重写的公共函数

虚拟 QGeoPositionInfoSource::Errorerror() const override
虚拟 QGeoPositionInfolastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const override
虚拟 intminimumUpdateInterval() const override
虚拟 voidsetUpdateInterval(int msec) override
虚拟 QGeoPositionInfoSource::PositioningMethodssupportedPositioningMethods() const override

公共槽

虚拟 voidrequestUpdate(int msec = 0) override
虚拟 voidstartUpdates() override
虚拟 voidstopUpdates() override

受保护的函数

虚拟 boolparsePosInfoFromNmeaData(const char *data, int size, QGeoPositionInfo *posInfo, bool *hasFix)

详细描述

NMEA 是一种常用的协议,用于指定在特定时间点的全球位置。QNmeaPositionInfoSource 类读取 NMEA 数据,并使用它以 QGeoPositionInfo 对象的形式提供位置数据。

QNmeaPositionInfoSource 实例可在 实时模式模拟模式 中运行。这些模式允许从实时位置数据源读取 NMEA 数据,或从先前记录的 NMEA 数据中回放到模拟用途。

使用 setDevice() 设置 NMEA 数据源。

使用 startUpdates() 启动定期位置更新,使用 stopUpdates() 停止这些更新。如果只需要偶尔更新,可以调用 requestUpdate() 请求单个更新。

在两种情况下,通过 positionUpdated() 信号接收位置信息,可以通过 lastKnownPosition() 获取最后已知的位置。

QNmeaPositionInfoSource 支持报告水平和垂直位置精度。要启用位置精度报告,必须使用 setUserEquivalentRangeError() 设置与 NMEA 源相关的用户等效范围误差的估计值。

成员类型文档

enum QNmeaPositionInfoSource::UpdateMode

定义了可用的更新模式。

常量描述
QNmeaPositionInfoSource::RealTimeMode1读取并分发位置数据以符合数据源的可用性。如果您正在使用实时位置数据源(例如,GPS 硬件设备),请使用此模式。
QNmeaPositionInfoSource::SimulationMode2使用 NMEA 源数据中的数据和日期信息以最初记录数据时相同的速率提供位置更新。如果数据源包含先前记录的 NMEA 数据并且您希望用于模拟目的,请使用此模式。

成员函数文档

[头文件] QNmeaPositionInfoSource::QNmeaPositionInfoSource(QNmeaPositionInfoSource::UpdateMode updateMode, QObject *parent = nullptr)

使用给定的 parentupdateMode 构造 QNmeaPositionInfoSource 实例。

[虚拟非抛出] QNmeaPositionInfoSource::~QNmeaPositionInfoSource()

销毁位置源。

QIODevice *QNmeaPositionInfoSource::device() const

返回 NMEA 数据源。

另请参阅 setDevice().

[重写虚拟] QGeoPositionInfoSource::Error QNmeaPositionInfoSource::error() const

重新实现: QGeoPositionInfoSource::error() const.

[重写虚拟] QGeoPositionInfo QNmeaPositionInfoSource::lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const

重新实现: QGeoPositionInfoSource::lastKnownPosition(bool fromSatellitePositioningMethodsOnly) const.

[覆盖虚函数] int QNmeaPositionInfoSource::minimumUpdateInterval() const

重新实现了属性:QGeoPositionInfoSource::minimumUpdateInterval 的访问函数。

[虚保护] bool QNmeaPositionInfoSource::parsePosInfoFromNmeaData(const char *data, int size, QGeoPositionInfo *posInfo, bool *hasFix)

将 NMEA 句子字符串解析为 QGeoPositionInfo

默认实现将解析标准 NMEA 句子。当需要处理非标准 NMEA 句子时,子类应重写此方法。

解析器从 data 中读取 size 字节并使用该信息来设置 posInfohasFix。如果 hasFix 设置为 false,则 posInfo 可能仅包含时间和日期以及时间。

如果句子成功解析,则返回 true,否则返回 false,并且不应修改 posInfohasFix

[覆盖虚槽] void QNmeaPositionInfoSource::requestUpdate(int msec = 0)

重新实现了:QGeoPositionInfoSource::requestUpdate(int timeout)。

void QNmeaPositionInfoSource::setDevice(QIODevice *device)

将 NMEA 数据源设置为 device。如果设备未打开,则将在 QIODevice::ReadOnly 模式下打开。

只能设置一次源设备,必须在调用 startUpdates() 或 requestUpdate() 之前设置。

注意: device 必须发出 QIODevice::readyRead,以便在可读时通知源。QNmeaPositionInfoSource 不假设设备的所有权,因此不会在销毁时将其释放。

另请参阅:device

[覆盖虚函数] 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 错误 & 估算您的接收器精度

UERE 的典型值约为 5.1。

另请参阅:userEquivalentRangeError

[重写虚函数槽] void QNmeaPositionInfoSource::startUpdates()

重写: QGeoPositionInfoSource::startUpdates().

[重写虚函数槽] void QNmeaPositionInfoSource::stopUpdates()

重写: QGeoPositionInfoSource::stopUpdates().

[重写虚函数] QGeoPositionInfoSource::PositioningMethods QNmeaPositionInfoSource::supportedPositioningMethods() const

重写: QGeoPositionInfoSource::supportedPositioningMethods() const.

QNmeaPositionInfoSource::UpdateMode QNmeaPositionInfoSource::updateMode() const

返回更新模式。

double QNmeaPositionInfoSource::userEquivalentRangeError() const

返回当前的用户等效距离误差 (UERE)。UERE 用于计算位置信息源的精度估计。默认值是 NaN,表示不会提供精度信息。

另请参阅setUserEquivalentRangeError().

© 2024Qt公司有限公司。本文件中的文档贡献为各自所有者的版权。此处提供的文档根据自由软件基金会的发布,受GNU自由文档许可证版本1.3的条款许可。Qt及其相关标志是芬兰和/or其他国家和地区的Qt公司有限公司的商标。所有其他商标均为各自所有者的财产。