nmeaParser
Analyser les données à partir de phrases NMEA standard et spécifiques au fabricant envoyées à partir d'appareils électroniques marins
Depuis R2020b
Description
Le nmeaParser
System object™ analyse les données de toutes les phrases NMEA (National Marine Electronics Association). Les phrases qui nécessitent une analyse des données peuvent être n'importe quelle phrase standard conforme aux spécifications NMEA 0183® (qui sont envoyées à partir d'un récepteur GNSS (Global Navigation Satellite System)), ou d'autres phrases spécifiques au fabricant approuvées par le NMEA (qui sont envoyés par d'autres appareils électroniques marins).
Le nmeaParser
System object fournit :
Prise en charge intégrée pour analyser les données envoyées par les récepteurs GNSS et identifiées par ces neuf types de messages NMEA : RMC, GGA, GSA, VTG, GLL, GST, ZDA, GSV et HDT
Configuration supplémentaire utilisant la paire nom-valeur
CustomSentence
pour analyser les données NMEA de plusieurs catégories d'appareils, y compris les phrases spécifiques au fabricant de différents fabricants de matériel.
Pour analyser les données des phrases NMEA :
Créez l'objet
nmeaParser
et définissez ses propriétés.Appelez l'objet avec des arguments, comme s'il s'agissait d'une fonction.
Pour en savoir plus sur le fonctionnement des objets système, voir What Are System Objects?
Le nmeaParser
System object génère un tableau de structures correspondant aux valeurs extraites des phrases NMEA spécifiées.
Création
Syntaxe
Description
renvoie un pnmea
= nmeaParsernmeaParser
System object, pnmea
, avec des propriétés par défaut, qui extrait les données de ces messages standards NMEA : RMC, GGA et GSA. L'ordre des tableaux de structure dans les données de sortie extraites est également : RMC, GGA et GSA.
renvoie un pnmea
= nmeaParser("MessageIDs", 'msgID')nmeaParser
System object, pnmea
, qui extrait les données de l'un des neuf messages standards NMEA avec prise en charge intégrée, spécifiés à l'aide des ID de message. Spécifiez msgID
comme "RMC"
, "GGA"
, "GSA"
, "GSV"
, "VTG"
, "GLL"
, "GST"
, "ZDA"
et "HDT"
, ou une combinaison de ces identifiants (par exemple : ["VTG","GLL","HDT"]
). L'ordre dans lequel vous spécifiez les ID de message détermine l'ordre des tableaux de structure dans les données de sortie extraites. La valeur par défaut est ["RMC","GGA","GSA"]
.
définit les propriétés en utilisant la paire nom-valeur pnmea
= nmeaParser("CustomSentence", {['CustomMessageId1','parserFunctionName1'],['CustomMessageId2','parserFunctionName2']})CustomSentence
et renvoie un nmeaParser
System object, pnmea
, qui extrait les données de tout message NMEA personnalisé (soit un message NMEA standard, soit un message NMEA spécifique au fabricant), spécifié à l'aide des ID de message.
La paire nom-valeur CustomSentence
accepte un cell array imbriqué où chaque élément est une paire de noms d'ID de message (soit le nom d'ID de message NMEA standard, soit l'ID de message spécifique au fabricant) et l'analyseur syntaxique correspondant (parser) défini par l'utilisateur, qui est créée en incluant la fonction extractNMEASentence
dans un fichier de fonction. L'ordre dans lequel vous spécifiez les ID de message détermine l'ordre des tableaux de structure dans les données extraites en sortie
renvoie un pnmea
= nmeaParser("MessageIDs", {'msgID1','msgID2'},"CustomSentence", {['CustomMessageId1','parserFunctionName1'],['CustomMessageId2','parserFunctionName2']})nmeaParser
System object, pnmea
, qui extrait les données de deux des neuf standards NMEA messages avec prise en charge intégrée ainsi que des messages NMEA personnalisés que vous avez spécifiés à l'aide de la paire nom-valeur CustomSentence
.
Arguments en entrée
Spécifiez des paires d'arguments facultatives sous la forme Name1=Value1,...,NameN=ValueN
, où Name
est le nom de l'argument et Value
est la valeur correspondante. Les arguments nom-valeur doivent apparaître après les autres arguments, mais l'ordre des paires n'a pas d'importance.
Avant R2021a, utilisez des virgules pour séparer chaque nom et valeur, et mettez Name
entre guillemets.
Exemple : pnmea = nmeaParser("CustomSentence", {['CustomMessageId1','parserFunctionName1'],['CustomMessageId2','parserFunctionName2']});
CustomSentence
— Spécifiez l'ID de message de n'importe quelle phrase et le nom de sa fonction d'analyse syntaxique (parser)
cell array de vecteurs de caractères
Spécifiez l'ID de message de toute phrase NMEA à partir de laquelle vous souhaitez extraire des données et le nom de la fonction d'analyse syntaxique (parser). Vous pouvez spécifier plusieurs ID de message et fonctions d'analyse syntaxique (parser) sous forme de cell array de vecteurs de caractères. La fonction d'analyse syntaxique (parser) est définie dans un fichier de fonctions, qui peut éventuellement inclure la fonction extractNMEASentence
.
Remarque
Le fichier de fonction de la fonction d'analyse syntaxique (parser) doit être présent dans le répertoire actuel ou sur le chemin MATLAB .
CustomSentence
accepte le nom de fonction ou le handle de fonction. Par exemple, ces deux formats sont valides :
pnmea = nmeaParser('CustomSentence', {['standardnmeaMessageId1','parserFunctionName1']}
parserFunctionHandle=@parserFunctionName1 pnmea = nmeaParser('CustomSentence', {['standardnmeaMessageId1',parserFunctionHandle]}
Remarque
L'utilisation de la paire nom-valeur CustomSentence
pour analyser les données au lieu de la fonction d'analyse syntaxique intégrée entraîne le remplacement des champs par défaut lors de l'analyse des données. Par exemple, nmeaParser('CustomSentence',{["RMC","parserRMC"]})
remplace le format par défaut des données analysées car RMC est l'une des neuf phrases avec prise en charge intégrée pour l'analyse des données.
Types de données : char
| string
Propriétés
Sauf indication contraire, les propriétés sont non réglables , ce qui signifie que vous ne pouvez pas modifier leurs valeurs après avoir appelé l'objet. Les objets se verrouillent lorsque vous les appelez et la fonction release
les déverrouille.
Si une propriété est ajustable , vous pouvez modifier sa valeur à tout moment.
Pour plus d'informations sur la modification des valeurs des propriétés, voir System Design in MATLAB Using System Objects.
MessageIDs
— ID de message de neuf phrases NMEA standard avec prise en charge intégrée pour extraire des données
["RMC","GGA","GSA"]
(par défaut) | RMC
| GGA
| GSA
| GSV
| VTG
| GLL
| GST
| ZDA
| HDT
ID de message de neuf phrases NMEA avec prise en charge intégrée, conformes à la norme NMEA 0183 , à partir de laquelle vous souhaitez extraire des données. Vous pouvez spécifier plusieurs ID de message sous forme de tableau de chaînes de caractères pour extraire des données de phrases NMEA.
Types de données : char
| string
Utilisation
Syntaxe
Description
[
analyse les données de neuf phrases NMEA standard avec prise en charge intégrée et renvoie un tableau de structures, où chaque structure correspond à un seul ID de message. La séquence que vous spécifiez pour les arguments de sortie doit être la même que celle que vous avez spécifiée pour les ID de message lors de la création du rmcData
,ggaData
,gsaData
,vtgData
,gllData
,gstData
,gsvData
,zdaData
,hdtData
] = pnmea(rawData
)nmeaParser
System object.
[
analyse les données de deux phrases NMEA personnalisées (soit une phrase NMEA standard, soit une phrase NMEA spécifique au fabricant) et renvoie un tableau de structures, où chaque structure correspond à un seul ID de message. La séquence que vous spécifiez pour les arguments de sortie doit être la même que celle que vous avez spécifiée dans la paire nom-valeur customNmeaData1
,customNmeaData2
] = pnmea(rawData
)CustomSentence
lors de la création du nmeaParser
System object.
Arguments en entrée
rawData
— Données NMEA obtenues à partir d'un appareil électronique marin
tableau de chaînes de caractères
Données NMEA, conformes à la norme NMEA, obtenues à partir d'un appareil électronique marin.
Types de données : string
| char
Arguments de sortie
rmcData
— Données extraites de la phrase RMC
structure
Données extraites d'une phrase RMC. La structure de sortie contient les informations analysées à partir d'une phrase RMC ainsi que l'état de l'analyse. Si plusieurs phrases RMC sont trouvées dans les données d'entrée, alors un tableau de structures est renvoyé. Pour plus de détails, voir Phrases du CMR.
ggaData
— Données extraites de la phrase GGA
structure
Données extraites d'une phrase GGA. La structure de sortie contient les informations analysées à partir d'une phrase GGA ainsi que l'état d'analyse. Si plusieurs phrases GGA sont trouvées dans les données d'entrée, alors un tableau de structures est renvoyé. Pour plus de détails, voir Phrases GGA.
gsaData
— Données extraites de la phrase GSA
structure
Données extraites d'une phrase GSA. La structure de sortie contient les informations analysées à partir d'une phrase GSA ainsi que l'état de l'analyse. Si plusieurs phrases GSA sont trouvées dans les données d'entrée, un tableau de structures est renvoyé. Pour plus de détails, voir Phrases GSA.
vtgData
— Données extraites de la phrase VTG
structure
Données extraites d'une phrase VTG. La structure de sortie contient les informations analysées à partir d'une phrase VTG ainsi que l'état d'analyse. Si plusieurs phrases VTG sont trouvées dans les données d'entrée, alors un tableau de structures est renvoyé. Pour plus de détails, voir Phrases VTG.
gllData
— Données extraites de la phrase GLL
structure
Données extraites d'une phrase GLL. La structure de sortie contient les informations analysées à partir d'une phrase GLL ainsi que l'état de l'analyse. Si plusieurs phrases GLL sont trouvées dans les données d'entrée, alors un tableau de structures est renvoyé. Pour plus de détails, voir Phrases GLL.
gstData
— Données extraites de la phrase TPS
structure
Données extraites d'une phrase de TPS. La structure de sortie contient les informations analysées à partir d'une phrase GST ainsi que l'état d'analyse. Si plusieurs phrases GST sont trouvées dans les données d'entrée, un tableau de structures est renvoyé. Pour plus de détails, voir Phrases relatives à la TPS.
gsvData
— Données extraites de la phrase GSV
structure
Données extraites d'une phrase GSV. La structure de sortie contient les informations analysées à partir d'une phrase GSV ainsi que l'état d'analyse. Les informations satellite complètes sont disponibles dans plusieurs structures gsvData. Chaque structure gsvData peut contenir un maximum de quatre informations satellite. Pour plus de détails, voir Phrases GSV.
zdaData
— Données extraites de la phrase ZDA
structure
Données extraites d'une phrase ZDA. La structure de sortie contient les informations analysées à partir d'une phrase ZDA ainsi que l'état d'analyse. Si plusieurs phrases ZDA sont trouvées dans les données d'entrée, un tableau de structures est renvoyé. Pour plus de détails, voir Phrases ZDA.
hdtData
— Données extraites de la phrase HDT
structure
Données extraites d'une phrase HDT. La structure de sortie contient les informations analysées à partir d'une phrase HDT ainsi que l'état d'analyse. Si plusieurs phrases HDT sont trouvées dans les données d'entrée, alors un tableau de structures est renvoyé. Pour plus de détails, voir Phrases HDT.
customNmeaData1
— Données extraites de toute phrase NMEA standard ou spécifique au fabricant
structure
Données extraites de toute phrase NMEA standard ou spécifique au fabricant. La structure de sortie contient les informations analysées à partir de la phrase personnalisée ainsi que l'état de l'analyse. Si plusieurs phrases du même type de message NMEA sont trouvées dans les données d'entrée, alors un tableau de structures est renvoyé.
Fonctions d'objet
Pour utiliser une fonction objet, spécifiez le System object comme premier argument d'entrée. Par exemple, pour libérer les ressources système d'un System object nommé obj
, utilisez cette syntaxe :
release(obj)
Exemples
Extraire les données des phrases NMEA à l'aide de la propriété MessageID
Extrayez les données de l'une des neuf phrases NMEA standard dans le cadre de la prise en charge intégrée à l'aide de la propriété MessageID. Les données NMEA sont obtenues à partir d'un récepteur GNSS.
Extraire les données de la phrase RMC
Créez un objet système nmeaParser en spécifiant l'ID de message comme RMC .
pnmea = nmeaParser("MessageID","RMC");
Fournissez la phrase RMC obtenue à partir du récepteur GNSS comme données d’entrée et d’extraction.
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
Extraire des données de plusieurs types de messages NMEA
Fournissez des phrases GGA, GSA et RMC comme entrée.
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'];
Créez un tableau de chaînes de caractères pour inclure les trois phrases
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'
Cependant, considérez que vous devez extraire les données uniquement des phrases GGA et GSA. Créez donc l'objet système nmeaParser 'pnmea' et spécifiez les ID de message 'GGA' et 'GSA' sous forme de tableau de chaînes de caractères.
pnmea=nmeaParser("MessageIDs",["GGA","GSA"]);
Spécifiez les arguments de sortie pour les trois phrases afin d'extraire les données sous forme de structures.
[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
Le résultat ci-dessus montre que seules les phrases GGA et GSA sont extraites en fonction des ID de message spécifiés en entrée.
Fournissez une autre phrase GGA comme entrée supplémentaire et extrayez les données. Dans ce cas, vous n'avez pas besoin de modifier le System object car l'ID du message n'a pas changé.
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=2×1 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
Un statut 0 indique que les données ont été analysées avec succès.
Extraire les données de la phrase GSV
Créez un objet système nmeaParser en spécifiant l'ID de message comme GSV .
pnmea = nmeaParser("MessageID","GSV");
Fournissez la phrase GSV obtenue à partir du récepteur GNSS comme données d’entrée et d’extraction.
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
Extraire les données de plusieurs phrases GSV
Fournissez plusieurs phrases GSV en entrée.
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';
Créez un tableau de chaînes de caractères pour inclure les trois phrases.
CRLF = [char(13),newline]; unparsedGSVLines = [unparsedGSVLine1,CRLF, unparsedGSVLine2, CRLF, unparsedGSVLine3];
Créez l'objet système nmeaParser pnmea , spécifiez l'ID de message GSV et extrayez les données.
pnmea = nmeaParser("MessageIDs","GSV"); gsvData = pnmea(unparsedGSVLines)
gsvData=3×1 struct array with fields: TalkerID MessageID NumSentences SentenceNumber SatellitesInView SatelliteID Elevation Azimuth SNR SignalID Status
Lire les données du journal NMEA
Lisez les données d'un exemple de journal NMEA, afin que les données puissent être analysées à l'aide de l'objet système nmeaParser.
L'exemple de fichier journal est nmeaLog.nmea
, qui est inclus dans cet exemple.
f = fopen('nmeaLog.nmea'); unParsedNMEAdata = fread(f); pnmea = nmeaParser("MessageIDs",["RMC","GGA"]); [rmcStruct, ggaStruct] = pnmea(unParsedNMEAdata)
rmcStruct=9×1 struct array with fields: TalkerID MessageID FixStatus Latitude Longitude GroundSpeed TrueCourseAngle UTCDateTime MagneticVariation ModeIndicator NavigationStatus Status
ggaStruct=9×1 struct array with fields: TalkerID MessageID UTCTime Latitude Longitude QualityIndicator NumSatellitesInUse HDOP Altitude GeoidSeparation AgeOfDifferentialData DifferentialReferenceStationID Status
Extraire des données à l'aide d'une paire nom-valeur CustomSentence
Vous pouvez extraire des données de n'importe quelle phrase NMEA en utilisant la paire nom-valeur CustomSentence
. Les données NMEA à analyser sont obtenues à partir d'appareils électroniques marins.
Identifiez la structure de la phrase NMEA et créez la fonction d'analyse syntaxique (parser)
Vous devez identifier la structure de la phrase NMEA, telle que définie dans la spécification, et utiliser ces informations pour définir la structure des données de sortie à utiliser dans l' System object nmeaParser.
Par exemple, considérons un exemple de phrase avec l'ID de message, SSS
.
Après avoir identifié la structure, vous créez un fichier de fonction qui définit la fonction d'analyse syntaxique (parser), fsssParser. Dans le fichier de fonction, vous définissez les données en sortie sous la forme d'un tableau de structure dont les champs correspondent à la séquence telle qu'elle apparaît dans la spécification.
La Navigation Toolbox™ fournit une fonction préconfigurée facultative, extractNMEASentence
, qui vérifie si la phrase est valide et convertit les champs de la phrase en tableau de chaînes de caractères. Vous pouvez appeler extractNMEASentence
dans le fichier de fonction. Vous pouvez également utiliser n'importe quelle autre fonction à la place (qui génère un tableau de chaînes de caractères à partir de données non analysées), puis l'appeler dans le fichier de fonction.
L'image ci-dessous montre le fichier de fonction avec le code, en supposant que les champs disponibles dans la phrase SSS
sont TalkerID, MessageID, UTC et LatitudeError. Reportez-vous aux commentaires supplémentaires pour plus de détails.
Dans l'exemple de fichier ci-dessus, vous définissez le mappage entre les champs du tableau de structure et les éléments du tableau de chaînes de caractères. Pour certains champs (par exemple, l'heure UTC), vous devrez peut-être définir un tableau de caractères pour mapper les champs.
Après avoir inclus le code MATLAB comme mentionné ci-dessus, enregistrez le fichier de fonction (fsssParser.m) dans le chemin MATLAB , afin de pouvoir l'appeler pour obtenir les données analysées en utilisant le nom-valeur CustomSentence
. Paire de nmeaParserObjet System object.
Pour télécharger un autre exemple de fichier de fonction parserRMB.m utilisé dans cet exemple, cliquez sur Ouvrir Live Script . Il s'agit d'un fichier de fonctions spécifique aux champs d'une phrase RMB (mentionné dans la norme NMEA, version 4.1).
Extraire les données de la phrase RMB
Créez un objet système nmeaParser en utilisant la paire nom-valeur CustomSentence et en spécifiant l'ID du message comme RMB » et la fonction comme « parserRMB » (téléchargé à l'étape précédente).
pnmea = nmeaParser("CustomSentence",{["RMB","parserRMB"]});
Fournissez la phrase RMB obtenue à partir du récepteur GNSS comme données d’entrée et d’extraction.
unparsedRMBLine='$GPRMB,A,4.08,L,EGLL,EGLM,5130.02,N,00046.34,W,004.6,213.9,122.9,A*3D';
rmbData = pnmea(unparsedRMBLine)
rmbData = «struct with fields:» TalkerID: "GP" MessageID: "RMB" DataStatus: 'A' CrossTrackError: 4.0800 DirectionToSteer: NaN OriginWaypointID: NaN DestinationWaypointID: NaN DestinationWaypointLatitude: '5130.02 N' DestinationWaypointLongitude: '00046.34 W' RangeToDestination: 4.6000 BearingToDestination: 213.9000 DestinationClosingVelocity: 122.9000 ArrivalStatus: 'A' ModeIndicator: "NA" Status: 0
Extraire les données de plusieurs phrases RMB
Fournissez plusieurs phrases RMB comme entrée.
unparsedRMBLine1 = ['$GPRMB,A,0.66,L,003,004,4917.24,N,12309.57,W,001.3,052.5,000.5,V*20']; unparsedRMBLine2 = ['$GPRMB,A,4.08,L,EGLL,EGLM,5130.02,N,00046.34,W,004.6,213.9,122.9,A*3D'];
Créez un tableau de caractères pour inclure les deux phrases
rawNMEAData = [unparsedRMBLine1 ,newline, unparsedRMBLine2]
rawNMEAData = '$GPRMB,A,0.66,L,003,004,4917.24,N,12309.57,W,001.3,052.5,000.5,V*20 $GPRMB,A,4.08,L,EGLL,EGLM,5130.02,N,00046.34,W,004.6,213.9,122.9,A*3D'
Spécifiez l'argument de sortie de la phrase RMB pour extraire les données.
[rmbData] = pnmea(rawNMEAData)
rmbData=«2×1 struct array with fields:» TalkerID MessageID DataStatus CrossTrackError DirectionToSteer OriginWaypointID DestinationWaypointID DestinationWaypointLatitude DestinationWaypointLongitude RangeToDestination BearingToDestination DestinationClosingVelocity ArrivalStatus ModeIndicator Status
Extraire les données d'une phrase avec prise en charge intégrée (RMC) et phrase RMB
Créez un objet système nmeaParser en utilisant la propriété MessageID (pour analyser une phrase avec prise en charge intégrée - RMC) et en utilisant également la paire nom-valeur CustomSentence (en spécifiant l'ID du message comme "RMB" et la fonction comme "parserRMB" (créée dans une étape précédente)).
pnmea = nmeaParser("MessageID","RMC","CustomSentence",{["RMB","parserRMB"]});
Fournissez des phrases RMC et RMB comme entrée.
unparsedRMCLine1 = ['$GNRMC,143909.00,A,5107.0020216,N,11402.3294835,W,0.036,348.3,210307,0.0,E,A*31']; unparsedRMBLine2 = ['$GPRMB,A,4.08,L,EGLL,EGLM,5130.02,N,00046.34,W,004.6,213.9,122.9,A*3D'];
Créez un tableau de chaînes de caractères pour inclure les deux phrases
rawNMEAData = [unparsedRMCLine1 ,newline, unparsedRMBLine2]
rawNMEAData = '$GNRMC,143909.00,A,5107.0020216,N,11402.3294835,W,0.036,348.3,210307,0.0,E,A*31 $GPRMB,A,4.08,L,EGLL,EGLM,5130.02,N,00046.34,W,004.6,213.9,122.9,A*3D'
Spécifiez l'argument de sortie de la phrase RMB pour extraire les données.
[rmcdata,rmbData] = pnmea(rawNMEAData)
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
rmbData = «struct with fields:» TalkerID: "GP" MessageID: "RMB" DataStatus: 'A' CrossTrackError: 4.0800 DirectionToSteer: NaN OriginWaypointID: NaN DestinationWaypointID: NaN DestinationWaypointLatitude: '5130.02 N' DestinationWaypointLongitude: '00046.34 W' RangeToDestination: 4.6000 BearingToDestination: 213.9000 DestinationClosingVelocity: 122.9000 ArrivalStatus: 'A' ModeIndicator: "NA" Status: 0
Extraire les données d'une phrase spécifique au fabricant à l'aide d'une paire nom-valeur CustomSentence
Identifiez la structure de la phrase spécifique au fabricant et créez un fichier de fonction avec la fonction d'analyse syntaxique (parser)
La structure de la phrase NMEA à analyser est disponible dans les spécifications de l'appareil auprès du fabricant. Vous devez identifier la structure et utiliser les informations pour définir la structure des données de sortie à utiliser dans l' System object nmeaParser.
Par exemple, la structure de la phrase NMEA d'un fabricant de matériel peut ressembler à ceci :
$PMMCZ,hhmmss.ss,Latitude,N,Longitude,E,NavSatellite,DR*hh<CR><LF>
Ici, P indique que la phrase est spécifique au fabricant, MMC est le code mnémonique du fabricant et Z est le type de phrase. Chaque champ indique ensuite une donnée spécifique (position, vitesse, temps, etc.). Certains fabricants utilisent deux caractères pour le type de phrase, suivis des champs de données.
Après avoir identifié la structure, créez la fonction d'analyse syntaxique (parser),
parserMMCZ
, en utilisant la fonction facultativeextractNMEASentence
, comme indiqué ci-dessous (vous pouvez également utiliser d'autres fonctions pour extraire les données non analysées vers chaînes, au lieu deextractNMEASentence
).function OutputData = parserMMCZ(unparsedData, MessageID) OutputData = struct("MessageID",MessageID,... "UTC","NA",... "Latitude",NaN,... "Longitude",NaN,... "NavigationSatellites",NaN,... "Status",uint8(1)); [isValid, splitString] = extractNMEASentence(unparsedData, MessageID); if(isValid) OutputData.MessageID = splitString(1); temp = char(splitString(2)); utcOutput = [temp(1:2), ':', temp(3:4), ':', temp(5:6)]; OutputData.UTC = utcOutput; OutputData.Latitude = str2double(splitString{3}); OutputData.Longitude = str2double(splitString{5}); OutputData.NavigationSatellites = str2double(splitString{7}); OutputData.Status = uint8(0); end end
Enregistrez
parserMMCZ.m
dans le chemin MATLAB .Extraire les données de la phrase spécifique au fabricant
Créez un objet système
nmeaParser
en utilisant la paire nom-valeurCustomSentence
et en spécifiant l'ID du message comme "MMCZ" et la fonction comme "parserMMCZ" (créée dans le précédent étape).pnmea = nmeaParser("CustomSentence",{["MMCZ","parserMMCZ"]});
Fournissez une phrase MMC obtenue à partir de l'appareil comme données d'entrée et d'extraction :
unparsedMMCLine='$PMMCZ,225444,4917.24,N,00046.34,E,3,DR*7C'; mmcData = pnmea(unparsedMMCLine)
mmcData = struct with fields: MessageID: "MMCZ" UTC: '22:54:44' Latitude: 4.9172e+03 Longitude: 46.3400 NavigationSatellites: 3 Status: 0
En savoir plus
Champ d'état
Le champ d'état affiché avec les valeurs extraites dans chaque structure de sortie peut être utilisé pour déterminer l'état d'analyse :
Status: 0
— La phrase est valide (la validation de la somme de contrôle est réussie et les données extraites sont conformes à l'ID de message demandé)Status: 1
— La somme de contrôle de la phrase à analyser n'est pas valideStatus: 2
— La phrase demandée n'est pas trouvée dans les données d'entrée
Remarque
Si une valeur n'est pas disponible dans la phrase d'entrée, la valeur de sortie correspondante est affichée sous la forme « NA » pour les valeurs de chaîne et « NaN » pour les valeurs numériques.
Phrases du CMR
Nom du champ affiché dans la structure de sortie une fois l'analyse terminée | Description |
---|---|
ID du locuteur | Identifiez le type d’appareil qui transmet les données. Par exemple, pour un récepteur GPS, le TalkerID est Type de données: |
ID du message | Type de message NMEA – Type de données: |
FixStatus | Valeurs possibles:
Type de données: |
Latitude | Latitude en degrés. Le Nord est considéré comme positif. Type de données: |
Longitude | Longitude en degrés. L'Est est considéré comme positif. Type de données: |
Vitesse au sol | Vitesse au sol en mètres par seconde (m/s) Type de données: |
AngleVraiCours | Cours sur le sol en degrés. Type de données: |
UTCDateHeure | Date et heure UTC Type de données: |
Variation Magnétique | Valeur de variation magnétique. La direction W est considérée comme négative Type de données: |
Indicateur de mode | Valeurs possibles:
Type de données: |
Statut de navigation | Valeurs possibles:
Type de données: |
Phrases GGA
Nom du champ affiché dans la structure de sortie une fois l'analyse terminée | Description |
---|---|
ID du locuteur | Identifiez le type d’appareil qui transmet les données. Par exemple, pour un récepteur GPS, le TalkerID est Type de données: |
ID du message | Type de message NMEA – Type de données: |
Heure UTC | Heure UTC ( Type de données: |
Latitude | Latitude en degrés. Le Nord est considéré comme positif. Type de données: |
Longitude | Longitude en degrés. L'Est est considéré comme positif. Type de données: |
Indicateur de qualité | Valeurs possibles:
Type de données: |
Nombre de satellites utilisés | Nombre de satellites utilisés. Cela pourrait être différent du nombre de satellites en vue. Type de données: |
HDOP | Dilution horizontale de précision Type de données: |
Altitude | Altitude au-dessus du niveau moyen de la mer en mètres Type de données: |
GéoïdeSéparation | Différence entre l'ellipsoïde et le niveau moyen de la mer en mètres Type de données: |
ÂgeDeDonnéesDifferentielles | Âge des corrections différentielles Type de données: |
ID de station de référence différentielle | ID de la station fournissant des corrections différentielles Type de données: |
Phrases GSA
Nom du champ affiché dans la structure de sortie une fois l'analyse terminée | Description |
---|---|
ID du locuteur | Identifiez le type d’appareil qui transmet les données. Par exemple, pour un récepteur GPS, le TalkerID est Type de données: |
ID du message | Type de message NMEA – Type de données: |
Mode | Valeurs possibles:
Type de données: |
Type de correctif | Valeurs possibles:
Type de données: |
Numéro d'identification des satellites | Numéros de satellite (tableau de 12 octets). Les champs vides seront affichés sous la forme Type de données: |
PDOP | Dilution de position de précision Type de données: |
VDOP | Dilution verticale de précision Type de données: |
HDOP | Dilution horizontale de précision Type de données: |
ID système | ID du système GNSS défini par NMEA Type de données: |
Phrases GSV
Nom du champ affiché dans la structure de sortie une fois l'analyse terminée | Description |
---|---|
ID du locuteur | Identifiez le type d’appareil qui transmet les données. Par exemple, pour un récepteur GPS, le TalkerID est Type de données: |
ID du message | Type de message NMEA – Type de données: |
Nombre de phrases | Nombre total de phrases. Les informations satellite complètes sont disponibles dans plusieurs phrases GSV. Ce champ indique le nombre total de structures Type de données: |
Numéro de phrase | Numéro de phrase de la ligne GSV actuellement analysée Type de données: |
SatellitesInView | Nombre total de satellites en vue Type de données: |
ID satellite | Numéros d'identification de satellite spécifiés sous forme de vecteur ligne de taille 1 par N, où N est le nombre d'informations satellite disponibles dans une phrase. La valeur maximale autorisée de N est 4. Type de données: |
Élévation | Altitude en degrés, spécifiée sous forme de vecteur ligne de taille 1 par N, où N est le nombre d'informations satellite disponibles dans une phrase. La valeur maximale autorisée de N est 4. La valeur maximale de l'élévation est de 90 degrés. Type de données: |
Azimut | Azimut en degrés, spécifié sous la forme d'un vecteur ligne de taille 1 par N, où N est le nombre d'informations satellite disponibles dans une phrase. La valeur maximale autorisée de N est 4. La plage de valeurs d'azimut est de [0-359] degrés. Type de données: |
RSB | Rapport signal/bruit en dB-Hz, spécifié sous forme de vecteur ligne de taille 1 par N, où N est le nombre d'informations satellite disponibles dans une phrase. La valeur maximale autorisée de N est 4. La plage de valeur SNR est de [0,99] dB. Type de données: |
ID de signal | ID de signal correspondant au SatelliteID. Cette valeur s'affiche uniquement si les phrases sont conformes à la norme NMEA 0183, version 4.1. Sinon, la valeur affichée est Type de données: |
Les valeurs possibles de SignalID et du canal de signal correspondant sont répertoriées dans ce tableau.
Système | TalkerID affiché dans les données analysées | ID satellite | ID de signal | Canal de signal |
---|---|---|---|---|
GPS | Médecin généraliste |
| 0 | Tous les signaux |
1 | L1 C/A | |||
2 | L1 P (Y) | |||
3 | L1M | |||
4 | L2P (Y) | |||
5 | L2C-M | |||
6 | L2C-L | |||
7 | L5-I | |||
8 | L5-Q | |||
GLONASS | GL |
| 0 | Tous les signaux |
1 | G1 C/A | |||
2 | G1P | |||
3 | G2 C/A | |||
4 | GLONASS (M) G2P | |||
GALILEE | Géorgie |
| 0 | Tous les signaux |
1 | E5a | |||
2 | E5b | |||
3 | E5a et E5b | |||
4 | E6-A | |||
5 | E6-BC | |||
6 | L1-A | |||
7 | L1-BC |
Phrases ZDA
Nom du champ affiché dans la structure de sortie une fois l'analyse terminée | Description |
---|---|
ID du locuteur | Identifiez le type d’appareil qui transmet les données. Par exemple, pour un récepteur GPS, le TalkerID est Type de données: |
ID du message | Type de message NMEA – Type de données: |
Heure UTC | Heure UTC Type de données: |
Jour UTC | Jour UTC Type de données: |
UTCMois | Mois UTC Type de données: |
Année UTC | Année UTC Type de données: |
HeuresZoneLocale | Heures de zone locale allant de Type de données: |
Minutes de la zone locale | Minutes de zone locale allant de Type de données: |
Phrases GLL
Nom du champ affiché dans la structure de sortie une fois l'analyse terminée | Description |
---|---|
ID du locuteur | Identifiez le type d’appareil qui transmet les données. Par exemple, pour un récepteur GPS, le TalkerID est Type de données: |
ID du message | Type de message NMEA – Type de données: |
Latitude | Latitude en degrés. Le Nord est considéré comme positif. Type de données: |
Longitude | Longitude en degrés. L'Est est considéré comme positif. Type de données: |
Heure UTC | Heure UTC Type de données: |
Validité des données | Statut de validité des données :
Type de données: |
Mode de positionnement | Valeurs possibles:
Type de données: |
Phrases VTG
Nom du champ affiché dans la structure de sortie une fois l'analyse terminée | Description |
---|---|
ID du locuteur | Identifiez le type d’appareil qui transmet les données. Par exemple, pour un récepteur GPS, le TalkerID est Type de données: |
ID du message | Type de message NMEA – Type de données: |
TrueCoursAngle | Parcours au sol (vrai) en degrés Type de données: |
Angle de parcours magnétique | Parcours au sol (magnétique) en degrés Type de données: |
Vitesse au sol | Vitesse au sol en mètres par seconde (m/s) Type de données: |
Indicateur de mode | Valeurs possibles:
Type de données: |
Phrases relatives à la TPS
Nom du champ affiché dans la structure de sortie une fois l'analyse terminée | Description |
---|---|
ID du locuteur | Identifiez le type d’appareil qui transmet les données. Par exemple, pour un récepteur GPS, le TalkerID est Type de données: |
ID du message | Type de message NMEA – Type de données: |
Heure UTC | Heure UTC Type de données: |
RMSStdDeviationOfRanges | Valeur RMS de l’écart type des gammes en mètres. Type de données: |
StdDeviationSemiMajorAxis | Écart type du demi-grand axe en mètres Type de données: |
StdDeviationSemiMinorAxis | Écart type du demi-petit axe en mètres Type de données: |
OrientationSemiMajorAxis | Orientation du demi-grand axe, en degrés Type de données: |
StdDeviationLatitudeErreur | Écart type de l'erreur de latitude, en mètres Type de données: |
StdDeviationLongitudeError | Écart type de l'erreur de longitude en mètres Type de données: |
StdDeviationAltitudeError | Écart type de l'erreur d'altitude en mètres Type de données: |
Phrases HDT
Nom du champ affiché dans la structure de sortie une fois l'analyse terminée | Description |
---|---|
ID du locuteur | Identifiez le type d’appareil qui transmet les données. Par exemple, pour un récepteur GPS, le TalkerID est Type de données: |
ID du message | Type de message NMEA – Type de données: |
TrueHeadingAngle | Cap en degrés par rapport au nord géographique Type de données: |
Historique des versions
Introduit dans R2020b
Commande MATLAB
Vous avez cliqué sur un lien qui correspond à cette commande MATLAB :
Pour exécuter la commande, saisissez-la dans la fenêtre de commande de MATLAB. Les navigateurs web ne supportent pas les commandes MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)