Проанализируйте данные из стандартных предложений NMEA, отправленных от приемников GNSS
nmeaParser
Система object™ анализирует данные из некоторых стандартных NMEA (Ассоциация National Marine Electronics) предложения, которые отправляются от GNSS (Глобальная навигационная спутниковая система) приемник. Предложения NMEA, которым нужен парсинг, должны быть совместимыми с NMEA 0183® Стандарт, Версия 4.1.
Проанализировать данные из предложений NMEA:
Создайте nmeaParser
объект и набор его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?.
nmeaParser
Системный объект выводит массив структур, соответствующих значениям, извлеченным из заданных предложений NMEA.
возвращает pnmea
= nmeaParsernmeaParser
Системный объект, 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 Используя Системные объекты.
MessageIDs
— Идентификаторы сообщений предложений NMEA, чтобы извлечь данные["RMC","GGA","GSA"]
(значение по умолчанию) | RMC
| GGA
| GSA
| GSV
| VTG
| GLL
| GST
| ZDA
| HDT
Идентификаторы сообщений предложений NMEA, которые совместимы со Стандартом NMEA 0183, из которого вы хотите извлечь данные. Можно задать несколько идентификаторов сообщений как массив строк, чтобы извлечь данные из предложений NMEA.
Типы данных: char |
string
[
данные о синтаксических анализах и возвращают массив структур, где каждая структура соответствует одному Идентификатору сообщения. Последовательность, которую вы задаете для выходных аргументов, должна быть той же последовательностью, которую вы задали для Идентификаторов сообщений при создании rmcData
,ggaData
,gsaData
,vtgData
,gllData
,gstData
,gsvData
,zdaData
,hdtData
] = pnmea(rawData
)nmeaParser
Системный объект.
rawData
— Данные NMEA, как получено из приемника GNSSДанные NMEA, которые совместимы со Стандартом NMEA 0183, как получено из приемника GNSS.
Типы данных: string
| char
rmcData
— Данные извлечены из предложения RMCДанные извлечены из предложения RMC. Структура output содержит информацию, проанализированную от предложения RMC наряду с состоянием парсинга. Если несколько предложений RMC найдены во входных данных, то массив структур возвращен. Для получения дополнительной информации см. Предложения RMC.
ggaData
— Данные извлечены из предложения GGAДанные извлечены из предложения GGA. Структура output содержит информацию, проанализированную от предложения GGA наряду с состоянием парсинга. Если несколько предложений GGA найдены во входных данных, то массив структур возвращен. Для получения дополнительной информации см. Предложения GGA.
gsaData
— Данные извлечены из предложения GSAДанные извлечены из предложения GSA. Структура output содержит информацию, проанализированную от предложения GSA наряду с состоянием парсинга. Если несколько предложений GSA найдены во входных данных, то массив структур возвращен. Для получения дополнительной информации см. Предложения GSA.
vtgData
— Данные извлечены из предложения VTGДанные извлечены из предложения VTG. Структура output содержит информацию, проанализированную от предложения VTG наряду с состоянием парсинга. Если несколько предложений VTG найдены во входных данных, то массив структур возвращен. Для получения дополнительной информации см. Предложения VTG.
gllData
— Данные извлечены из предложения GLLДанные извлечены из предложения GLL. Структура output содержит информацию, проанализированную от предложения GLL наряду с состоянием парсинга. Если несколько предложений GLL найдены во входных данных, то массив структур возвращен. Для получения дополнительной информации см. Предложения GLL.
gstData
— Данные извлечены из предложения GSTДанные извлечены из предложения GST. Структура output содержит информацию, проанализированную от предложения GST наряду с состоянием парсинга. Если несколько предложений GST найдены во входных данных, то массив структур возвращен. Для получения дополнительной информации смотрите Предложения GST.
gsvData
— Данные извлечены из предложения GSVДанные извлечены из предложения GSV. Структура output содержит информацию, проанализированную от предложения GSV наряду с состоянием парсинга. Полная спутниковая информация доступна в нескольких gsvData структурах. Каждая gsvData структура может иметь максимум четырех спутниковой информации. Для получения дополнительной информации см. Предложения GSV.
zdaData
— Данные извлечены из предложения ZDAДанные извлечены из предложения ZDA. Структура output содержит информацию, проанализированную от предложения ZDA наряду с состоянием парсинга. Если несколько предложений ZDA найдены во входных данных, то массив структур возвращен. Для получения дополнительной информации см. Предложения ZDA.
hdtData
— Данные извлечены из предложения HDTДанные извлечены из предложения 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
Поле состояния, отображенное наряду с извлеченными значениями в каждой структуре output, может использоваться, чтобы определить состояние парсинга:
Status: 0
— Предложение допустимо (валидация контрольной суммы успешна, и извлеченные данные согласно требуемому Идентификатору сообщения),
Status: 1
— Контрольная сумма предложения, которое будет проанализировано, недопустима
Status: 2
— Требуемое предложение не найдено во входных данных
Примечание
Если значение не доступно во входном предложении, соответствующее выходное значение отображено как “NA” для значений строки и "NaN" для числовых значений.
Имя поля, отображенного в структуре output после парсинга, завершено | Описание |
---|---|
TalkerID | Идентифицируйте тип устройства, которое передает данные. Например, для GPS-приемника, TalkerID является Тип данных: |
MessageID | Тип сообщения NMEA – Тип данных: |
FixStatus | Возможные значения:
Тип данных: |
Широта | Широта в градусах. Север рассматривается положительным. Тип данных: |
Долгота | Долгота в градусах. Восток рассматривается положительным. Тип данных: |
GroundSpeed | Скорость по земле в метрах в секунду (m/s) Тип данных: |
TrueCourseAngle | Курс по земле в градусах. Тип данных: |
UTCDateTime | Дата и время UTC Тип данных: |
MagneticVariation | Магнитное значение изменения. Направление W рассматривается как отрицательное Тип данных: |
ModeIndicator | Возможные значения:
Тип данных: |
NavigationStatus | Возможные значения:
Тип данных: |
Имя поля, отображенного в структуре output после парсинга, завершено | Описание |
---|---|
TalkerID | Идентифицируйте тип устройства, которое передает данные. Например, для GPS-приемника, TalkerID является Тип данных: |
MessageID | Тип сообщения NMEA – Тип данных: |
UTCTime | Время UTC ( Тип данных: |
Широта | Широта в градусах. Север рассматривается положительным. Тип данных: |
Долгота | Долгота в градусах. Восток рассматривается положительным. Тип данных: |
QualityIndicator | Возможные значения:
Тип данных: |
NumSatellitesInUse | Количество спутников используется. Это могло отличаться от количества спутников в поле зрения. Тип данных: |
HDOP | Горизонтальное растворение точности Тип данных: |
Высота | Высота над средним уровнем моря в метрах Тип данных: |
GeoidSeparation | Различие между эллипсоидом и средним уровнем моря в метрах Тип данных: |
AgeOfDifferentialData | Возраст дифференциальных коррекций Тип данных: |
DifferentialReferenceStationID | ID станции, обеспечивающей дифференциальные коррекции Тип данных: |
Имя поля, отображенного в структуре output после парсинга, завершено | Описание |
---|---|
TalkerID | Идентифицируйте тип устройства, которое передает данные. Например, для GPS-приемника, TalkerID является Тип данных: |
MessageID | Тип сообщения NMEA – Тип данных: |
Режим | Возможные значения:
Тип данных: |
FixType | Возможные значения:
Тип данных: |
SatellitesIDNumber | Спутниковые числа (массив 12 байтов). Пустые поля будут отображены как Тип данных: |
PDOP | Растворение положения точности Тип данных: |
VDOP | Вертикальное растворение точности Тип данных: |
HDOP | Горизонтальное растворение точности Тип данных: |
SystemID | NMEA задал Системный ID GNSS Тип данных: |
Имя поля, отображенного в структуре output после парсинга, завершено | Описание |
---|---|
TalkerID | Идентифицируйте тип устройства, которое передает данные. Например, для GPS-приемника, TalkerID является Тип данных: |
MessageID | Тип сообщения NMEA – Тип данных: |
NumSentences | Общее количество предложений. Полная спутниковая информация доступна в нескольких предложениях GSV. Это поле указывает на общее количество Тип данных: |
SentenceNumber | Количество предложения в настоящее время проанализированной линии GSV Тип данных: |
SatellitesInView | Общее количество спутников в поле зрения Тип данных: |
SatelliteID | Спутниковые идентификационные номера задали как вектор-строка из размера 1 на n, где N является количеством спутниковой информации, доступной в одном предложении. Максимум, позволенный оцененным N, равняется 4. Тип данных: |
Вертикальное изменение | Вертикальное изменение в градусах в виде вектора-строки из размера 1 на n, где N является количеством спутниковой информации, доступной в одном предложении. Максимум, позволенный оцененным N, равняется 4. Максимальное значение Вертикального изменения является 90 градусами. Тип данных: |
Азимут | Азимут в градусах в виде вектора-строки из размера 1 на n, где N является количеством спутниковой информации, доступной в одном предложении. Максимум, позволенный оцененным N, равняется 4. Область значений значения Азимута [0-359] степени. Тип данных: |
ОСШ | Отношение сигнал-шум в дБ-Гц в виде вектора-строки из размера 1 на n, где N является количеством спутниковой информации, доступной в одном предложении. Максимум, позволенный оцененным N, равняется 4. Область значений значения ОСШ [0,99] дБ. Тип данных: |
SignalID | ID сигнала, соответствующий SatelliteID. Это значение отображено, только если предложения соответствуют Стандарту NMEA 0183, Версии 4.1. В противном случае отображенным значением является Тип данных: |
Возможные значения SignalID и соответствующего Канала Сигнала перечислены в этой таблице.
Система | TalkerID отображен в проанализированных данных | SatelliteID | SignalID | Канал сигнала |
---|---|---|---|---|
GPS | GP |
| 0 | Все сигналы |
1 | L1 C/A | |||
2 | L1 P (Y) | |||
3 | 1 МИЛЛИОН ФУНТОВ | |||
4 | L2 P (Y) | |||
5 | L2C-M | |||
6 | L2C-L | |||
7 | L5-I | |||
8 | L5-Q | |||
ГЛОНАСС | GL |
| 0 | Все сигналы |
1 | G1 C/A | |||
2 | G1 P | |||
3 | G2 C/A | |||
4 | ГЛОНАСС (M) G2 P | |||
ГАЛИЛЕО | GA |
| 0 | Все сигналы |
1 | E5a | |||
2 | 5 миллиардов евро | |||
3 | E5a и 5 миллиардов евро | |||
4 | E6-A | |||
5 | E6 ДО Н.Э | |||
6 | L1-A | |||
7 | L1-BC |
Имя поля, отображенного в структуре output после парсинга, завершено | Описание |
---|---|
TalkerID | Идентифицируйте тип устройства, которое передает данные. Например, для GPS-приемника, TalkerID является Тип данных: |
MessageID | Тип сообщения NMEA – Тип данных: |
UTCTime | Время UTC Тип данных: |
UTCDay | День UTC Тип данных: |
UTCMonth | Месяц UTC Тип данных: |
UTCYear | Год UTC Тип данных: |
LocalZoneHours | Локальные зональные часы в пределах от Тип данных: |
LocalZoneMinutes | Локальные зональные минуты в пределах от Тип данных: |
Имя поля, отображенного в структуре output после парсинга, завершено | Описание |
---|---|
TalkerID | Идентифицируйте тип устройства, которое передает данные. Например, для GPS-приемника, TalkerID является Тип данных: |
MessageID | Тип сообщения NMEA – Тип данных: |
Широта | Широта в градусах. Север рассматривается положительным. Тип данных: |
Долгота | Долгота в градусах. Восток рассматривается положительным. Тип данных: |
UTCTime | Время UTC Тип данных: |
DataValidity | Состояние валидности данных:
Тип данных: |
PositioningMode | Возможные значения:
Тип данных: |
Имя поля, отображенного в структуре output после парсинга, завершено | Описание |
---|---|
TalkerID | Идентифицируйте тип устройства, которое передает данные. Например, для GPS-приемника, TalkerID является Тип данных: |
MessageID | Тип сообщения NMEA – Тип данных: |
TrueCourseAngle | Курс по земле, (TRUE) в градусах Тип данных: |
MagneticCourseAngle | Курс по земле (магнитной) в градусах Тип данных: |
GroundSpeed | Скорость по земле в метрах в секунду (m/s) Тип данных: |
ModeIndicator | Возможные значения:
Тип данных: |
Имя поля, отображенного в структуре output после парсинга, завершено | Описание |
---|---|
TalkerID | Идентифицируйте тип устройства, которое передает данные. Например, для GPS-приемника, TalkerID является Тип данных: |
MessageID | Тип сообщения NMEA – Тип данных: |
UTCTime | Время UTC Тип данных: |
RMSStdDeviationOfRanges | Значение RMS стандартного отклонения областей значений в метрах. Тип данных: |
StdDeviationSemiMajorAxis | Стандартное отклонение полуглавной оси в метрах Тип данных: |
StdDeviationSemiMinorAxis | Стандартное отклонение полунезначительной оси в метрах Тип данных: |
OrientationSemiMajorAxis | Ориентация полуглавной оси, в градусах Тип данных: |
StdDeviationLatitudeError | Стандартное отклонение ошибки широты, в метрах Тип данных: |
StdDeviationLongitudeError | Стандартное отклонение ошибки долготы в метрах Тип данных: |
StdDeviationAltitudeError | Стандартное отклонение погрешности в определении высоты в метрах Тип данных: |
Имя поля, отображенного в структуре output после парсинга, завершено | Описание |
---|---|
TalkerID | Идентифицируйте тип устройства, которое передает данные. Например, для GPS-приемника, TalkerID является Тип данных: |
MessageID | Тип сообщения NMEA – Тип данных: |
TrueHeadingAngle | Заголовок в градусах относительно истинного севера Тип данных: |
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.