nmeaParser

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

Описание

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

Проанализировать данные из предложений NMEA:

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

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?.

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.

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

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

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

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

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

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

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

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

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

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием 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