Spec-Zone.ru › Qt

Подключаемый модуль Qt Positioning NMEA

Обзор

В составе Qt Positioning имеется плагин позиционирования, который парсит предложения NMEA в обновления местоположения. Этот плагин может использовать последовательный порт, сокет или файл в качестве источника.

Этот плагин можно загрузить, используя имя поставщика nmea.

Параметры

В следующей таблице перечислены параметры, которые можно передать плагину nmea.

Параметр Описание
nmea.source Источник, который будет использоваться для получения данных NMEA.
nmea.satellite_info_simulation_interval Интервал чтения данных информации о спутниках из файла в режиме моделирования.

Для разных источников требуется разный способ предоставления данных. В следующей таблице перечислены различные способы предоставления параметра nmea.source для ввода через сокет, последовательный порт и файл.

Схема Пример Описание
socket://hostname:port socket://localhost:12345 Используйте ключевое слово socket:, чтобы указать, что вы хотите получить данные NMEA из сокета. Будет создан TCP-сокет, который попытается подключиться к хосту hostname по порту port. После успешного подключения ожидается получение текстового потока NMEA от сервера.
serial:portname serial:/dev/ttyUSB0 Используйте ключевое слово serial:, чтобы указать, что вы хотите получить данные NMEA из последовательного порта. Плагин попытается установить соединение с портом portname со скоростью 4800 бит/с. После успешного подключения ожидается получение текстового потока NMEA из последовательного порта. Если вы используете serial: без имени порта, плагин попытается найти одно из известных последовательных устройств с использованием идентификатора поставщика. Однако этот способ использования подключения к последовательному порту не рекомендуется, так как список известных устройств невелик и, скорее всего, не включает ваше оборудование.
serial:COM1
serial:
filepath /home/user/nmealog.txt Используйте file:/// или полный путь к файлу, чтобы указать путь к локальному файлу.
file:///filepath file:///home/user/nmealog.txt
qrc:///filepath qrc:///nmealog.txt Используйте префикс qrc:///, чтобы указать путь к файлу в ресурсах приложения.

Примечание: Если параметр nmea.source не указан, плагин попытается найти одно из известных последовательных устройств (как если бы nmea.source = serial: был указан).

Пример использования источника местоположения

В следующих примерах показано, как создать источник nmea PositionSource с использованием различных источников данных.

QML

// text file
PositionSource {
    name: "nmea"
    PluginParameter { name: "nmea.source"; value: "qrc:///nmealog.txt" }
}

// socket
PositionSource {
    name: "nmea"
    PluginParameter { name: "nmea.source"; value: "socket://localhost:22222" }
}

// serial port
PositionSource {
    name: "nmea"
    PluginParameter { name: "nmea.source"; value: "serial:/dev/ttyACM0" }
}

C++

// text file
QVariantMap params;
params["nmea.source"] = "qrc:///nmealog.txt";
QGeoPositionInfoSource *textPositionSource = QGeoPositionInfoSource::createSource("nmea", params, this);

// socket
params["nmea.source"] = "socket://localhost:22222";
QGeoPositionInfoSource *socketPositionSource = QGeoPositionInfoSource::createSource("nmea", params, this);

// serial port
params["nmea.source"] = "serial:/dev/ttyACM0";
QGeoPositionInfoSource *serialPositionSource = QGeoPositionInfoSource::createSource("nmea", params, this);

Примечание: После создания PositionSource его нельзя переконфигурировать для использования других типов данных источника.

Пример использования источника информации о спутниках

Помимо информации о местоположении, плагин nmea также способен предоставлять информацию о спутниках. На данный момент у него нет объекта QML, но его можно создать непосредственно из кода C++.

// serial port
QVariantMap parameters;
parameters["nmea.source"] = "serial:/dev/ttyUSB0";
QGeoSatelliteInfoSource *serialSource = QGeoSatelliteInfoSource::createSource("nmea", parameters, this);

// socket
parameters["nmea.source"] = "socket://localhost:22222";
QGeoSatelliteInfoSource *socketSource = QGeoSatelliteInfoSource::createSource("nmea", parameters, this);

Если вы хотите использовать QGeoSatelliteInfoSource для чтения файла с потоком NMEA, вы также можете использовать дополнительный параметр "nmea.satellite_info_simulation_interval". Этот параметр используется для указания скорости воспроизведения (в миллисекундах) сообщений о спутниках. Минимальная разрешенная частота задается параметром minimumUpdateInterval(). Если вы укажете меньшее значение, оно будет проигнорировано. Если значение не указано, значение по умолчанию составляет qMax(100, minimumUpdateInterval()). Во время выполнения можно использовать метод QNmeaSatelliteInfoSource::setBackendProperty() для обновления этого параметра.

// file
QVariantMap parameters;
parameters["nmea.source"] = "qrc:///nmealog.txt";
parameters["nmea.satellite_info_simulation_interval"] = 1000;
QGeoSatelliteInfoSource *fileSource = QGeoSatelliteInfoSource::createSource("nmea", parameters, this);

Этот параметр не применим к источнику местоположения, потому что протокол NMEA уже содержит отметки времени в сообщениях о местоположении. Эти отметки времени используются для моделирования правильной скорости сообщений при использовании QGeoPositionInfoSource с файлом в качестве источника данных.

Примечание: После создания QGeoSatelliteInfoSource его нельзя переконфигурировать для использования других типов данных источника.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/position-plugin-nmea.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API