nmeaParser

Анализ данных стандартных предложений NMEA, отправленных приемниками GNSS

Описание

The nmeaParser Система object™ анализирует данные из некоторых стандартных предложений NMEA (Национальной ассоциации морской электроники), которые отправляются с приемника GNSS (Глобальной навигационной спутниковой системы). Предложения NMEA, которые нуждаются в разборе, должны соответствовать NMEA 0183® Стандартная версия 4.1.

Для анализа данных из предложений NMEA:

  1. Создайте nmeaParser Объекту и установите его свойства.

  2. Вызывайте объект с аргументами, как будто это функция.

Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».

The nmeaParser Системный объект выводит массив структур, соответствующих значениям, извлеченным из заданных предложений NMEA.

Создание

Описание

pnmea = nmeaParser возвращает nmeaParser Системный объект, pnmeaсо свойствами по умолчанию, которые извлекают данные из этих сообщений NMEA: RMC, GGA и GSA. Порядок массивов структур в извлеченных выходных данных также: RMC, GGA и GSA.

пример

pnmea = nmeaParser('MessageIDs', msgID) возвращает nmeaParser Системный объект, pnmea, который извлекает данные из сообщений NMEA, заданных с помощью идентификаторов сообщений. Задайте msgID как "RMC", "GGA", "GSA", "GSV", "VTG", "GLL", "GST", "ZDA", и "HDT", или комбинация этих идентификаторов (для примера: ["VTG","GLL","HDT"]). Порядок определения идентификаторов сообщений определяет порядок расположения массивов структур в извлеченных выходных данных. Значение по умолчанию ["RMC","GGA","GSA"].

Свойства

расширить все

Если не указано иное, свойства являются нетронутыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируются, когда вы вызываете их, и release функция разблокирует их.

Если свойство настраивается, можно изменить его значение в любой момент.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.

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

Типы данных: char | string

Использование

Описание

пример

[rmcData,ggaData,gsaData,vtgData,gllData,gstData,gsvData,zdaData,hdtData] = pnmea(rawData) анализирует данные и возвращает массив структур, где каждая структура соответствует одному идентификатору сообщения. Последовательность, заданная для выходных аргументов, должна быть той же последовательностью, что и для идентификаторов сообщений при создании nmeaParser Системный объект.

Входные параметры

расширить все

Данные NMEA, соответствующий стандарту NMEA 0183, полученные от приемника GNSS.

Типы данных: string | char

Выходные аргументы

расширить все

Данные, извлеченные из предложения RMC. Структура output содержит информацию, проанализированную из предложения RMC вместе со статусом анализа. Если во входных данных найдено несколько предложений RMC, возвращается массив структур. Для получения дополнительной информации см. RMC Sentences.

Данные, извлеченные из предложения GGA. Структура output содержит информацию, проанализированную из предложения GGA вместе со статусом анализа. Если во входных данных найдено несколько предложений GGA, возвращается массив структур. Для получения дополнительной информации смотрите GGA Sentences.

Данные, извлеченные из предложения GSA. Структура output содержит информацию, проанализированную из предложения GSA вместе со статусом анализа. Если во входных данных найдено несколько предложений GSA, возвращается массив структур. Для получения дополнительной информации смотрите GSA Sentences.

Данные, извлеченные из предложения VTG. Структура output содержит информацию, проанализированную из предложения VTG вместе со статусом анализа. Если во входных данных найдено несколько предложений VTG, возвращается массив структур. Для получения дополнительной информации смотрите VTG Sentences.

Данные, извлеченные из предложения GLL. Структура output содержит информацию, проанализированную из предложения GLL вместе со статусом анализа. Если во входных данных найдено несколько предложений GLL, возвращается массив структур. Для получения дополнительной информации смотрите GLL Sentences.

Данные, извлеченные из предложения GST. Структура output содержит информацию, проанализированную из предложения GST вместе со статусом анализа. Если во входных данных найдено несколько предложений GST, возвращается массив структур. Для получения дополнительной информации смотрите GST Sentences.

Данные, извлеченные из предложения GSV. Структура output содержит информацию, проанализированную из предложения GSV вместе со статусом анализа. Полная спутниковая информация доступна в нескольких структурах gsvData. Каждая структура gsvData может иметь не более четырех спутниковых данных. Для получения дополнительной информации смотрите GSV Sentences.

Данные, извлеченные из предложения ZDA. Структура output содержит информацию, проанализированную из предложения ZDA вместе со статусом анализа. Если во входных данных найдено несколько предложений ZDA, возвращается массив структур. Для получения дополнительной информации смотрите ZDA Sentences.

Данные, извлеченные из предложения HDT. Структура output содержит информацию, проанализированную из предложения HDT вместе со статусом анализа. Если во входных данных найдено несколько предложений HDT, возвращается массив структур. Для получения дополнительной информации смотрите HDT Sentences.

Функции объекта

Чтобы использовать функцию объекта, задайте системный объект в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj, используйте следующий синтаксис:

release(obj)

Примеры

свернуть все

Извлеките данные из предложений NMEA, которые получаются от приемника GNSS.

Извлечение данных из предложения RMC

Создайте системный объект nmeaParser путем определения идентификатора сообщения «RMC».

pnmea = nmeaParser("MessageID","RMC");

Предоставьте предложение RMC, полученное от приемника GNSS, в качестве входных и извлеченных данных.

unparsedRMCLine='$GNRMC,143909.00,A,5107.0020216,N,11402.3294835,W,0.036,348.3,210307,0.0,E,A*31';
rmcData = pnmea(unparsedRMCLine)
rmcData = struct with fields:
             TalkerID: "GN"
            MessageID: "RMC"
            FixStatus: 'A'
             Latitude: 51.1167
            Longitude: -114.0388
          GroundSpeed: 0.0185
      TrueCourseAngle: 348.3000
          UTCDateTime: 21-Mar-2007 14:39:09.000
    MagneticVariation: 0
        ModeIndicator: 'A'
     NavigationStatus: "NA"
               Status: 0

Извлечение данных из нескольких типов сообщений NMEA

Предоставьте GGA, GSA и предложения RMC в качестве входов.

unparsedGGALine = ['$GPGGA,111357.771,5231.364,N,01324.240,E,1,12,1.0,0.0,M,0.0,M,,*69'];
unparsedGSALine = ['$GPGSA,A,3,01,02,03,04,05,06,07,08,09,10,11,12,1.0,1.0,1.0*30'];
unparsedRMCLine = ['$GPRMC,111357.771,A,5231.364,N,01324.240,E,10903,221.5,020620,000.0,W*44'];

Создайте строковые массивы, чтобы включить три предложения

rawNMEAData = [unparsedGGALine ,newline,  unparsedGSALine ,newline,  unparsedRMCLine]
rawNMEAData = 
    '$GPGGA,111357.771,5231.364,N,01324.240,E,1,12,1.0,0.0,M,0.0,M,,*69
     $GPGSA,A,3,01,02,03,04,05,06,07,08,09,10,11,12,1.0,1.0,1.0*30
     $GPRMC,111357.771,A,5231.364,N,01324.240,E,10903,221.5,020620,000.0,W*44'

Однако примите во внимание, что вы должны извлечь данные только из предложений GGA и GSA. Поэтому создайте системный объект nmeaParser 'pnmea' и задайте идентификаторы сообщений 'GGA' и 'GSA' в качестве строковых массивов.

pnmea=nmeaParser("MessageIDs",["GGA","GSA"]); 

Задайте выходные аргументы для всех трех предложений, чтобы извлечь данные как структуры.

[ggaData,gsaData] =  pnmea(rawNMEAData)
ggaData = struct with fields:
                          TalkerID: "GP"
                         MessageID: "GGA"
                           UTCTime: 11:13:57.771
                          Latitude: 52.5227
                         Longitude: 13.4040
                  QualityIndicator: 1
                NumSatellitesInUse: 12
                              HDOP: 1
                          Altitude: 0
                   GeoidSeparation: 0
             AgeOfDifferentialData: NaN
    DifferentialReferenceStationID: NaN
                            Status: 0

gsaData = struct with fields:
              TalkerID: "GP"
             MessageID: "GSA"
                  Mode: "A"
               FixType: 3
    SatellitesIDNumber: [1 2 3 4 5 6 7 8 9 10 11 12]
                  PDOP: 1
                  VDOP: 1
                  HDOP: 1
              SystemID: NaN
                Status: 0

Вышеописанный выход показывает, что только предложения GGA и GSA извлекаются на основе идентификаторов сообщений, заданных в качестве входов.

Представьте другое предложение GGA в качестве дополнительного входов и извлеките данные. В этом случае не требуется изменять системный объект, так как идентификатор сообщения не изменился.

unparsedGGALine1='$GNGGA,001043.00,4404.14036,N,12118.85961,W,1,12,0.98,1113.0,M,-21.3,M,,*47'
unparsedGGALine1 = 
'$GNGGA,001043.00,4404.14036,N,12118.85961,W,1,12,0.98,1113.0,M,-21.3,M,,*47'
rawNMEAData = [unparsedGGALine ,newline,  unparsedGSALine ,newline,  unparsedGGALine1]
rawNMEAData = 
    '$GPGGA,111357.771,5231.364,N,01324.240,E,1,12,1.0,0.0,M,0.0,M,,*69
     $GPGSA,A,3,01,02,03,04,05,06,07,08,09,10,11,12,1.0,1.0,1.0*30
     $GNGGA,001043.00,4404.14036,N,12118.85961,W,1,12,0.98,1113.0,M,-21.3,M,,*47'

[ggaData,gsaData] =  pnmea(rawNMEAData)
ggaData=1×2 struct array with fields:
    TalkerID
    MessageID
    UTCTime
    Latitude
    Longitude
    QualityIndicator
    NumSatellitesInUse
    HDOP
    Altitude
    GeoidSeparation
    AgeOfDifferentialData
    DifferentialReferenceStationID
    Status

gsaData = struct with fields:
              TalkerID: "GP"
             MessageID: "GSA"
                  Mode: "A"
               FixType: 3
    SatellitesIDNumber: [1 2 3 4 5 6 7 8 9 10 11 12]
                  PDOP: 1
                  VDOP: 1
                  HDOP: 1
              SystemID: NaN
                Status: 0

Состояние 0 указывает, что данные были успешно проанализированы.

Извлечение данных из предложения GSV

Создайте системный объект nmeaParser путем определения идентификатора сообщения «GSV».

pnmea = nmeaParser("MessageID","GSV");

Предоставьте предложение GSV, полученное от приемника GNSS, в качестве входных и извлеченных данных.

unparsedGSVLine='$GPGSV,3,3,10,32,69,205,41,46,47,215,39*79';
gsvData = pnmea(unparsedGSVLine)
gsvData = struct with fields:
            TalkerID: "GP"
           MessageID: "GSV"
        NumSentences: 3
      SentenceNumber: 3
    SatellitesInView: 10
         SatelliteID: [32 46]
           Elevation: [69 47]
             Azimuth: [205 215]
                 SNR: [41 39]
            SignalID: NaN
              Status: 0

Извлечение данных из нескольких предложений GSV

Предоставьте несколько предложений GSV в качестве входов.

unparsedGSVLine1 = '$GPGSV,3,1,10,01,,,31,03,28,325,40,10,,,33,12,20,047,30*70';
unparsedGSVLine2 = '$GPGSV,3,2,10,14,88,028,42,22,39,299,48,25,,,25,31,79,289,46*49';
unparsedGSVLine3 = '$GPGSV,3,3,10,32,69,205,41,46,47,215,39*79';

Создайте строковые массивы для включения трех предложений.

CRLF = [char(13),newline];
unparsedGSVLines = [unparsedGSVLine1,CRLF, unparsedGSVLine2, CRLF, unparsedGSVLine3];

Создайте системный объект nmeaParser 'pnmea', задайте идентификатор сообщения 'GSV' и извлеките данные.

pnmea = nmeaParser("MessageIDs","GSV");
gsvData = pnmea(unparsedGSVLines)
gsvData=1×3 struct array with fields:
    TalkerID
    MessageID
    NumSentences
    SentenceNumber
    SatellitesInView
    SatelliteID
    Elevation
    Azimuth
    SNR
    SignalID
    Status

Чтение данных из журнала NMEA

Считайте данные из выборки журнала NMEA, чтобы данные могли быть проанализированы с помощью системного объекта nmeaParser.

Пример файла журнала nmeaLog.nmea, который включен в этот пример.

f = fopen('nmeaLog.nmea');
unParsedNMEAdata = fread(f);
pnmea = nmeaParser("MessageIDs",["RMC","GGA"]);
[rmcStruct, ggaStruct] = pnmea(unParsedNMEAdata)
rmcStruct=1×9 struct array with fields:
    TalkerID
    MessageID
    FixStatus
    Latitude
    Longitude
    GroundSpeed
    TrueCourseAngle
    UTCDateTime
    MagneticVariation
    ModeIndicator
    NavigationStatus
    Status

ggaStruct=1×9 struct array with fields:
    TalkerID
    MessageID
    UTCTime
    Latitude
    Longitude
    QualityIndicator
    NumSatellitesInUse
    HDOP
    Altitude
    GeoidSeparation
    AgeOfDifferentialData
    DifferentialReferenceStationID
    Status

Подробнее о

расширить все

Введенный в R2020b