Seleziona la pagina che desideri visitare

 Cartografia elettronica DigiMap. Le carte ... vive

 

I formati delle stringhe NMEA utilizate da TourMap

Struttura delle frasi NMEA
Tutte le frasi NMEA sono costituite da una sequenza di caratteri ASCII, e costituiti da un prefisso, una serie di campi ed un checksum finale. L'inizio della frase è delimitato da un carattere "$", la fine da una sequenza CR LF ed i singoli campi sono separati da virgole. Esempio:$PREFISSO, campo, campo, …, campo, *checksum<CR><LF>
Se i dati per un campo non sono disponibili, il campo viene omesso, ma le virgole che lo delimiterebbero sono comunque aggiunte, senza spazi tra di loro.
Data e ora sono sempre riferiti al fuso di Greenwich senza eventuale ora legale.

 

$GPRMC - Recommended Minimum Specific GPS/TRANSIT Data
$GPRMC,125642.57,A,4512.72,N,00934.88,E,023.45,358.20,291105,1.2,E,A*44
 Campo  Formato Esempio   Descrizione
 1  hhmmss.ss  125642.57  Ora UTC-GPS
 2  A  A  Stato: A=Active, Attivo; V=Void, Nullo (per ricordarne il significato: è come una freccia in su/giù)
 3  ggpp.pp  4512.72 Latitudine della posizione attuale (numero variabile di decimali)
 4  A  N  Emisfero della posizione attuale: N=Nord; S=Sud
 5  gggpp.pp  00934.88  Longitudine della posizione attuale (numero variabile di decimali)
 6  A  E  Verso della posizione attuale: E=Est; W=Ovest
 7  x.x  023.45  Velocità al suolo, in nodi
 8  x.x  358.20  Track Made Good - Direzione di movimento, in gradi reali
 9  ddmmyy  291105  Data
 10  x.x  1.2  Variazione / declinazione magnetica , in gradi
 11  A  E  Verso della variazione / declinazione magnetica
 12  A  D  Tipo di rilevazione: A=Autonomous, D=Differential, E=Estimated, N=Non valid data (dalla versione 2.3)
 13  *CC *44   CheckSum
 ATTENZIONE: Sul disco la stringa viene memorizzata come:
@nn,$GPRMC,125642.57,A,4512.72,N,00934.88,E,023.45,358.20,291105,1.2,E,A*44
@nn è un campo riservato


$GPGGA - Global Positioning System fix data
$GPGGA,125642.57,4512.72,N,00934.88,E,1,8,1.9,540.4,M,45.8,M,8.0,1023*33
 Campo  Formato  Esempio  Descrizione
 1  hhmmss.ss  125642.57  Ora UTC - GPS
 2  ggpp.pp  4512.72  Latitudine della posizione attuale (numero di decimali variabile)
 3  A  N  Emisfero della posizione attuale: N=Nord; S=Sud
 4  gggpp.pp  00934.88  Longitudine della posizione attuale (numero di decimali variabile)
 5  A  E  Verso della posizione attuale: E=Est; W=Ovest
 6  n  1  Qualità del rilevamento GPS: 0=non valido; 1=GPS; 2=DGPS
 7  x  8  Numero di satelliti in vista (teorica, non necessariamente in uso o ricevuti)
 8  x.x 1.9   HDOP - Horizontal Dilution Of Precision
 9  x.x  540.4  Altitudine dell'antenna GPS relativa al livello medio del mare (geoide)
 10  A  M  Indicatore dell'unità di misura dell'altitudine M=metri
 11  x.x  45.8  Altezza (separazione) del geoide (livello medio del mare) rispetto all'elissiode WGS84
 12  A  M  Indicatore dell'unità di misura della separazione del geoide M=metri
 13  x.x  8.0  Tempo in secondi dall'ultimo aggiornamento DGPS
 14  nnnn  1023  Identificatore della stazione DGPS (0000-1023)
 15  *CC *33   CheckSum
 ATTENZIONE: Sul disco la stringa viene memorizzata come:
@nn,$GPGGA,125642.57,4512.72,N,00934.88,E,1,8,1.9,540.4,M,45.8,M,8.0,1023*33
@nn è un campo riservato


$GPIOP - Dati degli IO
$GPIOP,01001010,00000000,0.03,0.01,0.03,0.03*42
 Campo  Formato  Esempio  Descrizione
 1  $GPIOP  $GPIOP  Identificatore di sentenza
 2  bbbbbbbb  01001010  Stato degli INGRESSI (1:on, 0:off)
 3  bbbbbbbb  00000000  Stato delle USCITE (1:on, 0:off)
 4  yy.yy  0.03  Analogico 1
 5  yy.yy  0.01  Analogico 2
 6  yy.yy  0.03  Analogico 3
 7  yy.yy  0.03  Analogico 4
 8  *cc  *42  CheckSum
 ATTENZIONE: Sul disco la stringa viene memorizzata come:
hhmmss,$GPIOP,01001010,00000000,0.03,0.01,0.03,0.03*42
Dove hhmmss è l'orario (fuso di Greenwich, senza eventuale ora legale).Se il ricevitore GPS aveva disponibile l'orario, coincide con l'ora in cui è stata rilevata la stringa, altrimenti è l'ora di ricezione della stringa da parte di TourMap Server.



$GPTSP - Dati dei transponder
$GPTSP,260706,092900,A,4432.9986,N,01055.4016,E,1122334455,1*2D

 Campo  Formato  Esempio  Descrizione
 1  ddmmyy  260706  Data
 2  hhmmss.ss  092900  Ora UTC GPS
 3  fix  A  Fix (A:ok, V o S: not ok)
 4  ggpp.pp  4432.9986  Latitudine
 5  A  N  Latitudine (N o S)
 6  gggpp.pp  01055.4016 Longitudine 
 7  A  E  Longitudine (E o W)
 8  AAAAAAAAAA  1122334455  Dati letti dal transponder
 9  b  1  Campo fisso = 1
 10  *cc  *2D  CheckSum
 ATTENZIONE: In alcune versioni di TourMap, sul disco la stringa viene memorizzata come:
hhmmss, $GPTSP,260706,092900,A,4432.9986,N,01055.4016,E,1122334455,1*2D
Dove hhmmss è l'orario (fuso di Greenwich, senza eventuale ora legale) in cui è stata rilevata la stringa. Se il ricevitore GPS aveva disponibile l'orario, coincide con il campo n. 2, altrimenti è l'ora di ricezione della stringa da parte di TourMap Server.


$GPTSD - Dati dei transponder
$GPTSD,260706,092900,A,4432.9986,N,01055.4016,E,1234567890123456*2D
 Campo  Formato  Esempio  Descrizione
 1  ddmmyy  260706  Data
 2  hhmmss.ss  092900  Ora UTC GPS
 3  fix  A  Fix (A:ok, V o S: not ok)
 4  ggpp.pp  4432.9986  Latitudine
 5  A N  Latitudine (N o S) 
 6  gggpp.pp  01055.4016  Longitudine
 7  A  E  Longitudine (E o W)
 8  AAAAAAAAAAAAAAAAA  1234567890123456  Dati letti dal transponder
 9  *cc  *2D  CheckSum
 ATTENZIONE: In alcune versioni di TourMap, sul disco la stringa viene memorizzata come:
hhmmss, $GPTSD,260706,092900,A,4432.9986,N,01055.4016,E,1234567890123456*2D
Dove hhmmss è l'orario (fuso di Greenwich, senza eventuale ora legale) in cui è stata rilevata la stringa. Se il ricevitore GPS aveva disponibile l'orario, coincide con il campo n. 2, altrimenti è l'ora di ricezione della stringa da parte di TourMap Server.


$GPTSI - Identificativo del transponder
$GPTSI,260706,092900,A,4432.9986,N,01055.4016,E,1234567890123456*2D

 Campo  Formato Esempio  Descrizione
 1  ddmmyy  260706  Data
 2  hhmmss.ss  092900  Ora UTC GPS
 3  fix  A  Fix (A:ok, V o S: not ok)
 4  ggpp.pp  4432.9986   Latitudine
 5  A  N  Latitudine (N o S)
 6  gggpp.pp  01055.4016  Longitudine
 7  A  E  Longitudine (E o W)
 8  AAAAAAAAAAAAAAAAA  1234567890123456  Dati letti dal transponder
 9  *cc  *2D  CheckSum
 ATTENZIONE: In alcune versioni di TourMap, sul disco la stringa viene memorizzata come:
hhmmss, $GPTSD,260706,092900,A,4432.9986,N,01055.4016,E,1122334455*2D
Dove hhmmss è l'orario (fuso di Greenwich, senza eventuale ora legale) in cui è stata rilevata la stringa. Se il ricevitore GPS aveva disponibile l'orario, coincide con il campo n. 2, altrimenti è l'ora di ricezione della stringa da parte di TourMap Server.


La checksum
Al termine di ciascuna frase NMEA viene posto, dopo un asterisco, un checksum per poter individuare eventuali errori sulla linea di trasmissione tra emettitore e ascoltatore. La checksum è l' exclusive OR a 8-bit (senza i bit di start o stop) di tutti i caratteri della frase NMEA, compresi i delimitatori "," (le virgole), tra - ma escludendo - i delimitatori "$" e "*". Il valore esadecimale dei 4 bit più "alti" e "bassi" del risultato vengono convertiti in due caratteri ASCII (0-9, A-F). Viene trasmesso per primo il carattere più significativo.

Esempio di calcolo CheckSum
'====================================================================
'If the first char of A is $ then this function don't consider it.
'If there is "*nn" string at the end of sentence, then this function don't consider it.
'====================================================================
Function get_checksum$(b$)

Dim i%, j%, k%, nchk%, Lchk$, a$


a = b

If (InStr(a, "@") <> 0) Then
i = InStr(a, "$")
a = Mid(a, i, Len(a))
End If

j = 1
If (Mid(a, 1, 1) = "$") Then j = 2

k = InStr(a, "*")
If (k = 0) Then
k = Len(a)
Else
k = k - 1
End If

For i = j To k
nchk = nchk Xor Asc(Mid(a, i, 1))
Next

Lchk = Hex(nchk)
If (Len(Lchk) = 1) Then Lchk = "0" + Lchk

get_checksum = Lchk

End Function

Torna all'indice