QNmea卫星信息源类

QNmea卫星信息源类使用NMEA数据源提供卫星信息。更多...

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

公共类型

enum classUpdateMode { RealTimeMode, SimulationMode }

公共函数

QNmeaSatelliteInfoSource(QNmeaSatelliteInfoSource::UpdateMode mode, QObject *parent = nullptr)
virtual~QNmeaSatelliteInfoSource() override
QIODevice *device() const
voidsetDevice(QIODevice *device)
QNmeaSatelliteInfoSource::UpdateModeupdateMode() const

重写公共函数

virtual QVariantbackendProperty(const QString &name) const override
virtual QGeoSatelliteInfoSource::Errorerror() const override
virtual intminimumUpdateInterval() const override
virtual boolsetBackendProperty(const QString &name, const QVariant &value) override
virtual voidsetUpdateInterval(int msec) override

公共槽

virtual voidrequestUpdate(int msec = 0) override
virtual voidstartUpdates() override
virtual voidstopUpdates() override

静态公共成员

受保护类型

enumSatelliteInfoParseStatus { NotParsed, PartiallyParsed, FullyParsed }

受保护函数

virtual QNmeaSatelliteInfoSource::SatelliteInfoParseStatusparseSatelliteInfoFromNmea(const char *data, int size, QList<QGeoSatelliteInfo> &infos, QGeoSatelliteInfo::SatelliteSystem &system)
virtual QGeoSatelliteInfo::SatelliteSystemparseSatellitesInUseFromNmea(const char *data, int size, QList<int> &pnrsInUse)

详细描述

NMEA是一种常用的协议,用于表示在特定时间点的全球位置。QMmeaSatelliteInfoSource类读取NMEA数据,并以QGeoSatelliteInfo对象列表的形式提供可见卫星和使用的卫星信息。

QNmeaSatelliteInfoSource实例以实时模式模拟模式运行。这些模式允许从实时数据源或先前记录的NMEA数据中重放数据以进行模拟。

通过setDevice()设置NMEA数据源。

使用startUpdates()开始接收定期的卫星信息更新,使用stopUpdates()停止这些更新。如果您只需要偶尔更新,可以调用requestUpdate()请求更新所有可见和使用的卫星。

通过satellitesInViewUpdated()信号接收可见卫星的信息。

通过satellitesInUseUpdated()信号接收使用中的卫星信息。

成员类型文档

enum QNmeaSatelliteInfoSource::SatelliteInfoParseStatus

定义了卫星信息的解析状态。卫星信息可以被分成多个句子,我们需要解析所有这些。

常量描述
QNmeaSatelliteInfoSource::NotParsed0数据不包含卫星信息。
QNmeaSatelliteInfoSource::PartiallyParsed1接收到并解析了有效的卫星信息,但不完整,因此我们需要等待另一个NMEA句子。
QNmeaSatelliteInfoSource::FullyParsed2卫星信息已全部收集并解析。

enum class QNmeaSatelliteInfoSource::UpdateMode

定义了可用的更新模式。

常量描述
QNmeaSatelliteInfoSource::UpdateMode::RealTimeMode1卫星信息在数据可用时从数据源读取和分发。使用此模式时,您正在使用NMEA数据源(例如GPS硬件设备)。
QNmeaSatelliteInfoSource::UpdateMode::SimulationMode2卫星信息在给定的速率下从数据源读取和分发。该速率由SimulationUpdateInterval参数确定。使用此模式时,数据源包含先前记录的NMEA数据,并且您想要重放数据进行模拟。

成员函数文档

[显式] QNmeaSatelliteInfoSource::QNmeaSatelliteInfoSource(QNmeaSatelliteInfoSource::UpdateMode mode, QObject *parent = nullptr)

使用指定的parentmode构建一个QNmeaSatelliteInfoSource实例。

[覆盖虚函数 noexcept] QNmeaSatelliteInfoSource::~QNmeaSatelliteInfoSource()

销毁卫星信息源。

[覆盖虚拟] QVariant QNmeaSatelliteInfoSource::backendProperty(const QString &name) const

重新实现:QGeoSatelliteInfoSource::backendProperty(const QString &name) const.

另请参阅setBackendProperty().

QIODevice *QNmeaSatelliteInfoSource::device() const

返回NMEA数据源。

另请参阅setDevice().

[覆盖虚拟] QGeoSatelliteInfoSource::Error QNmeaSatelliteInfoSource::error() const

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

[覆盖虚拟] int QNmeaSatelliteInfoSource::minimumUpdateInterval() const

重新实现获取属性访问函数:QGeoSatelliteInfoSource::minimumUpdateInterval.

[虚拟保护] QNmeaSatelliteInfoSource::SatelliteInfoParseStatus QNmeaSatelliteInfoSource::parseSatelliteInfoFromNmea(const char *data, int size, QList<QGeoSatelliteInfo> &infos, QGeoSatelliteInfo::SatelliteSystem &system)

将NMEA句子字符串解析为提取可见卫星的信息。

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

解析器从data读取size字节,并使用该信息来填充infos列表。

返回带有解析结果的SatelliteInfoParseStatus。如果返回PartiallyParsedFullyParsed,将修改infos列表。还设置system为正确的卫星系统类型。如果没有卫星可见,则需要此类信息来确定系统类型。

[虚拟保护] QGeoSatelliteInfo::SatelliteSystem QNmeaSatelliteInfoSource::parseSatellitesInUseFromNmea(const char *data, int size, QList<int> &pnrsInUse)

将NMEA句子字符串解析为提取使用中卫星的ID。

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

解析器从data读取size字节,并使用该信息来填充pnrsInUse列表。

如果句子解析成功,则返回系统类型,否则返回QGeoSatelliteInfo::Undefined,且不应修改pnrsInUse

[重写虚函数槽] void QNmeaSatelliteInfoSource::requestUpdate(int msec = 0)

重写:QGeoSatelliteInfoSource::requestUpdate(int timeout).

[重写虚函数] bool QNmeaSatelliteInfoSource::setBackendProperty(const QString &name, const QVariant &value)

重写:QGeoSatelliteInfoSource::setBackendProperty(const QString &name, const QVariant &value).

另请参阅 backendProperty().

void QNmeaSatelliteInfoSource::setDevice(QIODevice *device)

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

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

注意: device必须发出QIODevice::readyRead()信号,以便当可读数据可用时通知源。QNmeaSatelliteInfoSource不假设设备的所有权,因此不会在销毁时取消分配。

另请参阅 device().

[重写虚函数槽] void QNmeaSatelliteInfoSource::setUpdateInterval(int msec)

重写属性访问函数:QGeoSatelliteInfoSource::updateInterval.

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

重写:QGeoSatelliteInfoSource::startUpdates().

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

重写:QGeoSatelliteInfoSource::stopUpdates().

QNmeaSatelliteInfoSource::UpdateMode QNmeaSatelliteInfoSource::updateMode() const

返回更新模式。

成员变量文档

QString QNmeaSatelliteInfoSource::SimulationUpdateInterval

该变量保存了在SimulationMode中读取数据频率的后台属性名称。此属性的值表示下一次读取之间毫秒数的整数。在使用setBackendProperty()和backendProperty()方法时使用此参数。

注意: 此属性与通过setUpdateInterval()设置的间隔不同。通过setUpdateInterval()设置的值表示用户通知的间隔,而此参数指定从源文件读取数据的内部频率。这意味着在updateInterval()期间可以进行多次(或没有)读取。

© 2024 Qt公司有限公司。本文件中的文档贡献权属于各自所有者。本文件提供的文档根据《自由软件基金会发布的GNU自由文档许可协议第1.3版》许可,见GNU自由文档许可协议版本1.3。Qt及其相应标识是芬兰和/或其他全球国家/地区的商标,Qt公司和其相关商标属于Qt公司。所有其他商标均为其各自所有者的财产。