QNmea卫星信息源类
QNmea卫星信息源类使用NMEA数据源提供卫星信息。更多...
头文件 | #include <QNmeaSatelliteInfoSource> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Positioning) target_link_libraries(mytarget PRIVATE Qt6::Positioning) |
qmake | QT += positioning |
自 | Qt 6.2 |
继承 | QGeoSatelliteInfoSource |
公共类型
enum class | UpdateMode { RealTimeMode, SimulationMode } |
公共函数
QNmeaSatelliteInfoSource(QNmeaSatelliteInfoSource::UpdateMode mode, QObject *parent = nullptr) | |
virtual | ~QNmeaSatelliteInfoSource() override |
QIODevice * | device() const |
void | setDevice(QIODevice *device) |
QNmeaSatelliteInfoSource::UpdateMode | updateMode() const |
重写公共函数
virtual QVariant | backendProperty(const QString &name) const override |
virtual QGeoSatelliteInfoSource::Error | error() const override |
virtual int | minimumUpdateInterval() const override |
virtual bool | setBackendProperty(const QString &name, const QVariant &value) override |
virtual void | setUpdateInterval(int msec) override |
公共槽
virtual void | requestUpdate(int msec = 0) override |
virtual void | startUpdates() override |
virtual void | stopUpdates() override |
静态公共成员
QString | SimulationUpdateInterval |
受保护类型
enum | SatelliteInfoParseStatus { NotParsed, PartiallyParsed, FullyParsed } |
受保护函数
virtual QNmeaSatelliteInfoSource::SatelliteInfoParseStatus | parseSatelliteInfoFromNmea(const char *data, int size, QList<QGeoSatelliteInfo> &infos, QGeoSatelliteInfo::SatelliteSystem &system) |
virtual QGeoSatelliteInfo::SatelliteSystem | parseSatellitesInUseFromNmea(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::NotParsed | 0 | 数据不包含卫星信息。 |
QNmeaSatelliteInfoSource::PartiallyParsed | 1 | 接收到并解析了有效的卫星信息,但不完整,因此我们需要等待另一个NMEA句子。 |
QNmeaSatelliteInfoSource::FullyParsed | 2 | 卫星信息已全部收集并解析。 |
enum class QNmeaSatelliteInfoSource::UpdateMode
定义了可用的更新模式。
常量 | 值 | 描述 |
---|---|---|
QNmeaSatelliteInfoSource::UpdateMode::RealTimeMode | 1 | 卫星信息在数据可用时从数据源读取和分发。使用此模式时,您正在使用NMEA数据源(例如GPS硬件设备)。 |
QNmeaSatelliteInfoSource::UpdateMode::SimulationMode | 2 | 卫星信息在给定的速率下从数据源读取和分发。该速率由SimulationUpdateInterval参数确定。使用此模式时,数据源包含先前记录的NMEA数据,并且您想要重放数据进行模拟。 |
成员函数文档
[显式]
QNmeaSatelliteInfoSource::QNmeaSatelliteInfoSource(QNmeaSatelliteInfoSource::UpdateMode mode, QObject *parent = nullptr)
使用指定的parent和mode构建一个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。如果返回PartiallyParsed或FullyParsed,将修改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公司。所有其他商标均为其各自所有者的财产。