Считайте и проанализируйте данные NMEA непосредственно из GPS-приемника

Этот пример показывает вам, как считать данные из GPS-приемника, соединенного с компьютером, и проанализировать данные Ассоциации National Marine Electronics (NMEA).

Данные NMEA из GPS-приемника

Формат Ассоциации National Marine Electronics (NMEA) является спецификацией, которая задает, как данные передаются между различными морскими электронными устройствами. Большинство выходных данных GPS-приемника в формате NMEA.

Данные передаются в последовательности, названной предложением. Каждое предложение независимо от других предложений от получателя. Предложения содержат информацию, такую как широта, долгота, скорость, и время как символы ASCII. Данные в предложении являются разделенной запятой. Данные выводятся на последовательном порте получателя в интервале, названном Update Rate.

Формат предложения NMEA

Синтаксический анализатор, реализованный в этом примере, может использоваться, чтобы проанализировать RMC, CGA, GSA и предложения VTG. Формат сообщения для каждого из этих предложений объяснен ниже. Форматы сообщения основаны на спецификации протокола, упомянутой в Описании получателя u-blox 6.

Формат сообщения RMC

Формат сообщения GGA

Формат сообщения GPVTG

Формат сообщения GSA

Настройка оборудования

Необходимое оборудование

  • Модуль GPS Ublox NEO-6M

  • Последовательный к USB сигнализируют о конвертерах как FTDI (Если модуль GPS не может быть непосредственно соединен с использующим компьютеры USB),

Если разъем USB доступен на GPS-приемнике, соедините модуль GPS непосредственно с компьютером через USB-кабель и установите необходимые драйверы. В противном случае используйте последовательный для конвертеров USB, чтобы преобразовать последовательные передачи в сигналы USB.

Создайте объект последовательного порта

Создайте gpsReceiver объект и партнер это с последовательным портом, на котором соединяется модуль GPS. Последовательные данные от модуля GPS следуют 9600 8N1 формат.

ublox_gps = gpsReceiver('COM17');

Выходные данные о GPS в нескольких предложениях, которые следуют за форматом NMEA. read метод gpsReceiver класс возвращает системы координат необработанных данных о GPS. Запуск каждой системы координат принят как предложение RMC, и конец системы координат принят, чтобы быть запуском следующего предложения RMC. Количество возвращенных систем координат может быть задано в качестве аргумента к read функция. По умолчанию функция возвращает одну систему координат данных NMEA. Убедитесь, что модуль Ublox-6M сконфигурирован к его состоянию по умолчанию, где Baud Rate 9600, Update Rate 1 Гц, и модуль выводит сообщения, соответствующие RMC, GSA, GGA и идентификаторам VTG.

rawGPSData = read(ublox_gps);

Поскольку несколько нумеруют систем координат, задают количество систем координат NMEA в качестве аргумента в read функция.

NumOfFrames = 3;
rawGPSDataWithFrames = read(ublox_gps, NumOfFrames);

Проанализируйте данные о GPS

HelperParseGPSData функция в папке в качестве примера может использоваться, чтобы проанализировать Данные о GPS. Реализованный синтаксический анализатор способен к декодированию RMC, GGA, GSA и Предложений VTG. Функция синтаксического анализатора возвращает структуру, поля которой соответствуют данным, декодируемым от соответствующего предложения. Если получатель не выведет значение, соответствующее поле контрольной суммы в структуре будет пусто. ChecksumValidity поле определяет валидность полученных данных.

Ниже кода может использоваться, чтобы проанализировать для RMC, GGA, GSA и предложений VTG.

[GPRMC, GPGGA, GPVTG, GPGSA] = HelperParseGPSData(rawGPSData);

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

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

GPSData = '$GPGGA,135015.00,1257.62410,N,07742.00316,E,1,06,1.56,903.3,M,-86.4,M,,*77';
[~,GPGGA,~,~] = HelperParseGPSData(GPSData);

flush метод объекта может использоваться, чтобы сбросить входные буферы, сопоставленные с gpsReceiver объект.

flush(ublox_gps);

Очистка

Когда связь больше не будет требоваться, отключите и удалите объект.

delete(ublox_gps);

Чтобы получить справку на функции синтаксического анализатора, использовать

help HelperParseGPSData;

Чтобы получить справку на объекте gpsReceiver, использовать

help gpsReceiver;