Interfaccia esterna del ricevitore GNSS JAVAD GREIS
Specifiche
- Prodotto: Ricevitore GNSS GREIS
- Versione del firmware: 4.5.00
- Ultima revisione: 14 ottobre 2024
Informazioni sul prodotto
Il ricevitore GNSS GREIS è un dispositivo di interfaccia esterna ad alta precisione progettato da JAVAD GNSS, che fornisce informazioni di posizionamento accurate.
Introduzione
GREIS è un dispositivo versatile che può essere utilizzato per diverse applicazioni. Ecco alcuni punti chiave:
- Che cosa è GREIS: È un dispositivo di interfaccia esterno per ricevitori GNSS.
- Come si usa GREIS: Viene utilizzato per migliorare la funzionalità e la precisione dei sistemi GNSS.
- Elenchi: Per un elenco dettagliato delle funzionalità e caratteristiche supportate, fare riferimento al manuale.
- Oggetti: Esplora i diversi oggetti che possono essere utilizzati con GREIS per attività specifiche.
Lingua di input del ricevitore
La lingua di input del ricevitore consente agli utenti di interagire con il dispositivo utilizzando comandi e sintassi specifici. Ecco una breve panoramicaview:
- Lingua Es.amples: Impara dagli esempi fornitiampper capire come comunicare con il dispositivo.
- Sintassi del linguaggio: Familiarizzare con le regole sintattiche per l'invio di comandi al ricevitore.
- Comandi: Utilizza vari comandi per controllare e configurare il dispositivo in base alle tue esigenze.
Messaggi del destinatario
Comprendere i messaggi del destinatario è fondamentale per interpretare i dati e le informazioni sullo stato. Ecco cosa devi sapere:
- Convegni: Seguire formati e valori specifici per interpretare correttamente i messaggi.
- Flusso di messaggi standard: Esplora il formato standard dei messaggi per una trasmissione coerente dei dati.
Domande frequenti
D: Posso modificare il firmware del ricevitore GNSS GREIS?
R: No, la modifica del firmware non è consentita in base alle normative sul copyright di JAVAD GNSS.
D: Come posso accedere al supporto per problemi tecnici relativi al ricevitore GNSS GREIS?
R: Per supporto tecnico, contattare direttamente JAVAD GNSS per ricevere assistenza.
Grazie per aver acquistato il ricevitore JAVAD GNSS. I materiali disponibili in questa Guida di riferimento (la "Guida") sono stati preparati da JAVAD GNSS, Inc. per i proprietari di prodotti JAVAD GNSS. È progettata per assistere i proprietari nell'uso del ricevitore e il suo utilizzo è soggetto a questi termini e condizioni (i "Termini e condizioni").
Termini e Condizioni
USO PROFESSIONALE I ricevitori JAVAD GNSS sono progettati per essere utilizzati da un professionista. Ci si aspetta che l'utente abbia una buona conoscenza e comprensione delle istruzioni per l'utente e di sicurezza prima di utilizzare, ispezionare o regolare. Indossare sempre le protezioni richieste (scarpe di sicurezza, casco, ecc.) quando si utilizza il ricevitore.
ESCLUSIONE DI GARANZIA AD ECCEZIONE DI QUALSIASI GARANZIA IN QUESTA GUIDA O IN UNA SCHEDA DI GARANZIA CHE ACCOMPAGNA IL PRODOTTO, QUESTA GUIDA E IL RICEVITORE SONO FORNITI "COSÌ COME SONO". NON CI SONO ALTRE GARANZIE. JAVAD GNSS DECLINA OGNI GARANZIA IMPLICITA DI COMMERCIABILITÀ O IDONEITÀ PER QUALSIASI USO O SCOPO PARTICOLARE. JAVAD GNSS E I SUOI DISTRIBUTORI NON SARANNO RESPONSABILI PER ERRORI O OMISSIONI TECNICI O EDITORIALI NEL PRESENTE DOCUMENTO; NÉ PER DANNI ACCIDENTALI O CONSEGUENTI RISULTANTI DALLA FORNITURA, PRESTAZIONI O UTILIZZO DI QUESTO MATERIALE O DEL RICEVITORE. TALI DANNI ESCLUSI INCLUDONO, MA NON SONO LIMITATI A, PERDITA DI TEMPO, PERDITA O DISTRUZIONE DI DATI, PERDITA DI PROFITTI, RISPARMI O REDDITO, O PERDITA DELL'UTILIZZO DEL PRODOTTO. INOLTRE, JAVAD GNSS NON È RESPONSABILE PER DANNI O COSTI SOSTENUTI IN RELAZIONE ALL'OTTENIMENTO DI PRODOTTI O SOFTWARE SOSTITUTIVI, RECLAMI DA PARTE DI ALTRI, INCONVENIENTI O QUALSIASI ALTRO COSTO. IN OGNI CASO, JAVAD GNSS NON AVRÀ ALCUNA RESPONSABILITÀ PER DANNI O ALTRO NEI TUOI CONFRONTI O IN RELAZIONE A QUALSIASI ALTRA PERSONA O ENTITÀ IN SUPERAMENTO DEL PREZZO DI ACQUISTO DEL RICEVITORE.
CONTRATTO DI LICENZA Utilizzo di qualsiasi programma per computer o software fornito da JAVAD GNSS o scaricato da un JAVAD GNSS websito (il "Software") in relazione al destinatario costituisce l'accettazione di questi Termini e Condizioni in questa Guida e un accordo per rispettare questi Termini e Condizioni. All'utente viene concessa una licenza personale, non esclusiva e non trasferibile per utilizzare tale Software secondo i termini
PREFAZIONE Termini e Condizioni
qui indicato e in ogni caso solo con un singolo ricevitore o un singolo computer. Non puoi assegnare o trasferire il Software o questa licenza senza l'espresso consenso scritto di JAVAD GNSS. Questa licenza è valida fino alla sua risoluzione. Puoi risolvere la licenza in qualsiasi momento distruggendo il Software e la Guida. JAVAD GNSS può risolvere la licenza se non rispetti uno qualsiasi dei Termini o Condizioni. Accetti di distruggere il Software e la Guida al termine del tuo utilizzo del ricevitore. Tutti i diritti di proprietà, copyright e altri diritti di proprietà intellettuale sul Software appartengono a JAVAD GNSS. Se questi termini di licenza non sono accettabili, restituisci qualsiasi software e guida inutilizzati.
RISERVATEZZA Questa guida, il suo contenuto e il Software (collettivamente, le "Informazioni riservate") sono informazioni riservate e proprietarie di JAVAD GNSS. Accetti di trattare le Informazioni riservate di JAVAD GNSS con un livello di attenzione non meno rigoroso di quello che useresti per salvaguardare i tuoi segreti commerciali più preziosi. Nulla in questo paragrafo ti impedirà di divulgare Informazioni riservate ai tuoi dipendenti, come potrebbe essere necessario o appropriato per gestire o prendersi cura del ricevitore. Tali dipendenti devono anche mantenere riservate le Informazioni riservate. Nel caso in cui tu fossi legalmente obbligato a divulgare una qualsiasi delle Informazioni riservate, dovrai darne immediata comunicazione a JAVAD GNSS in modo che possa richiedere un ordine di protezione o un altro rimedio appropriato.
WEBSITO; ALTRE DICHIARAZIONI Nessuna dichiarazione è contenuta nel JAVAD GNSS websito (o qualsiasi altro websito) o in qualsiasi altro annuncio pubblicitario o letteratura JAVAD GNSS o realizzato da un dipendente o appaltatore indipendente di JAVAD GNSS modifica i presenti Termini e condizioni (inclusa la licenza del software, la garanzia e la limitazione di responsabilità).
SICUREZZA L'uso improprio del ricevitore può causare lesioni a persone o proprietà e/o malfunzionamento del prodotto. Il ricevitore deve essere riparato solo da centri di assistenza in garanzia JAVAD GNSS autorizzati.
VARIE I Termini e Condizioni di cui sopra possono essere modificati, emendati, sostituiti o annullati in qualsiasi momento da JAVAD GNSS. I Termini e Condizioni di cui sopra saranno regolati e interpretati in conformità con le leggi dello Stato della California, senza riferimento a conflitti di legge.
Che cosa è GREIS
GREIS è un linguaggio di interfaccia che consente all'utente di comunicare in modo efficace con i ricevitori GNSS accedendo a tutte le loro capacità e funzioni.
GREIS rappresenta una struttura di linguaggio generica del ricevitore per l'intera gamma di hardware JAVAD GNSS. Questa struttura di linguaggio è indipendente dal ricevitore e aperta a future modifiche o espansioni. GREIS si basa su un approccio unificato che consente all'utente di controllare un ricevitore JAVAD GNSS utilizzando un set appropriato di oggetti denominati. La comunicazione con questi oggetti è ottenuta tramite comandi e messaggi predefiniti. Non ci sono vincoli specifici sul numero o sul tipo di oggetti del ricevitore utilizzati.
Come viene utilizzato GREIS
Qualsiasi sistema che comunica con il ricevitore JAVAD GNSS tramite una delle sue porte (seriale, parallela, USB, Ethernet, ecc.) utilizzerà i comandi e i messaggi GREIS per portare a termine l'attività richiesta. Un paio di applicazioni tipiche in cui GREIS svolge un ruolo molto importante sono, in primo luogo, l'utilizzo di controller portatili per comunicare con i ricevitori durante le operazioni sul campo in progetti di rilevamento e RTK o, in secondo luogo, quando si scaricano dati dai ricevitori in sistemi desktop per un'ulteriore post-elaborazione. Un'applicazione di post-elaborazione di per sé non utilizza i comandi GREIS, ma deve essere a conoscenza dei messaggi GREIS per estrarre i dati dai dati files.
Una caratteristica importante di GREIS è che può essere utilizzato efficacemente sia per il controllo automatico che manuale dei ricevitori JAVAD GNSS. Per il controllo manuale, l'utente immetterà i comandi GREIS necessari nel ricevitore tramite un terminale. Ciò è facilmente realizzabile poiché GREIS è progettato per essere un'interfaccia di testo leggibile dall'uomo. D'altro canto, GREIS obbedisce a regole piuttosto rigide che lo rendono facile da usare da parte delle applicazioni.
Elenchi
GREIS utilizza ampiamente il concetto di liste. Le liste sono utilizzate sia nella lingua di input del destinatario che nei messaggi di testo standard.
INTRODUZIONE Oggetti
Gli elenchi in GREIS sono rappresentati da una sequenza di elementi delimitati da virgola (,, codice ASCII 44) e racchiusi tra parentesi graffe ({}, codici ASCII 123 e 125):
{elemento1,elemento2,elemento3}
A loro volta, gli elementi di un elenco possono essere essi stessi elenchi:
{e1,{ee21,ee22},e3}
Pertanto la definizione di cui sopra è ricorsiva, per cui sono consentite liste di profondità di annidamento arbitraria. Gli elementi che non sono liste sono chiamati elementi foglia, o semplicemente foglie. Gli elementi delle liste potrebbero essere vuoti, nel qual caso diciamo che l'elemento è omesso. Ad esempioample, nell'elenco sottostante, il secondo elemento è omesso:
{e1,,e3}
Gli spazi prima e dopo i delimitatori sono consentiti e ignorati. Se gli elementi di un elenco hanno tutti la stessa sottostringa (prefisso) all'inizio, questa sottostringa potrebbe essere spostata fuori dalle parentesi graffe che circondano l'elenco, ad esempio,
elemento{1,2,3}
è una forma abbreviata di
{elemento1,elemento2,elemento3}
Gli elementi potrebbero essere racchiusi tra virgolette doppie (“, codice ASCII 34) che vengono eliminate durante l'analisi. All'interno dell'elemento tra virgolette, i simboli speciali (parentesi graffe, virgole, ecc.) perdono il loro ruolo e sono considerati caratteri normali. Un altro uso delle virgolette è quello di distinguere tra le condizioni "elemento non specificato" e "elemento vuoto specificato". La prima è indicata semplicemente omettendo un elemento dall'elenco, e la seconda è indicata inserendo una coppia di virgolette doppie tra le virgole. Le virgolette sono utili anche quando si hanno bisogno di spazi iniziali o finali in una stringa. Per inserire virgolette doppie in un elemento, virgoletta questo elemento e fai escape delle virgolette doppie all'interno con il carattere barra rovesciata (, codice ASCII 92). Per inserire la barra rovesciata da sola in una stringa tra virgolette, fai escape con un'altra barra rovesciata, ad esempioampon:
Example: “Stringa con “virgolette”, barra rovesciata \ e caratteri speciali, {}”
1.4 oggetti
Nel contesto del modello su cui si basa GREIS, un ricevitore JAVAD GNSS viene identificato con un set di oggetti denominati.
GREZZO
www.javad.com
20
INTRODUZIONE Oggetti
Identificatori di oggetti
L'oggetto è definito come un'entità hardware o software del ricevitore che può essere indirizzata, impostata o interrogata. Le entità hardware sono comunemente chiamate dispositivi, mentre gli oggetti firmware sono normalmente files e parametri. Le porte del ricevitore e i moduli di memoria sono tutti buoni exampdi dispositivi. Tutti i dispositivi, files e parametri sono trattati in modo uniforme da GREIS. Ogni oggetto ha un set associato di attributi a cui è possibile accedere, definire e/o modificare tramite GREIS.
1.4.1 Identificatori di oggetto
È già stato detto che un ricevitore è considerato come un insieme di oggetti (dispositivi, files, messaggi, parametri, ecc.) nel contesto del modello GREIS. Ai fini dell'indirizzamento degli oggetti nei comandi del ricevitore, a ogni oggetto dovrebbe essere assegnato un identificatore univoco.
Gli oggetti nel ricevitore sono organizzati logicamente in gruppi. Un gruppo è anch'esso un oggetto e appartiene a un altro gruppo, a meno che non sia il gruppo radice. Quindi tutti gli oggetti nel ricevitore sono organizzati in una gerarchia ad albero che inizia dal singolo gruppo radice. Questa rappresentazione assomiglia all'organizzazione di filein directory (cartelle) note alla maggior parte degli utenti di computer.
In GREIS, i gruppi di oggetti sono rappresentati come elenchi di nomi di oggetti corrispondenti. Il nome dell'oggetto è univoco all'interno dell'elenco a cui appartiene l'oggetto. L'identificatore di oggetto univoco globale è definito come tutti i nomi di oggetto sul percorso attraverso l'albero degli oggetti dall'elenco radice all'oggetto, delimitato dalla barra (/). L'elenco radice stesso è identificato dalla barra singola.
ExampI tipi di identificatori di oggetti sono:
Example: Il gruppo radice:
/
Example: ID elettronico del destinatario:
/par/ricevi/id
Example: velocità in baud della porta seriale A:
/par/dev/ser/a/tasso
Example: Attributi (dimensione e ora dell'ultima modifica) del file NOME (file gli attributi sono diversi dagli attributi degli oggetti discussi di seguito):
/log/NOME
Example: frase NMEA GGA:
GREZZO
www.javad.com
21
INTRODUZIONE Output periodico
Tipi di oggetti
/msg/nmea/GGA
Tutti gli oggetti hanno uno o più attributi associati. Gli attributi degli oggetti sono identificati aggiungendo il carattere & e il nome dell'attributo all'identificatore dell'oggetto. L'attributo primario di ogni oggetto è il valore. Questo attributo è sempre accessibile implicitamente dai comandi GREIS. Alcuni oggetti possono avere attributi aggiuntivi, ad esempioample: esample: Porta seriale A velocità in baud predefinita:
/par/dev/ser/a/rate&def
Example: Contenuto del file NOME:
/log/NOME&contenuto
1.4.2 Tipi di oggetti
Ogni oggetto nel ricevitore ha un tipo GREIS associato. Il tipo di un oggetto definisce il suo comportamento rispetto ai comandi GREIS. In particolare, il tipo definisce quali valori l'oggetto può assumere e quali comandi particolari sono applicabili all'oggetto.
Per una descrizione dettagliata dei tipi di oggetti attualmente supportati, fare riferimento a “Tipi di oggetti primari” a pagina 184.
GREZZO
1.5 Uscita periodica
Un ruolo importante nell'operazione del ricevitore è la sua capacità di emettere periodicamente alcune informazioni, come diversi tipi di misurazioni, valori calcolati, ecc., secondo una pianificazione specificata. GREIS definisce un ricco set di messaggi contenenti diversi tipi di informazioni in diversi formati che sono unità minime di output e fornisce metodi per richiedere l'output periodico di qualsiasi combinazione di messaggi in qualsiasi ordine su uno qualsiasi dei supporti supportati adatti all'output dei dati. Qualsiasi supporto supportato adatto all'output dei dati è chiamato flusso di output in GREIS.
Per ogni flusso di output, il ricevitore mantiene un elenco di messaggi che sono attualmente abilitati per essere emessi nel flusso, chiamato elenco di output. L'ordine in cui i messaggi vengono emessi corrisponde all'ordine dei messaggi nell'elenco di output. Inoltre, ogni messaggio presente in un elenco di output ha il suo set di parametri di pianificazione associati. I parametri di pianificazione allegati a un messaggio in un elenco di output definiscono la pianificazione di emissione di questo particolare messaggio in questo particolare flusso di output. GREIS fornisce tre com-
www.javad.com
22
INTRODUZIONE Uscita periodica Periodo e fase di uscita
mands, em, out e dm, per consentire una manipolazione efficiente degli elenchi di output e dei parametri di pianificazione.
I parametri di pianificazione dei messaggi comprendono quattro campi: periodo, fase, conteggio e flag, ognuno dei quali svolge un ruolo diverso nella definizione della pianificazione dell'output. Di seguito descriveremo esattamente come i loro valori influenzano l'output, ma fondamentalmente, il periodo specifica l'intervallo tra gli output del messaggio; la fase specifica lo spostamento temporale dei momenti di output rispetto ai momenti di tempo in cui l'ora corrente è un multiplo del periodo; il conteggio, quando maggiore di zero, limita il numero di volte in cui il messaggio verrà emesso; mentre i flag filed consente una messa a punto precisa del processo di output.
1.5.1 Periodo e fase di output
Nota:
I campi periodo e fase dei parametri di schedulazione dei messaggi sono valori in virgola mobile nell'intervallo [0…86400) secondi. Il loro significato esatto è descritto di seguito.
Quando il bit F_CHANGE è impostato nel campo flag dei parametri di schedulazione, il campo fase perde il suo ruolo usuale e diventa invece "periodo di output forzato". Vedere la descrizione del flag F_CHANGE di seguito per i dettagli.
Il ricevitore ha la sua griglia temporale interna che è definita dall'orologio del ricevitore e dal valore del parametro /par/raw/curmsint che definisce il passo delle epoche interne del ricevitore. Le epoche interne del ricevitore si verificano quando il tempo del ricevitore è multiplo del passo. A sua volta, il tempo del ricevitore è definito come il valore dell'orologio del ricevitore modulo un giorno (86400 secondi). Il ricevitore esegue la scansione degli elenchi di output solo nelle epoche interne del ricevitore, in modo che nessun output possa essere generato più frequentemente di così.
Tenendo conto della griglia temporale interna, le variabili periodo e fase definiscono gli istanti temporali dell'output di un messaggio come segue: il destinatario emetterà il messaggio solo negli istanti del destinatario Tout che soddisfano simultaneamente le due equazioni seguenti:
Periodo Toutmod = fase
(1)
Tout = N passo (2)
GREZZO
dove N è un numero intero che assume i valori [0,1,2,…,(86400/passo)-1].
La prima equazione definisce la regola di base dell'output dei messaggi, mentre la seconda impone vincoli aggiuntivi relativi alle epoche del ricevitore interno. Si noti che nel caso più comune, quando sia il periodo che la fase sono multipli di passo, la seconda equazione è soddisfatta automaticamente ogni volta che è soddisfatta la prima equazione. Si noti inoltre che se
86400 (periodo mod) 0,
www.javad.com
23
INTRODUZIONE Output periodico
Conteggio in uscita
Exampon:
Example: esampon:
l'intervallo effettivo tra l'ultimo messaggio inviato prima del rollover giornaliero e il primo messaggio inviato dopo il rollover giornaliero sarà diverso dal valore del periodo.
Considera un paio di exampche illustrano questo meccanismo:
Supponiamo che il periodo sia 10s, la fase sia 2.2s e il passo sia 0.2s. Poiché Tout, secondo la seconda equazione, può assumere solo valori multipli di passo, la parte sinistra della prima equazione assumerà i seguenti valori: 0, 0.2, 0.4, …, 9.8, 0, …, da cui solo il valore 2.2 corrisponde a fase. Queste corrispondenze si verificheranno e il messaggio verrà emesso ogni volta che Tout assume uno dei seguenti valori: 2.2s, 12.2s, 22.2s, ecc.
Supponiamo che il periodo sia 10s, la fase 2.2s e il passo 0.5s. Il ricevitore non emetterà il messaggio poiché la coppia di equazioni simultanee di cui sopra non è mai soddisfatta.
Supponiamo che fase > periodo. Il ricevitore non invierà affatto il messaggio poiché la prima equazione non sarà mai soddisfatta.
1.5.2 Conteggio output
Nota:
Il campo conteggio dei parametri di pianificazione dei messaggi è un valore intero compreso nell'intervallo [-256…32767) e ha due scopi diversi:
1. Quando il conteggio è 0, verrà emesso un numero illimitato di messaggi. Quando il conteggio è maggiore di 0, definisce quante volte verrà emesso il messaggio. In questo caso il contatore viene decrementato di 1 ogni volta che viene emesso il messaggio e quando diventa 0, il bit F_DISABLED viene impostato nel campo flag. Lo scheduler dei messaggi non emette messaggi con il bit F_DISABLED impostato.
2. Quando il conteggio è impostato su un valore compreso nell'intervallo [-256…-1], l'output del messaggio non viene soppresso e il campo conteggio ha uno scopo completamente diverso. Consente di avvolgere il messaggio in un messaggio speciale [>>] prima dell'output (vedere "[>>] Wrapper" a pagina 132). Il valore di conteggio viene quindi utilizzato per impostare il campo id nel messaggio [>>] generato in modo che l'id sia numericamente uguale a (-1 – conteggio).
La funzione di avvolgimento è utile, ad esempioample, per un'applicazione server che riceve messaggi dal ricevitore e li inoltra a più client. Può richiedere l'incapsulamento di messaggi arbitrari nei messaggi [>>] con identificatori diversi, scartare i messaggi ricevuti e inviare i dati a specifici client in base all'ID ricevuto. Utilizzando questa funzionalità, tale applicazione non ha bisogno di essere a conoscenza di altri formati di dati se non del formato del messaggio [>>] e può utilizzare un singolo canale di comunicazione con il ricevitore per ricevere e inviare messaggi in formati diversi.
GREZZO
www.javad.com
24
1.5.3 Flag di output
INTRODUZIONE Output periodico
Flag di output
Il campo flag dei parametri di schedulazione dei messaggi è un campo di bit largo 16 bit. Ogni bit di questo campo di bit è un flag separato e ha uno scopo diverso. Di seguito è riportato un elenco dei flag di schedulazione dei messaggi.
Tabella 1-1. Flag di pianificazione dei messaggi
Morso#
0 1 2 3 4 5 6 7 8 9 10 11 12
ESAGONO
0x0001 0x0002 0x0004 0x0008 0x0010 0x0020 0x0040 0x0080 0x0100 0x0200 0x0400 0x0800 0xF000
Nome
F_OUT F_CHANGE F_OUT_ON_ADD F_NOTENA F_FIX_PERIOD F_FIX_PHASE F_FIX_COUNT F_FIX_FLAGS riservato riservato riservato F_DISABLED riservato
Nota: i nomi dei campi sono introdotti qui solo allo scopo di farvi riferimento in questo manuale. Non c'è modo di utilizzarli nei comandi GREIS.
F_OUT Se questo flag è impostato, i primi messaggi dopo l'invocazione del comando corrispondente verranno emessi nell'epoca del ricevitore interno più vicina all'ora di esecuzione del comando, indipendentemente da quanto specificato dal parametro di pianificazione del periodo.
F_CHANGE Se questo flag è impostato, il messaggio corrispondente verrà emesso solo se i dati del messaggio sono cambiati dall'ultima emissione del messaggio nel flusso di output specificato. Il ricevitore controlla se i dati del messaggio sono cambiati solo nei momenti definiti dalle equazioni (1), (2) in cui la variabile fase è impostata a zero e la variabile periodo è impostata al valore del campo periodo. Il parametro di pianificazione del messaggio fase, che in questo caso perde la sua funzione originale, ora svolge il ruolo di un periodo di output forzato. "Output forzato" significa che il messaggio corrispondente verrà emesso indipendentemente dal fatto che il suo contenuto sia cambiato o meno nei momenti definiti dalle equazioni (1), (2) in cui la variabile periodo è impostata al valore del campo fase e la variabile fase è impostata a zero. Se il campo fase è zero, il ricevitore non esegue alcun output forzato in modo che il messaggio corrispondente venga emesso solo a condizione che i suoi dati siano cambiati.
GREZZO
www.javad.com
25
INTRODUZIONE Output periodico
Flag di output
F_OUT_ON_ADD Se questo flag è impostato, il primo messaggio verrà emesso immediatamente dopo l'esecuzione del comando em o out corrispondente. Questo flag viene ignorato per la maggior parte dei messaggi1.
F_NOTENA Se questo flag è impostato per un messaggio in un elenco di output, il flag F_DISABLED per questo messaggio non verrà cancellato quando il messaggio è abilitato e quindi il suo output rimarrà sospeso. Ad esempioample, questo flag viene utilizzato per non visualizzare in output alcuni messaggi dal set di messaggi predefinito quando l'utente modifica al volo il periodo di output, senza prima disabilitare l'output.
F_FIX_PERIOD, F_FIX_PHASE, F_FIX_COUNT, F_FIX_PERIOD Impostati su 1 nei parametri di pianificazione, impediscono modifiche ai campi corrispondenti di questi parametri di pianificazione tramite i comandi em e out.
F_DISABLED Non è programmabile in modo esplicito dall'utente. Quando si abilita un messaggio con un conteggio positivo, quindi, dopo che questo messaggio è stato emesso count volte, lo scheduler dei messaggi imposta questo flag su 1. Questo flag viene cancellato su 0 quando il messaggio viene riabilitato, a meno che il flag F_NOTENA non sia impostato per questo messaggio.
1. Attualmente solo due messaggi GREIS, [JP] e [MF], rispettano questo flag.
GREZZO
www.javad.com
26
Capitolo 2
LINGUA DI INPUT DEL RICEVITORE
Questo capitolo descrive la sintassi e la semantica del linguaggio di input del ricevitore. Iniziamo con alcuni esempiampper dare al lettore un'idea del linguaggio, poi passare alla definizione dettagliata della sintassi e infine descrivere tutti i comandi definiti insieme alla loro semantica.
2.1 Lingua Esamples
Ecco alcuni esempiamples di affermazioni reali che il destinatario comprende insieme alle risposte del destinatario. Troverai più esempiamples di utilizzo di comandi specifici nelle sottosezioni corrispondenti. L'input al ricevitore è contrassegnato dal carattere , mentre l'output del ricevitore è contrassegnato dal carattere :
Example: Chiedere al destinatario di stampare il suo ID elettronico. Il destinatario genera il messaggio di risposta mostrato:
Exampon:
stampa,/par/rcv/id RE00C QP01234TR45
Chiedere al ricevitore di impostare la velocità in baud della sua porta seriale A a 9600. Il ricevitore esegue correttamente il comando e non genera alcuna risposta.
imposta,/par/dev/ser/a/rate,9600
Example: utilizzare lo stesso comando dell'esempio precedenteample, ma forza il destinatario a generare una risposta mediante l'utilizzo dell'identificatore di istruzione.
Exampon:
%set_rate%set,/par/dev/ser/a/rate,9600 RE00A%set_rate%
Tenta di impostare una velocità in baud troppo alta. Il ricevitore risponde con un messaggio di errore anche se non abbiamo utilizzato alcun identificatore di istruzione.
set,/par/dev/ser/a/rate,1000000 ER016{4, valore fuori intervallo}
Nota:
Il ricevitore inserisce sempre le sue risposte normali e di errore in due messaggi standard, rispettivamente [RE] e [ER]. Per maggiori informazioni sul formato dei messaggi GREIS, fare riferimento a "Formato generale dei messaggi" a pagina 64. I messaggi [RE] e [ER] stessi sono descritti in "Messaggi interattivi" a pagina 129.
GREZZO
www.javad.com
27
LINGUA DI INPUT DEL RICEVITORE Sintassi della lingua
2.2 Sintassi del linguaggio
GREIS definisce righe di caratteri ASCII di lunghezza arbitraria1, delimitate da un ritorno a capo ( , codice decimale ASCII 13), o avanzamento riga ( , codice decimale ASCII 10) caratteri, per essere gli elementi di sintassi di livello superiore del linguaggio. Le righe vuote sono consentite e ignorate in GREIS. Di conseguenza, una riga potrebbe essere delimitata da qualsiasi combinazione di e/o caratteri. Consente a GREIS di supportare senza problemi le convenzioni di fine riga WindowsTM, MacTM e UNIXTM.
La lingua di input del ricevitore è sensibile alle maiuscole e alle minuscole. Ciò significa che, ad esempioample stringhe GREIS, greis e gReIs, essendo stringhe diverse, sono effettivamente considerate tali dal ricevente.
Il simbolo del cancelletto (#, codice ASCII 35) è il carattere di introduzione del commento. Il ricevitore ignora tutto ciò che inizia da questo carattere fino alla fine della riga.
Dopo che il commento (se presente) è stato rimosso dalla riga, il ricevitore rimuove gli spazi iniziali e finali, quindi suddivide la riga in istruzioni. Le istruzioni sono delimitate da punto e virgola (;, codice ASCII 59) o da due ampersand (&&, codici ASCII 38), o con due barre verticali (||, codici ASCII 124). Le istruzioni in una riga vengono quindi eseguite in ordine, da sinistra a destra. Se un'istruzione che termina con il delimitatore && produce un errore, le restanti istruzioni nella riga non vengono eseguite. Se un'istruzione che termina con il delimitatore || viene eseguita correttamente, le restanti istruzioni nella riga non vengono eseguite. L'istruzione che termina con punto e virgola non interrompe mai l'esecuzione della sequenza di istruzioni. Nota che la fine della riga è di per sé un terminatore di istruzione, quindi non è necessario mettere uno dei delimitatori di istruzione espliciti alla fine della riga.
Il formato di una dichiarazione è il seguente:
[%ID%][COMMAND][@CS] dove le parentesi quadre indicano campi facoltativi e qualsiasi numero di spazi vuoti è consentito prima e dopo ogni campo. Tali spazi vuoti vengono ignorati, tranne che per lo scopo del calcolo del checksum, vedere sotto. I campi sono:
%ID% identificatore di istruzione, dove ID denota una stringa arbitraria, eventualmente vuota. L'identificatore, se presente, viene copiato senza modifiche dal ricevitore nel messaggio di risposta per l'istruzione. Qualsiasi istruzione con un identificatore genererà sempre una risposta dal ricevitore. È consentita anche un'istruzione che contiene solo un identificatore; in tal caso, il ricevitore genererà solo un messaggio di risposta.
COMANDO un elenco (eventualmente vuoto) in cui il primo elemento è chiamato nome comando. Indica l'azione da eseguire. Il resto degli elementi (se presenti) sono comando
GREZZO
1. L'attuale implementazione GREIS nei ricevitori supporta righe lunghe fino a 256 caratteri.
www.javad.com
28
LINGUA DI INPUT DEL RICEVITORE Sintassi della lingua
argomenti. Le parentesi graffe che racchiudono l'elenco dei comandi potrebbero essere omesse. Fare riferimento a "Elenchi" a pagina 19 per la sintassi degli elenchi. @CS checksum, dove CS è un checksum a 8 bit formattato come numero esadecimale a 2 byte. Prima di eseguire un'istruzione con checksum, il ricevitore confronterà il checksum di input CS con quello calcolato dal firmware e rifiuterà di eseguire l'istruzione se questi checksum non corrispondono. Il checksum viene calcolato a partire dal primo carattere non vuoto dell'istruzione fino al carattere @ incluso. Vedere "Calcolo dei checksum" a pagina 579 per i dettagli.
L'identificatore di dichiarazione, %ID%, serve ai seguenti scopi:
1. Forza la risposta del ricevitore al comando. 2. Consente di inviare più comandi con identificatori diversi al ricevitore
senza attendere la risposta per ogni comando, quindi ricevere le risposte e indicare quale risposta corrisponde a quale comando. 3. Aiuta a stabilire la sincronizzazione con il ricevitore consentendo di verificare che la particolare risposta del ricevitore corrisponda a un particolare comando e non a un altro comando emesso prima o dopo.
Un elenco denominato opzioni potrebbe essere aggiunto a qualsiasi elemento del COMANDO dopo i due punti (:, codice ASCII 58). Se l'elenco opzioni comprende un singolo elemento, le parentesi graffe circostanti potrebbero essere omesse. L'elenco opzioni aggiunto a un elenco si propaga a ogni elemento dell'elenco, sebbene le opzioni aggiunte esplicitamente a un elemento dell'elenco abbiano la precedenza sulle opzioni propagate. Ad esempioampLui,
{e1,{e2:{o1,,o3},e3}}:{o4,o5}
è equivalente a:
{e1:{o4,o5},{e2:{o1,o5,o3},e3:{o4,o5}}}
Si noti inoltre come l'opzione o2 mancante consenta all'opzione o5 di propagarsi all'elenco di opzioni per l'elemento e2.
Il numero e il significato degli argomenti e delle opzioni nel comando dipendono dalla particolare azione del comando e sono definiti nella descrizione di ogni comando del ricevitore. Inoltre, se la descrizione del comando specifica alcune opzioni, ma alcune o tutte sono omesse nell'istruzione, i valori predefiniti per le opzioni omesse vengono sostituiti. I valori predefiniti per le opzioni sono anch'essi definiti nella descrizione di ogni comando del ricevitore.
GREZZO
www.javad.com
29
LINGUA DI INPUT DEL RICEVITORE Sintassi della lingua
A titolo di riferimento, di seguito è riportata la tabella contenente tutte le sequenze di caratteri che hanno un significato speciale nella lingua di input del destinatario:
Tabella 2-1. Caratteri speciali della lingua di input
Caratteri Decimale Codice ASCII
Senso
10
separatore di riga
13
separatore di riga
#
35
;
59
inizio del commento segna istruzioni separatore
&&
38
||
124
%
37
istruzioni e istruzioni separatore o segno identificativo istruzione separatore
@
64
{
123
}
125
,
44
:
58
checksum segna inizio elenco segna fine elenco segna elementi elenco separatore opzioni segna
”
34
virgolette
92
fuga
GREZZO
www.javad.com
30
Comandi LINGUA INPUT RICEVITORE
2.3 comandi
In questa sezione descriviamo tutti i comandi definiti in GREIS. Le specifiche di sintassi e semantica di ogni comando sono accompagnate da spiegazioniamples. Per una descrizione dettagliata degli oggetti usati come argomenti nell'esempioampPer ulteriori informazioni, fare riferimento al Capitolo 4 a pagina 181.
GREZZO
www.javad.com
31
2.3.1 set
LINGUA DI INPUT DEL RICEVITORE Comandi impostati
Nome
imposta il valore impostato di un oggetto.
Sinossi
Formato: set,oggetto,valore Opzioni: nessuna
Argomenti
object l'identificatore dell'oggetto di destinazione. Se object non inizia con "/", allora il prefisso "/par/" viene automaticamente inserito prima dell'object prima di eseguire il comando.
value il valore da assegnare all'oggetto di destinazione. L'intervallo di valori consentiti e la semantica dell'assegnazione dipendono dal tipo di oggetto e sono specificati più avanti in questo manuale per ogni oggetto supportato.
Opzioni
Nessuno.
Descrizione
Questo comando assegna un valore all'oggetto. Non viene generata alcuna risposta a meno che non ci sia un errore o la risposta non sia forzata dall'identificatore di istruzione.
Examples
Example: Imposta la velocità in baud della porta seriale C a 115200. Uno dei seguenti:
imposta,/par/dev/ser/c/rate,115200 imposta,dev/ser/c/rate,115200
Example: Imposta la velocità in baud della porta seriale A a 9600 e forza la risposta:
%%set,dev/ser/a/rate,9600 RE002%%
GREZZO
www.javad.com
32
2.3.2 stampa
LINGUA DI INPUT DEL RICEVITORE Comandi stampa
Nome
stampa stampa il valore di un oggetto.
Sinossi
Formato: stampa,oggetto Opzioni: {nomi}
Argomenti
object l'identificatore dell'oggetto da emettere. Se object non inizia con "/", allora il prefisso "/par/" viene automaticamente inserito prima dell'oggetto prima di eseguire il comando.
Opzioni
Tabella 2-2. Riepilogo delle opzioni di stampa
Nome Tipo
Valori
nomi booleani on,off
Predefinito
spento
names se disattivato, emette solo valori oggetto. Quando attivato, emette nomi oggetto oltre ai valori oggetto nel formato NAME=VALUE.
Descrizione
Questo comando stampa il valore dell'oggetto, anteponendo facoltativamente al valore il nome dell'oggetto corrispondente. La risposta viene sempre generata e più di un messaggio [RE] potrebbe essere generato in risposta a un singolo comando di stampa.
Il valore di un oggetto di tipo elenco viene stampato come un elenco di valori per ogni oggetto nell'elenco. Questo viene applicato ricorsivamente finché non vengono raggiunti gli oggetti foglia, quindi la stampa di un oggetto di tipo non foglia produce effettivamente l'intero sottoalbero a partire dall'oggetto specificato. In caso di stampa di elenchi, potrebbero essere generati più messaggi [RE]. Tuttavia, la suddivisione dell'output può verificarsi solo immediatamente dopo i caratteri separatori di elenco.
GREZZO
www.javad.com
33
LINGUA DI INPUT DEL RICEVITORE Comandi stampa
Examples
Example: Stampa il periodo corrente della griglia temporale del ricevitore interno. Uno dei due:
stampa,/par/raw/curmsint RE004 100 stampa,raw/curmsint RE004 100
Example: Stampa il periodo corrente della griglia temporale del ricevitore interno insieme al nome dell'oggetto. Uno dei seguenti:
stampa,/par/raw/curmsint:on RE015/par/raw/curmsint=100 stampa,raw/curmsint:on RE015/par/raw/curmsint=100
Example: Stampa le informazioni sulla versione del ricevitore:
stampa, rcv/ver RE028{“2.5 Set, 13,2006, 2 p0,71″, 5, 00, MGGDT_XNUMX, nessuno, REXNUMXD {nessuno, nessuno}}
Example: Stampa le informazioni sulla versione del ricevitore insieme ai nomi corrispondenti:
stampa, rcv/ver:on RE043/par/rcv/ver={main=”2.5 Set,13,2006 p2”,boot=0,hw=71,board=MGGDT_5, RE00C modem=none, RE017 pow={fw=none,hw=none}}
Example: Stampa tutti i messaggi abilitati per l'output sulla porta seriale B insieme ai relativi parametri di pianificazione:
print,out/dev/ser/b:on RE02D/par/out/dev/ser/b={jps/RT={1.00,0.00,0,0×0}, RE01A jps/SI={1.00,0.00,0,0×0}, RE01A jps/rc={1.00,0.00,0,0×0}, RE01A jps/ET={1.00,0.00,0,0×0}, RE01D nmea/GGA={10.00,5.00,0,0×0}}
GREZZO
www.javad.com
34
2.3.3 elenco
LINGUA DI INPUT DEL RICEVITORE Elenco dei comandi
Nome
elenca il contenuto di un oggetto.
Sinossi
Formato: list[,object] Opzioni: nessuna
Argomenti
object l'identificatore dell'oggetto da emettere. Se object viene omesso, si presume /log. Se object non inizia con "/", allora il prefisso "/log/" viene automaticamente inserito prima dell'object prima di eseguire il comando.
Opzioni
Nessuno.
Descrizione
Questo comando restituisce i nomi di ogni membro dell'oggetto. La risposta viene sempre generata e più di un messaggio [RE] potrebbe essere generato in risposta a un singolo comando di elenco. Se l'oggetto specificato non è di tipo elenco, viene generato un messaggio [RE] vuoto. Se l'oggetto specificato è un elenco, viene stampato l'elenco dei nomi di ogni oggetto nell'elenco. Questo viene applicato ricorsivamente finché non vengono raggiunti gli oggetti foglia, quindi elencare un oggetto di tipo non foglia produce effettivamente l'intero sottoalbero a partire dall'oggetto specificato. In caso di stampa di elenchi, potrebbero essere generati più messaggi [RE]. Tuttavia, la suddivisione dell'output potrebbe verificarsi solo immediatamente dopo i caratteri separatori dell'elenco.
Examples
Example: Risposta vuota per l'elenco di un oggetto non elencato:
elenco,/par/rcv/ver/main RE000
Example: Risposta di errore per l'elenco di un oggetto inesistente:
elenco,/non_esiste ER018{2,,primo parametro errato}
GREZZO
www.javad.com
35
LINGUA DI INPUT DEL RICEVITORE Elenco dei comandi
Example: Ottieni un elenco dei log esistentifiles. Uno dei due
elenco,/elenco registro
produrrà lo stesso output, ad esempio:
RE013{log1127a,log1127b}
Example: Elenca tutti i messaggi GREIS standard supportati dal ricevitore:
list,/msg/jps RE03D{JP,MF,PM,EV,XA,XB,ZA,ZB,YA,YB,RT,RD,ST,LT,BP,TO,DO,OO,UO,GT, RE040 NT,GO,NO,TT,PT,SI,NN,EL,AZ,SS,FC,RC,rc,PC,pc,CP,cp,DC,CC,cc,EC, RE040 CE,TC,R1,P1,1R,1P,r1,p1,1r,1p,D1,C1,c1,E1,1E,F1,R2,P2,2R,2P,r2, RE040 p2,2r,2p,D2,C2,c2,E2,2E,F2,ID,PV,PO,PG,VE,VG,DP,SG,BI,SE,SM,PS, RE040 GE,NE,GA,NA,WE,WA,WO,GS,NS,rE,rM,rV,rT,TM,MP,TR,MS,DL,TX,SP,SV, RE031 RP,RK,BL,AP,AB,re,ha,GD,LD,RM,RS,IO,NP,LH,EE,ET}
Example: Elenca tutti i messaggi nel set predefinito di messaggi:
elenco,/msg/def RE040{jps/JP,jps/MF,jps/PM,jps/EV,jps/XA,jps/XB,jps/RT,jps/RD,jps/SI, RE040 jps/NN,jps/EL,jps/FC,jps/RC,jps/DC,jps/EC,jps/TC,jps/CP,jps/1R, RE040 jps/1P,jps/2R,jps/2P,jps/E1,jps/D2,jps/E2,jps/SS,jps/SE,jps/PV, RE040 jps/ST,jps/DP,jps/TO,jps/DO,jps/UO,jps/IO,jps/GE,jps/NE,jps/GA, RE01D jps/NA,jps/WE,jps/WA,jps/WO}
GREZZO
www.javad.com
36
GREZZO
2.3.4 em & fuori
LINGUA DI INPUT DEL RICEVITORE Comandi em e out
Nome
em, out abilita l'emissione periodica di messaggi.
Sinossi
Formato: Formato: Opzioni:
em,[target],messaggi out,[target],messaggi {periodo, fase, conteggio, flag}
Argomenti
target qualsiasi flusso di output o set di messaggi. Se non viene specificato alcun target, viene assunto il terminale corrente, /cur/term.
messaggi l'elenco (con o senza parentesi graffe) dei nomi dei messaggi e/o dei nomi dei set di messaggi da abilitare. Se alcuni dei nomi specificati non iniziano con "/", il prefisso "/msg/" viene automaticamente inserito prima di tali nomi prima di eseguire il comando.
Opzioni
Tabella 2-3. Riepilogo delle opzioni em e out
Nome Tipo
Valori
Predefinito
periodo float [0…86400)
–
fase float [0…86400)
–
conta intero [-256…32767] 0 per em 1 per out
flag intero [0…0xFFFF] –
periodo, fase, conteggio, parametri di pianificazione dei messaggi flag.
Descrizione
Questi comandi abilitano l'output periodico dei messaggi specificati nel target, imponendo che i parametri di pianificazione dei messaggi siano quelli specificati dalle opzioni. Non viene generata alcuna risposta a meno che non ci sia un errore o che la risposta sia forzata dall'identificatore di istruzione.
I comandi em e out sono gli stessi, tranne per il fatto che il valore predefinito dell'opzione count è impostato su 0 per em e su 1 per out. Il comando out è solo un modo più comodo per richiedere
www.javad.com
37
LINGUA DI INPUT DEL RICEVITORE Comandi em e out
Nota:
output una tantum di messaggio/i. Parleremo solo di em in questa descrizione, anche se tutto si applica anche all'output.
La descrizione seguente presuppone che il lettore abbia familiarità con il materiale contenuto nella sezione “Output periodico” a pagina 22.
Per ogni flusso di output, esiste un elenco di output corrispondente di messaggi1,2 che sono attualmente abilitati per essere emessi nel flusso specificato. Quando un messaggio passato come argomento al comando em non è attualmente nell'elenco di output, il comando em aggiunge il messaggio specificato alla fine dell'elenco. Quando un messaggio passato al comando em è già nell'elenco di output, il comando em modifica solo i parametri di pianificazione di questo messaggio e non modifica la posizione del messaggio all'interno dell'elenco.
Poiché il comando em unisce i messaggi specificati all'elenco di output, spesso è una buona idea usare il comando dm per cancellare l'elenco di output per il flusso specificato prima di emettere i comandi em.
Il comando em elabora l'elenco dei messaggi un messaggio alla volta, da sinistra a destra e dal primo messaggio del set di messaggi all'ultimo messaggio del set di messaggi. Se incontra un nome che non corrisponde a nessun messaggio del ricevitore o set di messaggi supportato, ricorda che si è verificato un errore durante l'esecuzione, ma non interrompe l'elaborazione dell'elenco dei messaggi. In questo modo tutti i messaggi dell'elenco dei messaggi che potrebbero essere abilitati saranno abilitati e verrà segnalato un solo errore quando uno o più dei messaggi specificati non possono essere abilitati.
Quando il comando em elabora un messaggio in corso, i parametri di pianificazione del messaggio operativo finale nell'elenco di output corrispondente dei messaggi vengono calcolati tenendo conto di più fonti di informazioni sui parametri di pianificazione, in particolare:
1. Valori specificati esplicitamente nelle opzioni del comando em.
2. I valori predefiniti delle opzioni del comando em.
3. Parametri di pianificazione specificati per il messaggio dato come parte del set di messaggi corrispondente. Questi vengono presi in considerazione solo quando si abilita un messaggio specificando il set di messaggi, non un singolo messaggio.
4. Parametri di pianificazione correnti del messaggio nell'elenco di output corrispondente (se presente).
5. Parametri di pianificazione predefiniti specificati per il messaggio specificato come parte del gruppo di messaggi corrispondente.
Le fonti di parametri di cui sopra sono elencate in ordine di precedenza, la prima ha la precedenza più alta, e sono applicate individualmente a ciascuno dei quattro parametri di pianificazione. Pertanto, i valori da (1) sovrascrivono i valori da (2), il valore risultante
GREZZO
1. Per un flusso NOME, l'elenco di output corrispondente è denominato /par/out/NAME 2. Il firmware corrente ha un limite arbitrario per il numero massimo di messaggi in un elenco di output impostato su 49.
www.javad.com
38
LINGUA DI INPUT DEL RICEVITORE Comandi em e out
sostituisce il valore da (3), ecc. Tuttavia, se alcuni dei bit F_FIX_PERIOD, F_FIX_PHASE, F_FIX_COUNT o F_FIX_FLAGS sono impostati nel campo flag della sorgente successiva, i campi corrispondenti di questa sorgente successiva non verranno sostituiti.
Examples
Example: Abilita l'output una tantum del messaggio NMEA GGA sul terminale corrente:
em,,nmea/GGA:{,,1}
Come sopra, ma usando out al posto di em:
fuori,,nmea/GGA
Example: Abilita l'output del set predefinito di messaggi sul registro correntefile A utilizzando i parametri di output predefiniti. Uno dei seguenti:
Exampon:
em,/cur/file/a,/msg/def em,/cur/file/a,definizione
Abilita l'output del set predefinito di messaggi sul registro correntefile A ogni 10 secondi Per gli altri parametri di output verranno utilizzati i valori predefiniti:
em,/cur/file/a,def:10
Example: Abilita l'output del set predefinito di messaggi sul terminale corrente utilizzando i parametri di output predefiniti. Uno dei seguenti:
Exampon:
em,/cur/term,/msg/def em,,/msg/def em,,def
Abilita l'output dei messaggi GREIS [~~](RT) e [RD] sul terminale corrente. Uno dei seguenti:
Exampon:
em,,/msg/jps/RT,/msg/jps/RD em,,jps/{RT,RD}
Abilita l'output dei messaggi NMEA GGA e ZDA sul terminale corrente ogni 20 secondi:
Exampon:
em,,nmea/{GGA,ZDA}:20
Abilita l'output dei messaggi [SI], [EL] e [AZ] sulla porta seriale A. Imposta i parametri di pianificazione per [SI] in modo che l'intervallo tra due messaggi [SI] successivi sia pari a 10 secondi, se coincidono, e 1 secondo altrimenti; emetti solo i primi cinquanta messaggi [SI]. Inoltre, il ricevitore imposta l'intervallo di output a 2 secondi per i messaggi [EL] e [AZ]:
em,/dev/ser/a,jps/{SI:{1,10,50,0×2},EL,AZ}:2
GREZZO
www.javad.com
39
LINGUA DI INPUT DEL RICEVITORE Comandi em e out
Example: Abilita l'output dei tipi di messaggio RTCM 2.x 1 e 31 sulla porta seriale B con intervallo di output di 3 secondi e dei tipi di messaggio RTCM 2.x 18, 19, 3, 22 sulla porta C con intervallo di output di 1 secondo per i tipi 18 e 19; e 10 secondi per i tipi 3 e 22:
em,/dev/ser/b,rtcm/{1,31}:3; em,/dev/ser/c,rtcm/{18:1,19:1,22,3}:10
Example: personalizza il set predefinito di messaggi in modo che contenga solo NMEA ZDA e GGA:
dm,/msg/def em,/msg/def,/msg/nmea/{ZDA,GGA}
GREZZO
www.javad.com
40
2.3.5 milioni di dollari
LINGUA DI INPUT DEL RICEVITORE Comandi dm
Nome
dm disabilita l'emissione periodica di messaggi.
Sinossi
Formato: dm[,[target][,messaggi]] Opzioni: nessuna
Argomenti
target qualsiasi flusso di output o set di messaggi. Se non viene specificato alcun target, viene assunto il terminale corrente, /cur/term. Se alcuni dei nomi specificati non iniziano con "/", allora il prefisso "/msg/" viene automaticamente inserito prima di tali nomi prima di eseguire il comando.
messaggi l'elenco dei messaggi da disabilitare, con o senza parentesi graffe, o qualsiasi gruppo di messaggi o set di messaggi. Se non viene specificato alcun messaggio, tutto l'output periodico verso la destinazione viene disabilitato.
Opzioni
Nessuno.
Descrizione
Questo comando disabilita l'output periodico dei messaggi specificati nel target dell'oggetto. Non viene generata alcuna risposta a meno che non ci sia un errore o che la risposta sia forzata dall'identificatore di istruzione.
Se non viene specificato alcun messaggio, tutto l'output periodico verso la destinazione viene disabilitato. Se la destinazione è un log-file e non vengono specificati messaggi, tutto l'output viene inviato al file è disabilitato, il file è chiuso e il corrispondente log corrente-file è impostato su nessuno.
Se nell'elenco dei messaggi è specificato un messaggio che non è attualmente abilitato per essere emesso sul target specificato, il comando dm non genera alcun errore corrispondente. Tuttavia questa condizione non disabilita la segnalazione di altri possibili errori.
Examples
Example: Disattiva tutti i messaggi in uscita nel registro correntefile A e chiudi il file:
dm,/cur/file/a
GREZZO
www.javad.com
41
LINGUA DI INPUT DEL RICEVITORE Comandi dm
Example: Disattiva tutti gli output periodici nel terminale corrente. Uno dei due:
dm,/cur/termine dm
Example: Disabilita l'output del messaggio GREIS [~~](RT) sulla porta seriale B:
dm,/dev/ser/b,/msg/jps/RT
Example: Disabilita l'output del messaggio GREIS [DO] nel log correntefile B:
dm,/cur/file/b,/msg/jps/DA FARE
Example: Rimuovi il messaggio GREIS [PM] dal set predefinito di messaggi:
messaggio di posta elettronica, messaggio di posta elettronica/messaggi/def, messaggio di posta elettronica/messaggi/jps/PM
Example: Disabilita l'output di tutti i messaggi NMEA sul terminale corrente:
dm,/cur/termine,/msg/nmea
Example: Disabilita l'output dei messaggi NMEA GGA e ZDA nel terminale corrente. Uno dei due:
dm,/cur/term,/msg/nmea/GGA,/msg/nmea/ZDA dm,,/msg/nmea/GGA,/msg/nmea/ZDA dm,,nmea/GGA,nmea/ZDA dm,,nmea/{GGA,ZDA}
GREZZO
www.javad.com
42
2.3.6 inizializzazione
LINGUA DI INPUT DEL RICEVITORE Comandi init
Nome
init inizializza gli oggetti.
Sinossi
Formato: init,object[/] Opzioni: nessuna
Argomenti
oggetto l'oggetto da inizializzare. / se presente e l'oggetto è di tipo elenco, inizializza invece tutti gli oggetti contenuti
dell'oggetto stesso.
Opzioni
Nessuno.
Nota: Nota:
Descrizione
Questo comando inizializza gli oggetti specificati. Non viene generata alcuna risposta a meno che non ci sia un errore o che la risposta sia forzata dall'identificatore di istruzione.
La semantica esatta dell'inizializzazione dipende dall'oggetto che viene inizializzato, ma in generale potrebbe essere considerata come il riportare un oggetto al suo stato "default" o "clean". Ad esempioample, per i parametri significa impostare i loro valori ai valori predefiniti corrispondenti, per il filedispositivo di archiviazione significa riformattare il supporto sottostante, ecc.
L'inizializzazione di alcuni oggetti comporterà il riavvio del ricevitore. Questo è attualmente il caso per l'inizializzazione della memoria non volatile del ricevitore (/dev/nvm/a).
Sebbene possa cambiare in futuro, l'implementazione corrente di questo comando generico nei ricevitori è piuttosto limitata. Infatti, solo l'inizializzazione degli oggetti che si trovano nell'examples di seguito è attualmente supportato.
Examples
Example: Cancella la NVRAM e riavvia il ricevitore. Tutti i dati memorizzati nella NVRAM (almanacchi, effemeridi, ecc.) andranno persi, tutti i parametri saranno impostati sui loro valori predefiniti dopo il riavvio:
init,/dev/nvm/a
Example: Effemeridi chiare:
init,/eph/
GREZZO
www.javad.com
43
LINGUA DI INPUT DEL RICEVITORE Comandi init
Example: Imposta tutti i parametri del ricevitore ai loro valori predefiniti:
init,/par/
Example: imposta tutti i parametri WLAN sui loro valori predefiniti. È necessario riavviare l'unità affinché le modifiche abbiano effetto:
init,/par/net/wlan/
Example: Inizializza il file sistema (vale a dire, riformattare il supporto sottostante). Tutti filei dati memorizzati nel ricevitore andranno persi:
init,/dev/blk/a
Example: Inizializza tutti i set di messaggi ai loro valori predefiniti:
inizializzazione,/msg/
GREZZO
www.javad.com
44
2.3.7 creare
LINGUA DI INPUT DEL RICEVITORE I comandi creano
Nome
creare crea un nuovo oggetto.
Sinossi
Formato: create[,object] Opzioni: {log}
Argomenti
object identificatore dell'oggetto da creare. Se object non inizia con "/", allora il prefisso "/log/" viene automaticamente inserito prima dell'oggetto prima di eseguire il comando. Se omesso, allora la creazione di un file si presume e univoco file il nome viene generato automaticamente.
Opzioni
Tabella 2-4. Riepilogo delle opzioni di creazione
Nome Tipo Valori
stringa di registro a,b,…
Predefinito
a
registra il log-file il creato file deve essere assegnato a. Il log-file selezionato è /cur/log/X, dove X è il valore dell'opzione1.
Descrizione
Questo comando crea un nuovo oggetto. Non viene generata alcuna risposta a meno che non ci sia un errore o che la risposta sia forzata dall'identificatore di istruzione.
Sia la posizione nell'albero che il tipo di oggetto creato sono definiti dall'argomento oggetto.
Si potrebbero creare due tipi di oggetti:
1. Files. Un nuovo file viene creato ogni volta che l'identificatore dell'oggetto specifica un oggetto in un sottoalbero /log oppure quando l'argomento oggetto viene omesso.
2. Specificatori di messaggio. Un nuovo specificatore di messaggio viene creato ogni volta che l'identificatore di oggetto specifica un oggetto in un set di messaggi (ad esempio, /msg/def).
GREZZO
1. Il firmware attuale supporta uno o due log simultaneifilea seconda del ricevitore specifico.
www.javad.com
45
LINGUA DI INPUT DEL RICEVITORE I comandi creano
Creazione Files
Durante la creazione files, l'argomento oggetto viene omesso o ha un formato /log/NOME, dove NOME è il nome dell'oggetto file da creare, e /log/ è facoltativo. Nel primo caso il ricevitore selezionerà automaticamente un nome univoco per il fileIn quest'ultimo caso il NOME specificato dovrebbe essere una stringa di massimo 31 caratteri e non dovrebbe contenere né spazi né i seguenti caratteri: “,{}()@&”/”.
Se il file /log/NAME esiste già, il comando create fallirà e produrrà un messaggio di errore. Di conseguenza, non c'è modo di clobbare alcuni dei filecon il comando create.
Dopo un nuovo file è stato creato con successo, viene assegnato a uno dei log correntifiles a seconda del valore del log_file opzione. Se il log corrispondente-file indica già un altro file quando viene eseguito il comando create, il vecchio log-file verrà chiuso e l'output continuerà nel nuovo file senza alcuna interruzione.
Creazione di specificatori di messaggi
Quando si aggiungono messaggi a un set di messaggi, l'argomento oggetto ha il formato /msg/SET/GROUP/MSG, dove SET è il nome del set di messaggi in cui deve essere creato il nuovo messaggio, GROUP è il nome del gruppo a cui appartiene il messaggio e MSG è il nome del messaggio stesso (ad esempio, /msg/def/nmea/GGA o /msg/jps/rtk/min/jps/ET).
I parametri di pianificazione dei messaggi saranno copiati da quelli definiti per il messaggio dato nel gruppo di messaggi. Utilizzare il comando set per personalizzare i parametri di pianificazione, se necessario.
Examples
Creazione Files
Example: Crea un nuovo file con un nome generato automaticamente e assegnarlo al registro correntefile Una (/cur/file/a). Uno dei due:
creare crea,:a
Example: Crea un nuovo log-file con il nome “my_file”. Uno dei due:
creare,/log/mio_file:a crea,mio_file
Example: Crea fileS "file1” e “file2", e assegnarli a /cur/file/a e /cur/file/B:
creare,file1:a; creare,file2:b
GREZZO
www.javad.com
46
LINGUA DI INPUT DEL RICEVITORE I comandi creano
Creazione di specificatori di messaggi
Example: Aggiungi i messaggi /msg/jps/ET al set predefinito di messaggi:
creare,/msg/def/jps/ET
Example: Aggiungi il messaggio NMEA GGA al set predefinito di messaggi e forza il suo periodo e la sua fase a essere sempre rispettivamente 10 e 5, indipendentemente dai valori che verranno specificati in un comando em o out:
crea,/msg/def/nmea/GGA imposta,/msg/def/nmea/GGA,{10,5,,0×30}
GREZZO
www.javad.com
47
2.3.8 rimuovere
LINGUA DI INPUT DEL RICEVITORE Comandi rimuovi
Nome
rimuovere rimuovere un oggetto.
Sinossi
Formato: rimuovi,oggetto[/] Opzioni: nessuna
Argomenti
object identificatore dell'oggetto da rimuovere. Se object non inizia con "/", allora il prefisso "/log/" viene automaticamente inserito prima dell'oggetto prima di eseguire il comando.
/ se presente e l'oggetto è di tipo elenco, rimuove tutto il contenuto dell'oggetto invece dell'oggetto stesso.
Opzioni
Nessuno.
Descrizione
Questo comando rimuove (elimina) un oggetto esistente. Non viene generata alcuna risposta a meno che non ci sia un errore o che la risposta non sia forzata dall'identificatore di istruzione. Se non c'è alcun oggetto specificato da object o se l'oggetto non può essere rimosso, viene generato un errore. Possono essere rimossi due tipi di oggetti:
1. FileS. Se la file è uno dei log attualifiles, il comando fallirà e verrà generato un messaggio di errore.
2. Specificatori di messaggi da set di messaggi.
Examples
Example: Rimuovi il log-file con il nome “NOME”. Uno dei due:
rimuovi,/log/NOME rimuovi,NOME
Example: Rimuovi tutti i log-files:
rimuovi,/log/
GREZZO
www.javad.com
48
LINGUA DI INPUT DEL RICEVITORE Comandi rimuovi
Example: Rimuovi il messaggio standard GREIS [GA] dal set predefinito di messaggi:
rimuovi,/msg/def/jps/GA
Example: Rimuovi tutti i messaggi dal set predefinito di messaggi:
rimuovi,/msg/def/
Example: Rimuovi tutti i messaggi dal set minimo di messaggi GREIS standard adatti per RTK:
rimuovi,/msg/rtk/jps/min/
GREZZO
www.javad.com
49
2.3.9 evento
LINGUA DI INPUT DEL RICEVITORE Comandi evento
Nome
evento genera evento in formato libero.
Sinossi
Formato: evento, stringa Opzioni: nessuna
Argomenti
stringa una stringa arbitraria1 composta da un massimo di 63 caratteri.
Opzioni
Nessuno.
Nota: esampon:
Descrizione
Questo comando genera un evento in formato libero. Non viene generata alcuna risposta a meno che non ci sia un errore o che la risposta sia forzata dall'identificatore di istruzione.
La stringa data insieme all'ora di ricezione del comando evento viene memorizzata nel ricevitore nel buffer evento speciale2. Il contenuto di questo buffer viene emesso in tutti i flussi di output in cui è abilitato il messaggio GREIS standard [==](EV) (descritto a pagina 131).
Il meccanismo di eventi free-form è pensato per i programmi di controllo per inoltrare informazioni di testo arbitrarie alle applicazioni di post-elaborazione senza interpretare queste informazioni nel ricevitore. Il core del firmware del ricevitore non genera mai eventi free-form da solo, né interpreta in qualche modo le informazioni inviate tramite i comandi di evento.
Tutte le stringhe che iniziano con il carattere di sottolineatura (ASCII 0x5F) sono riservate alle applicazioni JAVAD GNSS. Si deve fare attenzione a non utilizzare tali stringhe con i comandi evento, a meno che non si riesca a svolgere il proprio compito in altro modo o si intenda collaborare con un software JAVAD GNSS. In quest'ultimo caso, fare riferimento alla descrizione dettagliata degli eventi in formato libero riservati alle applicazioni JAVAD GNSS nella guida "Frame Format for Free-Form Events", disponibile su http://www.javad.com.
Genera un evento in formato libero contenente la stringa “Info1″:
evento,Info1
GREZZO
1. Ricorda che se una stringa contiene uno qualsiasi dei caratteri riservati alla lingua di input del destinatario, dovresti racchiudere questa stringa tra virgolette doppie.
2. Il firmware attuale fornisce un buffer sufficientemente grande da memorizzare fino a sedici eventi in formato libero da 64 byte.
www.javad.com
50
LINGUA DI INPUT DEL RICEVITORE Comandi evento
Example: Genera un evento in formato libero contenente caratteri riservati:
evento,”EVENTO{DATI,INVIATO}”
Example: Genera un evento in formato libero riservato al software applicativo JAVAD GNSS (questo evento notifica all'applicazione di post-elaborazione la modifica della dinamica):
evento,”_DYN=STATIC”
Example: Genera un formato libero con stringa vuota:
evento,""
Example: Genera alcuni eventi in formato libero e ottieni i messaggi [==](EV) (nel contenuto dei messaggi [==] i byte non stampabili vengono sostituiti con punti nell'esempioample):
em,,jps/EV %accepted% evento,”qualche stringa” RE00A%accepted% ==011…..qualche_stringa. %1% evento,1; %2% evento,2 RE003%1% RE003%2% ==007…..1. ==007…..2. dm,,jps/EV
GREZZO
www.javad.com
51
2.3.10 ottenere
LINGUA DI INPUT DEL RICEVITORE I comandi ottengono
Nome
inizia a recuperare file contenuti utilizzando DTP1.
Sinossi
Formato: get,object[,offset] Opzioni: {timeout,block_size,period,phase,attempts}
Argomenti
oggetto identificatore dell'oggetto file da recuperare. Se l'oggetto non inizia con "/", allora il prefisso "/log/" viene automaticamente inserito prima dell'oggetto prima di eseguire il comando. Se l'oggetto non esiste o non può essere recuperato, viene generato un messaggio di errore.
offset offset in byte dall'inizio del file da cui iniziare il recupero. Se omesso, si assume 0.
Opzioni
Tabella 2-5. Riepilogo delle opzioni di ottenimento
Nome
Tipo
Valori
tempo scaduto
intero [0…86400], secondi
block_size intero [1…163841]
periodo
float [0…86400), secondi
fase
float [0…86400), secondi
tentativi intero [-257…100] 1. 2048 per i ricevitori che non supportano TCP o USB.
Predefinito
10 512 0 0 10
timeout il timeout per DTP. block_size la dimensione di un blocco dati DTP. period il periodo di output per il filtraggio (vedere sotto). phase la fase di output per il filtraggio (vedere sotto). tenta significati diversi a seconda dell'intervallo, come segue:
1. Vedere “Protocollo di trasferimento dati” a pagina 580.
GREZZO
www.javad.com
52
LINGUA DI INPUT DEL RICEVITORE I comandi ottengono
[1…100] numero massimo di tentativi che il trasmettitore DTP impiegherà per inviare un singolo blocco. Se impostato su 1, viene attivata la modalità streaming speciale (vedere sotto).
0 anziché avviare DTP, emette il contenuto grezzo dell'oggetto. [-256…-1] anziché avviare DTP, emette il contenuto dell'oggetto racchiuso in
[>>] messaggi.
-257 anziché avviare DTP, invia in output il contenuto dell'oggetto racchiuso in messaggi [RE].
Descrizione
Questo comando avvia il recupero di un file nel computer host utilizzando il protocollo di trasferimento dati (DTP) o il formato di output raw. Non viene generata alcuna risposta a meno che non vi sia un errore o che la risposta non sia forzata dall'identificatore di istruzione.
In modalità DTP, dopo che il comando get ha esito positivo, il trasmettitore DTP viene avviato sul ricevitore e attende che il ricevitore DTP venga eseguito sull'host. Pertanto, per recuperare effettivamente i dati, è necessaria l'implementazione del ricevitore DTP sull'host.
L'argomento offset facoltativo consente all'host di implementare il supporto per la ripresa del trasferimento dati interrotto. Si noti che la ricerca di un offset elevato potrebbe richiedere tempi piuttosto lunghi per essere eseguita nel ricevitore. Per implementare correttamente la ripresa nel software host, forzare la risposta del ricevitore al comando get utilizzando l'identificatore di istruzione e attendere la risposta dal ricevitore prima di eseguire DTP sull'host. Questo metodo richiede untage del fatto che il ricevitore risponde al comando get dopo che è stata eseguita la ricerca.
Quando l'opzione tentativi è impostata su 1, il trasmettitore DTP verrà messo nella cosiddetta modalità streaming. In questa modalità, dopo aver ricevuto il primo NACK dal ricevitore DTP, il trasmettitore DTP trasmetterà in streaming blocchi di dati senza attendere gli ACK dal ricevitore DTP e il trasmettitore interromperà immediatamente il trasferimento dati se viene ricevuto un NACK. Questo approccio consente un trasferimento dati significativamente più veloce su connessioni affidabili con latenze elevate (come TCP) o overhead di commutazione di direzione relativamente elevato (come USB). La parte di ricezione del protocollo implementata correttamente non richiede alcuna cura speciale per supportare questo metodo.
Quando l'opzione periodo è diversa da zero, viene attivata la modalità di filtraggio speciale. Ad esempioample, consente di scaricare dati a 1 Hz da un file che è stato scritto utilizzando una frequenza di aggiornamento di 10 Hz. In particolare, il ricevitore invierà i dati solo per le epoche in cui il tempo del ricevitore modulo un giorno (Tr) soddisfa la seguente equazione:
Tr {mod periodo} = fase
Per raggiungere questo obiettivo, il ricevitore analizza il contenuto del file e filtra alcuni dei messaggi. Nota che l'implementazione della ripresa del download interrotto è molto difficile se
GREZZO
www.javad.com
53
LINGUA DI INPUT DEL RICEVITORE I comandi ottengono
non impossibile in questo caso perché l'host non ha idea a quale offset del ricevitore file il download è stato interrotto.
Ciascuno dei tipi di trasferimento potrebbe essere interrotto dal destinatario dei dati inviando un simbolo di errore DTP (ad esempio, ASCII '#').
Durante il trasferimento di dati in messaggi [RE], il valore di block_size determinerà la dimensione massima del payload di dati per ogni messaggio [RE] (limitata anche dalla dimensione del buffer del firmware interno). Come al solito, ogni messaggio [RE] verrà avviato con l'ID del comando (se presente).
Durante il trasferimento di dati in messaggi [>>], il valore dell'opzione tentativi determinerà il campo id dei messaggi [>>] come segue:
id = -1 – tentativi
e il valore di “block_size” determinerà la dimensione massima del payload di dati per ogni messaggio [>>] (limitato anche dalla dimensione del buffer del firmware interno).
Il byte successivo dopo id (il primo byte del campo dati) nel messaggio [>>] sarà quindi un carattere di sequenza che inizia con il simbolo ASCII 0 e viene incrementato modulo 64 per ogni messaggio, risultando nella sequenza di simboli ASCII da 0 a o, inclusi:
seq = 0 ciclo { seq_char = '0' + (seq++ % 64) }
Il carattere sequenza consente al destinatario di rilevare la perdita di messaggi [>>] nella sequenza.
Seguirà quindi il payload dei dati dell'oggetto fino a block_size byte, e poi il checksum, in base al formato del messaggio [>>].
L'output riuscito nella modalità wrapper verrà sempre finalizzato dal messaggio [>>] senza payload di dati, per consentire al destinatario di determinare in modo affidabile la fine del trasferimento.
Examples
Example: Inizia a recuperare il contenuto del file NOME tramite DTP. Uno dei due:
Exampon:
ottieni,/log/NOME ottieni,NOME
Inizia a recuperare il contenuto del file NOME a partire dal byte numero 3870034 (contando i byte da zero). Aspettatevi un tempo piuttosto lungo tra il comando e la risposta:
%%get,NOME,3870034 RE002%%
GREZZO
www.javad.com
54
LINGUA DI INPUT DEL RICEVITORE I comandi ottengono
Example: Inizia a recuperare il contenuto del file il mio_registrofile a partire dal byte 3000 utilizzando un timeout di 50 secondi e una dimensione del blocco di 8192 byte:
ottenere, il mio_registrofile:{50,8192},3000
Example: Inizia a recuperare il contenuto del file NOME filtra le epoche in modo che il risultato venga recuperato file sarebbero dati a 0.1 Hz:
ottenere,NOME:{,,10}
Example: Inizia a recuperare il contenuto del file NOME che utilizza la modalità streaming (opzione tentativi impostata su 1):
ottenere,NOME:{,,,,1}
Example: Invia il contenuto del file NOME racchiuso in messaggi [>>] con id 61 (simbolo ASCII '='), utilizzando fino a 128 byte di dati per messaggio:
ottenere,NOME:{,128,,,-62}
Example: Invia il contenuto del file NOME racchiuso in messaggi [RE] utilizzando fino a 190 byte di dati per messaggio, preceduti da %MY_ID%:
%MY_ID%get,NOME:{,190,,,-257}
GREZZO
www.javad.com
55
2.3.11 mettere
LINGUA DI INPUT DEL RICEVITORE Comandi inseriti
Nome
mettere inizio file caricamento tramite DTP1.
Sinossi
Formato: put,object[,offset] Opzioni: {timeout, block_size}
Argomenti
oggetto identificatore dell'oggetto file per scrivere i dati. Se l'oggetto non inizia con "/", allora il prefisso "/log/" viene automaticamente inserito prima dell'oggetto prima di eseguire il comando.
offset offset in byte dall'inizio del file da cui iniziare a scrivere. Se omesso, si assume 0.
Opzioni
Tabella 2-6. Riepilogo delle opzioni put
Nome
Tipo
Valori
Predefinito
tempo scaduto
intero [0…86400], secondi 10
block_size intero [1…163841]
512
1. 2048 per i ricevitori che non supportano TCP o USB.
timeout il timeout per DTP. block_size la dimensione di un blocco dati DTP.
Descrizione
Questo comando avvia il caricamento dei dati dal computer host in un file nel ricevitore tramite il protocollo di trasferimento dati (DTP). Non viene generata alcuna risposta a meno che non vi sia un errore o la risposta sia forzata dall'identificatore di istruzione.
Dopo che il comando put ha esito positivo, il ricevitore DTP viene avviato sul ricevitore e attende che il trasmettitore DTP venga eseguito sull'host. Pertanto, per caricare effettivamente i dati, è necessaria l'implementazione del trasmettitore DTP sull'host.
1. Vedere “Protocollo di trasferimento dati” a pagina 580.
GREZZO
www.javad.com
56
LINGUA DI INPUT DEL RICEVITORE Comandi inseriti
L'argomento offset facoltativo consente all'host di implementare il supporto per la ripresa del trasferimento dati interrotto. Un valore offset diverso da zero consente all'host di richiedere l'aggiunta di dati alla fine di un trasferimento dati esistente. file di dimensioni corrispondenti.
Se l'offset è 0 e il file l'oggetto non esiste, il ricevitore proverà a crearne uno nuovo e ad aprirlo per la scrittura file con il nome definito da object. In questo caso il comando fallirà se esiste già un file con il nome proprio.
Se l'offset è maggiore di 0 e c'è un file oggetto e il file la dimensione è uguale al valore di offset, quindi il comando put aprirà il file oggetto per l'aggiunta. In questo caso il comando fallirà se non esiste alcun file con il nome proprio o se la dimensione dell'esistente file non corrisponde a quelli specificati da offset.
Examples
Example: Avvia il caricamento dei dati su un nuovo file "NOME" utilizzando DTP. Uno dei due:
Exampon:
metti,/log/NOME metti,NOME
Inizia a caricare i dati e aggiungili a quelli esistenti file “NOME”. Utilizza il timeout DTP predefinito e la dimensione del blocco DTP di 4096 byte. Ottieni la dimensione del file prima di iniziare il caricamento (nota che il file la dimensione è comunque richiesta sull'host in modo che possa saltare questo numero di byte dai suoi dati di origine file):
Exampon:
stampa,/log/NOME&dimensione RE008 3870034 metti,/log/NOME:{,4096},3870034
Avvia il caricamento dei dati su un nuovo file “il mio_registrofile" utilizzando un timeout di 50 secondi e una dimensione del blocco di 8192 byte:
metti,il_mio_registrofile:50,8192
GREZZO
www.javad.com
57
2.3.12 scarico
LINGUA DI INPUT DEL RICEVITORE Comandi fld
Nome
caricamento del firmware fld.
Sinossi
Formato: fld,id,object Opzioni: {timeout, block_size}
Argomenti
stringa id contenente l'ID elettronico del ricevitore1. Se l'ID specificato non corrisponde all'ID elettronico effettivo del ricevitore, il comando fallirà e produrrà un messaggio di errore.
object identificatore dell'oggetto sorgente del firmware da caricare. O il nome del ricevitore file, o il nome di una porta di input. Quando è il nome della porta di input, dovrebbe essere specificato /cur/term o il nome effettivo della porta corrente, altrimenti verrà segnalato un errore.
Opzioni
Tabella 2-7. Riepilogo delle opzioni fld
Nome
Tipo
Valori
tempo scaduto
intero [0…86400], secondi
block_size intero [1…163841] 1. 2048 per i ricevitori che non supportano TCP o USB.
Predefinito
10 512
timeout il timeout per DTP. block_size la dimensione di un blocco dati DTP.
Descrizione
Questo comando carica il firmware dall'oggetto specificato nel ricevitore e quindi reimposta il ricevitore. Non viene generata alcuna risposta a meno che non ci sia un errore o che la risposta sia forzata dall'identificatore di istruzione.
1. L'ID può essere ottenuto utilizzando il comando print,/par/rcv/id.
GREZZO
www.javad.com
58
LINGUA DI INPUT DEL RICEVITORE Comandi fld
Avvertimento:
Se durante il caricamento si verifica un'interruzione di corrente o un'interruzione fatale del trasferimento del firmware tramite una porta, il ricevitore potrebbe entrare in uno stato di semi-funzionamento in cui è possibile solo il caricamento del firmware tramite porte RS-232 utilizzando il metodo di "cattura all'accensione".
Se l'oggetto designa un esistente file1, il ricevitore controllerà prima se il file contiene un firmware valido per il ricevitore (ci vogliono alcuni secondi per completarlo). Se il controllo riesce, il ricevitore caricherà il firmware e poi eseguirà l'auto-reset. Nota che la risposta al comando (se presente) verrà inviata dopo l'esecuzione del controllo ma prima che inizi il caricamento del firmware. Le opzioni timeout e block_size vengono ignorate in questo caso.
Se object designa un flusso di input, il comando invierà la risposta (se presente) e quindi avvierà il ricevitore DTP che attenderà che il trasmettitore DTP venga eseguito sull'host. Pertanto, per caricare effettivamente il firmware, è necessaria l'implementazione del trasmettitore DTP sull'host. Il ripristino automatico (riavvio) verrà eseguito dal ricevitore dopo che il caricamento è stato completato correttamente o è stato interrotto.
Examples
Example: Carica il firmware dal file “firmware.ldp” nel ricevitore con ID elettronico 123456789AB. Aspettatevi che trascorrano alcuni secondi tra l'invio del comando e la ricezione della risposta, mentre il ricevitore controlla il file per la validità del firmware:
%%fld,123456789AB,/log/firmware.ldp RE002%%
Example: Avvia il caricamento del firmware dalla porta USB utilizzando la dimensione del blocco 16384 byte e il timeout 20 secondi. Ottieni l'ID elettronico prima di inviare il comando:
print,rcv/id RE00C 8PZFM10IL8G fld,8PZFM10IL8G,/dev/usb/a:{20,16384}
GREZZO
1. Ci si aspetta che il file contenente il firmware viene caricato in anticipo sul ricevitore, ad esempio utilizzando il comando put.
www.javad.com
59
LINGUA DI INPUT DEL RICEVITORE Comandi fld
GREZZO
www.javad.com
60
Capitolo 3
MESSAGGI DEL RICEVENTE
Questo capitolo descrive il formato generale dei messaggi standard GREIS, nonché i formati particolari di tutti i messaggi predefiniti. Oltre ai messaggi standard GREIS, il ricevitore supporta un bel po' di messaggi di formati diversi, come NMEA o BINEX. I formati di quei messaggi "stranieri" sono descritti alla fine di questo capitolo.
3.1 Convenzioni
3.1.1 Specifiche del formato
Per descrivere un formato come una sequenza di byte1 in forma compatta, definiamo i formati per alcuni tipi di campo primari e quindi utilizziamo una notazione vicina a quella utilizzata nel linguaggio di programmazione C per creare definizioni di formati più complessi:
struct NOME {LUNGHEZZA} { TIPO CAMPO[CONTEGGIO]; // DESCRIZIONE … TIPO CAMPO[CONTEGGIO]; // DESCRIZIONE
};
Dove:
NAME il nome assegnato a questo formato. Potrebbe essere utilizzato in altre definizioni di formato come TYPE di un campo.
LENGTH la lunghezza in byte dell'intera sequenza. Per un formato di lunghezza fissa, è un numero, per un messaggio di lunghezza variabile, può essere un'espressione aritmetica a seconda di alcuni altri parametri variabili o solo la stringa var.
Descrittore di campo TYPE FIELD[COUNT]. Descrive una sequenza di COUNT elementi dello stesso TYPE a cui è assegnato il nome FIELD. Il TYPE potrebbe essere uno dei tipi di campo primari descritti di seguito o un NAME di un altro formato. Quando [COUNT] è assente, il campo è costituito da un solo elemento. Quando COUNT è assente (cioè, ci sono solo parentesi quadre vuote, []), significa che il campo è costituito da un numero non specificato di elementi.
GREZZO
1. Nel contesto di questo capitolo, "byte" significa entità a 8 bit. Il bit meno significativo di un byte ha indice zero.
www.javad.com
61
MESSAGGI DEL DESTINATARIO Convenzioni
Specifiche del formato
DESCRIZIONE descrizione del campo insieme alle sue unità di misura e all'intervallo di valori consentito, ove appropriato. Le unità di misura sono racchiuse tra parentesi quadre.
Sono definiti i seguenti tipi di campi primari:
Tabella 3-1. Tipi di campo primari
Tipo Nome
Senso
Lunghezza in byte
a1
Carattere ASCII
1
i1
intero con segno
1
i2
intero con segno
2
i4
intero con segno
4
u1
intero senza segno
1
u2
intero senza segno
2
u4
intero senza segno
4
f4
IEEE-754 a virgola mobile a precisione singola
4
f8
Virgola mobile a doppia precisione IEEE-754
8
str
sequenza di caratteri ASCII terminati da zero variabile
Per definire completamente un formato particolare, dobbiamo anche specificare l'ordine dei byte nei campi primari non aggregati che sono multi-byte (i2, i4, u2, u4, f4, f8). Per i messaggi GREIS questo ordine è definito dal messaggio [MF], vedere "Formato dei messaggi [MF]" a pagina 74 per i dettagli.
Utilizzando le definizioni di cui sopra è possibile espandere (ricorsivamente) qualsiasi specifica di formato alla corrispondente sequenza di byte. Ad esempioample, il formato
struttura Esample {9} { u1 n1; f4n2; i2n3[2];
};
si espande nella seguente sequenza di byte assumendo l'ordine del byte meno significativo (LSB):
n1[0](0), n2[0](0),n2[0](1),n2[0](2),n2[0](3), n3[0](0),n3[0](1),n3[1](0),n3[1](1)
GREZZO
www.javad.com
62
GREZZO
MESSAGGI DEL DESTINATARIO Flusso di messaggi standard
Valori speciali
e alla seguente sequenza di byte assumendo l'ordine del byte più significativo per primo (MSB):
n1[0](0), n2[0](3)n2[0](2)n2[0](1)n2[0](0) n3[0](1)n3[0](0)n3[1](1)n3[1](0)
dove x[i](j) designa il j-esimo byte (il byte #0 è quello meno significativo) di un i-esimo elemento del campo x.
3.1.2 Valori speciali
Per i messaggi binari, alcuni dei loro campi interi e floating point possono contenere valori speciali, che vengono utilizzati al posto dei dati effettivi quando non sono disponibili dati per il campo. I campi binari per i quali è richiesta la verifica di valori speciali durante l'estrazione dei dati sono contrassegnati con il punto esclamativo, "!" nella prima colonna della definizione del campo.
La tabella seguente definisce valori speciali per vari tipi di campi dati:
Tabella 3-2. Valori speciali per i campi
Tipo di campo
i1 u1 i2 u2 i4 u4 f4 f8
Valore speciale
127 255 32767 65535 2147483647 4294967295 silenzioso NaN silenzioso NaN
Rappresentazione esadecimale
7F FF 7FFF FFFF 7FFF_FFFF FFFF_FFFF 7FC0_0000 7FF8_0000_0000_0000
3.2 Flusso di messaggi standard
Il flusso di messaggi GREIS standard è una sequenza di al massimo due tipi di messaggi: messaggi standard GREIS e messaggi di testo non standard.
Il tipo di messaggio più importante e ampiamente utilizzato è un ricco set di messaggi standard GREIS. Il loro formato generale è attentamente progettato per consentire sia messaggi binari che di testo.
www.javad.com
63
MESSAGGI DEL DESTINATARIO Formato generale dei messaggi
Messaggi standard
saggi e per consentire alle applicazioni di ignorare in modo efficiente i messaggi di cui non sono a conoscenza o a cui non sono interessate.
Il supporto per messaggi di testo non standard, che devono comunque rispettare il formato definito per loro in questo manuale, rende possibile mescolare messaggi standard GREIS con messaggi di altri formati nel flusso di dati GREIS standard. Un exampfile di questo formato sono messaggi NMEA.
Messaggi di testo non standard di un caso speciale, i messaggi che contengono solo ASCII e/o caratteri, vengono inseriti dal motore di formattazione dei messaggi nel ricevitore tra i messaggi standard GREIS per rendere il flusso di messaggi risultante più leggibile dall'uomo quando viene inviato a un terminale o a un testo generico viewapplicazione er o editor.
Oltre ai messaggi standard GREIS e ai messaggi di testo non standard, i ricevitori JAVAD GNSS supportano in genere molti altri formati (ad esempio, RTCM, BINEX, CMR). Tuttavia, tali formati sono incompatibili con il formato del flusso di messaggi GREIS standard. Se un flusso contiene messaggi di tali formati, non può più essere chiamato flusso di messaggi standard GREIS e non può essere analizzato con le stesse regole del flusso standard.1
3.3 Formato generale dei messaggi
3.3.1 Messaggi standard
Il formato di ogni messaggio standard è il seguente:
struttura StdMessage {var} {
a1 id[2];
// Identificatore
a1 lunghezza[3];
// Lunghezza del corpo esadecimale, [000…FFF]
u1 corpo[lunghezza]; // Corpo
};
Ogni messaggio standard inizia con l'identificatore univoco del messaggio composto da due caratteri ASCII. Tutti i caratteri dal sottoinsieme "0" a "~" (vale a dire, codici ASCII decimali nell'intervallo [48...126]) sono consentiti nell'identificatore.
GREZZO
1. Infatti, il formato dei messaggi standard GREIS è così flessibile che può incorporare qualsiasi flusso di dati nel flusso di dati GREIS standard, ma poi il flusso originale incompatibile dovrebbe essere racchiuso in una sequenza di messaggi GREIS speciali. Il messaggio predefinito con identificatore “>>” serve a questo scopo.
www.javad.com
64
MESSAGGI DEL DESTINATARIO Formato generale dei messaggi
Messaggi di testo non standard
L'identificativo del messaggio è seguito dalla lunghezza del campo del corpo del messaggio. Questo campo, che comprende tre cifre esadecimali maiuscole, specifica la lunghezza del corpo del messaggio in byte. Pertanto, la lunghezza massima del corpo del messaggio è 4095 (0xFFF) byte.
Il corpo del messaggio segue immediatamente il campo lunghezza e contiene esattamente il numero di byte specificato dal campo lunghezza. Non ci sono restrizioni sul contenuto del corpo del messaggio implicito nel formato generale. Il formato del corpo del messaggio in un messaggio è definito implicitamente dall'identificativo del messaggio. Formati dei corpi dei messaggi di tutti i messaggi predefiniti
3.3.2 Messaggi di testo non standard
Il formato dei messaggi di testo non standard è il seguente:
struct NonStdTextMessage {var} {
a1 identificativo;
// Identificatore, [!…/]
a1 corpo[];
// Corpo di lunghezza arbitraria, [0…)
a1 eom;
// Fine del messaggio ( O )
};
L'identificatore del messaggio è un carattere qualsiasi compreso nell'intervallo [!… /] (codici ASCII decimali compresi nell'intervallo [33…47]). L'identificatore del messaggio è facoltativo. Se assente, il corpo del messaggio dovrebbe avere lunghezza zero (ovvero, dovrebbe essere assente anche lui).
Il corpo del messaggio è una sequenza di caratteri ASCII, ad eccezione (codice decimale 13) e (codice decimale 10) caratteri. Il formato non impone alcuna limitazione alla lunghezza del corpo.
Il marcatore di fine messaggio è O carattere.
Si noti che il formato consente messaggi non standard che comprendono solo caratteri CR o LF. Questa funzionalità consente di rendere i flussi di messaggi GREIS standard più leggibili quando si inviano dati a un terminale generico o viewcon testo generico viewer o editore.
Uno degli identificatori di messaggi di testo non standard, il carattere "$", è già riservato come identificatore per i messaggi NMEA standard. Nessun altro messaggio di testo non standard dovrebbe usare "$" come identificatore.
3.3.3 Analisi del flusso di messaggi
In questa sezione troverete alcuni suggerimenti e consigli su come scrivere codice destinato ad analizzare i flussi di messaggi di un ricevitore GREIS. Sebbene non discuteremo questo argomento in dettaglio in questo manuale di riferimento, vorremmo sottolineare qui che il messaggio standard
GREZZO
www.javad.com
65
MESSAGGI DEL DESTINATARIO Formato generale dei messaggi
Analisi del flusso di messaggi
Il formato ti consentirà di elaborare/analizzare in modo efficace quasi tutti i flussi di messaggi GREIS che potresti incontrare nella pratica.
Nota:
Sincronizzazione
Quando si analizza un flusso di messaggi, è necessario innanzitutto trovare il confine del messaggio più vicino. Questo è ciò che di solito viene chiamato "sincronizzazione". La sincronizzazione dei messaggi viene eseguita quando l'analisi viene avviata o quando la sincronizzazione viene persa a causa di un errore nel flusso di dati. Infatti, per semplificare l'algoritmo, puoi considerare di essere già sincronizzato quando inizi ad analizzare il flusso di dati. Se accade che non sia effettivamente così, dovrebbe verificarsi l'errore di analisi. Quindi salti un carattere dal flusso di input e fingi di essere di nuovo sincronizzato. Tale approccio elimina efficacemente l'attività di sincronizzazione come parte separata dell'algoritmo di analisi.
Poiché il tasso di errori in un flusso di dati ragionevolmente utile dovrebbe essere piuttosto basso, la sincronizzazione non dovrebbe essere un'attività frequente. Inoltre, il flusso di dati GREIS in genere è costituito da messaggi piuttosto brevi, quindi la distanza dal confine del messaggio più vicino è in genere piccola. Tenendo conto di queste considerazioni, non è necessario che l'algoritmo di sincronizzazione sia molto veloce.
Nota:
Passare al messaggio successivo
Avere la lunghezza nel formato generale dei messaggi GREIS standard consente di ignorare facilmente i messaggi senza conoscere il formato del loro corpo. In effetti, consigliamo vivamente di scrivere parser in modo che saltino i messaggi sconosciuti.
Per passare dal messaggio corrente a quello successivo, procedere come segue:
1. Supponiamo che il messaggio corrente inizi dalla posizione “N”. Determina la lunghezza del messaggio corrente (decodifica i caratteri ## N+2, N+3, N+4). Supponiamo che la lunghezza del messaggio sia uguale a L. Salta i primi L+5 caratteri a partire dalla posizione “N”.
2. Salta tutto E caratteri (se presenti).
Parlando in senso stretto, non ti consigliamo di usare nel tuo codice di analisi alcuna informazione a priori sulle dimensioni e il contenuto dei corpi dei messaggi. Se rispetti questa raccomandazione, non avrai problemi con il programma di analisi se alcuni dei messaggi dovessero essere modificati.
Le regole e i suggerimenti sull'analisi dei corpi dei messaggi GREIS predefiniti standard sono trattati più avanti in "Analisi dei corpi dei messaggi" a pagina 67.
GREZZO
www.javad.com
66
GREZZO
MESSAGGI DEL DESTINATARIO Messaggi predefiniti standard
Analisi dei corpi dei messaggi
3.4 Messaggi predefiniti standard
In questa sezione familiarizzeremo il lettore con il set predefinito di messaggi GREIS standard. Quando ci riferiamo a un messaggio con l'identificatore XX, utilizziamo la notazione [XX]. Mentre la maggior parte dei messaggi viene chiamata dal suo identificatore di messaggio in GREIS, alcuni di essi, in particolare quelli che hanno identificatori non alfanumerici, hanno nomi diversi. Per tali messaggi viene utilizzata la notazione [XX](NN), dove XX è l'identificatore di messaggio e NN è il nome del messaggio da utilizzare nei comandi GREIS. Ad esempioampil messaggio [~~](RT) ha l'intestazione “~~” e viene chiamato /msg/jps/RT nei comandi GREIS.
Questa sezione definisce i formati dei corpi per tutti i messaggi predefiniti standard. Tieni presente che in un flusso di dati ogni messaggio ha anche un'intestazione standard definita dal formato generale.
3.4.1 Analisi dei corpi dei messaggi
Estensioni di formato consentite
I formati dei messaggi binari con dimensione fissa del messaggio consentono di aggiungere più campi dati in futuro. I nuovi campi possono essere inseriti solo alla fine del corpo del messaggio, appena prima del campo checksum (se presente). Tali modifiche ai corpi dei messaggi sono considerate estensioni di formato, non modifiche incompatibili.
Sebbene i messaggi di testo GREIS standard non siano messaggi con dimensione fissa, nuovi campi potrebbero comunque apparire in questi messaggi in futuro. I nuovi campi possono essere inseriti alla fine di un messaggio di testo esistente, appena prima del campo checksum, o immediatamente prima di qualsiasi parentesi graffa destra (}). Ad esempioample, un messaggio che attualmente viene letto come:
…1,{21,22},3,@CS
può essere successivamente esteso a
…1,{2.1,2.2,2.3},3,4,@CS
dove sono stati aggiunti due campi aggiuntivi, “2.3” e “4”.
Implementa gli algoritmi di analisi tenendo conto delle seguenti regole per farli funzionare anche con future estensioni di formato:
1. Non dare per scontato che la dimensione del corpo del messaggio ricevuto debba corrispondere esattamente alla dimensione specifica definita in questo documento. Solo se il messaggio è troppo corto significa che non puoi usarne il contenuto. Se il messaggio è più lungo del previsto, ignora semplicemente i dati in eccesso.
2. Indirizzare il campo checksum in relazione alla fine del corpo del messaggio.
www.javad.com
67
MESSAGGI DEL DESTINATARIO Messaggi predefiniti standard
Note generali
3. Indirizzare altri campi dati relativi all'inizio del corpo del messaggio. 4. Prendere in considerazione la regola di cui sopra per l'estensione dei messaggi di testo quando
scrivere estrattori di dati per messaggi di testo.
Somme di controllo
Dopo che un messaggio è stato estratto dal flusso di dati utilizzando le tecniche descritte in "Analisi del flusso di messaggi" a pagina 65, e l'identificativo del messaggio sembra essere uno di quelli a cui l'applicazione è interessata, il corpo del messaggio dovrebbe essere analizzato per estrarre i dati. Prima di estrarre il contenuto, il checksum del messaggio dovrebbe essere calcolato e confrontato con il checksum contenuto nel messaggio.
La maggior parte dei messaggi predefiniti contiene un checksum. Il checksum viene calcolato utilizzando sia l'intestazione del messaggio (ad esempio, "identificativo del messaggio" più "la lunghezza del corpo del messaggio") sia il corpo stesso. Vedere "Calcolo dei checksum" a pagina 579 per maggiori informazioni sul calcolo del checksum.
Il checksum viene sempre inserito alla fine del corpo del messaggio. Se la struttura di un messaggio viene modificata aggiungendo uno o più nuovi campi dati, i nuovi campi dati verranno aggiunti prima del campo checksum. Questo spiega perché si consiglia di indirizzare il campo checksum relativamente alla fine del corpo del messaggio.
3.4.2 Note generali
Scale temporali
Il ricevitore può gestire cinque scale temporali:
Tr tempo del ricevitore Tg tempo del sistema GPS Tu UTC (USNO). Tempo coordinato universale supportato dall'osservatorio navale statunitense
vatory. Tn Tempo di sistema GLONASS. Ts UTC(SU). Tempo coordinato universale supportato dallo Stato Time and Fre-
Servizio di attesa, Russia.
"Tempo del ricevitore" è l'unica griglia temporale sempre disponibile nel ricevitore (vale a dire, le altre griglie temporali dall'elenco sopra potrebbero essere disponibili o meno).
Infatti, il ricevitore GNSS JAVAD sincronizza sempre l'ora del ricevitore con una delle quattro scale temporali globali: ora GPS, UTC (USNO), ora GLONASS o UTC (SU).
GREZZO
www.javad.com
68
GREZZO
MESSAGGI DEL DESTINATARIO Messaggi predefiniti standard
Note generali
la griglia temporale così selezionata è denominata “tempo di riferimento del ricevitore” (Trr) nel seguito della presente sezione1.
Sistemi di tempo diversi possono avere diverse notazioni di tempo (formati) associati a loro (ad esempio, per il tempo GPS, utilizziamo termini come "numero della settimana", "ora della settimana", ecc.). Si noti, tuttavia, che la rappresentazione del "tempo del ricevitore" non dipenderà dal tempo di riferimento del ricevitore selezionato ed è sempre rappresentata come data e ora del giorno del ricevitore.
La maggior parte dei messaggi predefiniti non contiene informazioni di riferimento temporale al suo interno. Nel nostro view, sarebbe eccessivo utilizzarne uno e lo stesso tempo tag con tutti i numerosi messaggi che il ricevitore genera nell'epoca corrente. Quando si emettono informazioni sul ricevitore disponibili per l'epoca corrente, di solito si ottengono vari messaggi. Invece di fornire a ciascuno di essi un orario individuale tag campo dati, utilizziamo un messaggio speciale che trasporta informazioni sull'ora del ricevitore comuni a questi messaggi. Questo messaggio è chiamato "Receiver Time" e ha l'identificatore [~~].
Esiste, tuttavia, una modalità di funzionamento, chiamata modalità RTK ritardata, quando a una data epoca il ricevitore può produrre una soluzione riferita a un'altra epoca nel passato. Per fornire tempo tag per tale soluzione, tempo di soluzione specialeTag Viene utilizzato il messaggio [ST]. Infatti questo messaggio fornisce l'ora corretta tag per una soluzione in tutte le modalità operative, sebbene nella maggior parte delle modalità abbia esattamente lo stesso tempo di [~~].
Ci sono altri messaggi che hanno un momento tag campo dati. Si tratta di messaggi che contengono informazioni che appaiono indipendentemente sulla griglia dell'epoca del ricevitore. Un exampil nome di tale messaggio è “Evento” [==].
Delimitatori
Infatti, il messaggio "Receiver Time" dovrebbe precedere tutti gli altri messaggi generati nell'epoca corrente, delimitando così i messaggi corrispondenti a epoche diverse. Da un punto di vista formale, view, spetta all'utente definire l'ordine dei messaggi nel flusso di output. Tuttavia, occorre prestare attenzione per garantire che l'ordine in cui i messaggi vengono scritti nel flusso di output non interrompa la "sincronizzazione delle epoche", che è essenziale per la post-elaborazione dei dati registrati con i pacchetti software JAVAD GNSS. Per maggiori dettagli sul set predefinito di messaggi, vedere "Set di messaggi" a pagina 562.
Per le applicazioni in tempo reale è essenziale determinare la fine dell'epoca il prima possibile. Per tali applicazioni, delimitare semplicemente le epoche con un marcatore "inizio epoca" non è conveniente. Suggeriamo di utilizzare il messaggio "Epoch Time" [::](ET) come marcatore "fine epoca". Questo messaggio contiene lo stesso campo ora del giorno che si trova nel messaggio "Receiver Time" che consente un migliore controllo dell'integrità. L'idea è di confrontare il tempo tag
1. Nel firmware del ricevitore corrente il tempo di riferimento del ricevitore è l'ora del sistema GPS o GLONASS, fare riferimento a /par/raw/time/ref a pagina 220
www.javad.com
69
GREZZO
MESSAGGI DEL DESTINATARIO Messaggi predefiniti standard
Note generali
da [::] messaggio contro il tempo tag dal messaggio corrispondente [~~]. Non corrispondente tags sono un'indicazione di un'epoca interrotta.
Noterai che la maggior parte dei messaggi ha identificatori composti solo da cifre e/o lettere inglesi. Infatti, "Receiver Time" [~~] è l'unico messaggio il cui identificatore usa il carattere "~". Ha senso perché il messaggio [~~] svolge una parte molto importante fungendo da delimitatore di epoca. Quindi ci sono precauzioni speciali per ridurre al minimo la probabilità di perdere questo messaggio chiave. Allo stesso modo, anche l'identificatore del messaggio "Event" ([==]) deve essere il più distintivo possibile perché il software applicativo può usare eventi in formato libero come delimitatori.
L'idea di usare identificatori "altamente distintivi" per i messaggi che servono come delimitatori è molto chiara. Se il checksum di un messaggio è sbagliato, basta controllare il suo identificatore. Se nessuno dei caratteri dell'identificatore coincide con "~", allora è molto improbabile che questo sia un messaggio [~~] corrotto. Pertanto, non è necessario passare al messaggio [~~] successivo in questo caso.
D'altro canto, se un messaggio ha il checksum corretto ma uno dei caratteri identificativi è "~", allora sarebbe più sicuro trattare questo messaggio come un messaggio [~~] corrotto. In questo caso, passare al messaggio [~~] successivo.
Tipi di soluzione
Il campo “solType” utilizzato in molti dei messaggi predefiniti designa il tipo di soluzione corrispondente e può avere i seguenti valori:
Tabella 3-3. Tipi di soluzione
Valore
Senso
0
NO
Documenti / Risorse
![]() |
Interfaccia esterna del ricevitore GNSS JAVAD GREIS [pdf] Guida utente Interfaccia esterna del ricevitore GNSS GREIS, GREIS, Interfaccia esterna del ricevitore GNSS, Interfaccia esterna del ricevitore, Interfaccia esterna, Interfaccia |