Класс QNmeaPositionInfoSource
Класс QNmeaPositionInfoSource предоставляет информацию о местоположении, используя источник данных NMEA. Подробнее...
| Заголовок: | #include <QNmeaPositionInfoSource> |
| qmake: | QT += positioning |
| С момента: | Qt 5.2 |
| Наследует: | QGeoPositionInfoSource |
Этот класс был представлен в Qt 5.2.
Типы публичного доступа
| перечисление | UpdateMode { RealTimeMode, SimulationMode } |
Функции публичного доступа
| QNmeaPositionInfoSource(QNmeaPositionInfoSource::UpdateMode updateMode, QObject *parent = nullptr) | |
| виртуальный | ~QNmeaPositionInfoSource() |
| QIODevice * | device() const |
| void | setDevice(QIODevice *device) |
| void | setUserEquivalentRangeError(double uere) |
| QNmeaPositionInfoSource::UpdateMode | updateMode() const |
| double | userEquivalentRangeError() const |
Переопределённые функции публичного доступа
| виртуальный QGeoPositionInfoSource::Error | error() const override |
| виртуальный QGeoPositionInfo | lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const override |
| виртуальный int | minimumUpdateInterval() const override |
| виртуальный void | setUpdateInterval(int msec) override |
| виртуальный QGeoPositionInfoSource::PositioningMethods | supportedPositioningMethods() const override |
Слот публичного доступа
| виртуальный void | requestUpdate(int msec = 0) override |
| виртуальный void | startUpdates() override |
| виртуальный void | stopUpdates() override |
Защищённые функции
| виртуальный 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 поддерживает отчёт об точности горизонтального и вертикального местоположения. Чтобы включить отчёт об точности местоположения, необходимо указать оценку погрешности диапазона, эквивалентной пользователю, связанной с источником NMEA, с помощью setUserEquivalentRangeError().
Документация по типу члена
перечисление QNmeaPositionInfoSource::UpdateMode
Определяет доступные режимы обновления.
| Постоянная | Значение | Описание |
|---|---|---|
QNmeaPositionInfoSource::RealTimeMode |
1 |
Данные местоположения считываются и распространяются из источника данных по мере их поступления. Используйте этот режим, если вы используете активный источник данных о местоположении (например, устройство GPS). |
QNmeaPositionInfoSource::SimulationMode |
2 |
Информация о дате и времени в данных источника NMEA используется для предоставления обновлений местоположения со скоростью, с которой данные были первоначально записаны. Используйте этот режим, если источник данных содержит ранее записанные данные NMEA, и вы хотите воспроизвести данные для целей моделирования. |
Документация по функциям члена
QNmeaPositionInfoSource::QNmeaPositionInfoSource(QNmeaPositionInfoSource::UpdateMode updateMode, QObject *parent = nullptr)
Создаёт экземпляр QNmeaPositionInfoSource с заданным parent и updateMode.
[override virtual slot] void QNmeaPositionInfoSource::requestUpdate(int msec = 0)
Реализует: QGeoPositionInfoSource::requestUpdate(int timeout).
[override virtual slot] void QNmeaPositionInfoSource::startUpdates()
Реализует: QGeoPositionInfoSource::startUpdates().
[override virtual slot] void QNmeaPositionInfoSource::stopUpdates()
Реализует: QGeoPositionInfoSource::stopUpdates().
[virtual] 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.
Парсер считывает size байтов из data и использует эту информацию для настройки posInfo и hasFix. Если hasFix установлено в false, то posInfo может содержать только время или дату и время.
Возвращает true, если предложение было успешно проанализировано, в противном случае возвращает false и не должно изменять posInfo или hasFix.
void QNmeaPositionInfoSource::setDevice(QIODevice *device)
Устанавливает источник данных NMEA в device. Если устройство не открыто, оно будет открыто в режиме QIODevice::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 следует устанавливать в значение, соответствующее устройству GPS, которое сгенерировало поток NMEA.
Истинное значение UERE рассчитывается из нескольких источников ошибок, включая ошибки, введенные спутниками и задержки распространения сигнала через атмосферу, а также ошибки, введенные приемником GPS. Для получения подробной информации о точности GPS см. http://edu-observatory.org/gps/gps_accuracy.html.
Типичное значение UERE составляет приблизительно 5,1.
Эта функция была добавлена в Qt 5.3.
См. также userEquivalentRangeError().
[override virtual] QGeoPositionInfoSource::PositioningMethods QNmeaPositionInfoSource::supportedPositioningMethods() const
Реализует: QGeoPositionInfoSource::supportedPositioningMethods() const.
QNmeaPositionInfoSource::UpdateMode QNmeaPositionInfoSource::updateMode() const
Возвращает режим обновления.
double QNmeaPositionInfoSource::userEquivalentRangeError() const
Возвращает текущую ошибку эквивалентного радиуса пользователя (UERE). UERE используется для расчета оценки точности информации о местоположении, предоставляемой источником информации о местоположении. Значение по умолчанию — NaN, что означает, что информация о точности не будет предоставлена.
Эта функция была добавлена в Qt 5.3.
См. также setUserEquivalentRangeError().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qnmeapositioninfosource.html