Java House
Crovatto - JcGpsSimulator
Italiano     English

JcGpsSimulator Versione 1.4.0

Ottobre 2015, by Crovy

JcGpsSimulator è un software che permette di simulare un ricevitore gps trasmettendo alcune stringhe standard NMEA-0183 sulla linea seriale. Questo software è nato per simulare la variazione di coordinate restando alla propria scrivania! É possibile leggere le coordinate da un file di testo appositamente formattato o facendo una query su un dbase MySql o MsSqlServer. Questo software, a causa dei driver per gestire la linea seriale, può funzionare solo sui sistemi operativi Windows e Linux. Dalla versione 1.1.0 è stata introdotta anche la possibilità di esportare i dati nel formato KML che consente di visualizzare le posizioni geografiche sulla cartografia di Google Earth.

Dalla versione 1.2.1 del JcGpsSimulator è stato fatto un apposito programma di installazione valido sia per Windows che per Linux. Basta estrarlo dall'archivio zip ed eseguirlo. Per l'installazione occorre essere "Amministratori" del sistema in quanto i driver per le linee seriali vengono installati nelle cartelle del Java che generalmente si trovano in sezioni accessibili solamente all'Amministratore (root) del sistema.

Dopo aver avviato il programma bisogna caricare le coordinate. Per fare questo ci sono due possibilità:

  • caricarle da un file di testo appositamente formattato;
  • caricarle da un dbase con apposita query;

Una volta caricate le coordinate, per trasmettere basta selezionare la riga della tabella in corrispondeza dei dati voluti.

Altre opzioni sono:

  • Cursore per cambiare la posizione in modo progressivo tra due coordinate. Questo cursore rappresenta la distanza in linea retta tra due coordinate, la distanza Ŕ espressa in metri;
  • Selezione della linea seriale da utilizzare;
  • Mettere il bit di Status a zero in modo da simulare una errata ricezione dei segnali dei satelliti;
  • Forzare la velocità a zero Km/h (normalmente viene trasmessa una velocità pari a 5 Km/h);

JcGpsSimulator GPS

Le stringhe trasmesse dal simulatore sono le seguenti (ogni campo è separato da una virgola):

  • $GPGGA che contiene le coordinate e lo status;
  • $GPZDA che contiene data e ora;
  • $GPVTG che contiene angolo e velocità;

Segue un dettaglio delle tre stringhe trasmesse (i campi contrassegnati con un asterisco variano in base a data e ora, coordinate selezionate, check box "status" e check box "speed"; tutti gli altri campi hanno valori fissi):

$GPGGA,124449,4541.1290,N,009044.2310,E,1,04,02.00,000123.0,M,0036.0,M,13,0001 *4b[0D][0A] Che ora analizziamo campo per campo: - $ = identificativo inizio frame; - GPGGA = comando; * 124449 = UTC -> 12h 44' 49"; * 4541.1290 = latitudine -> 45 ° 41' e 1290' (parte frazionaria); - N = Nord; * 009044.2310 = longitudine -> 009 ° 44' e 2310' (parte frazionaria); - E = EST; * 1 = qualità GPS, 1 = dati validi, 0 = dati non disponibili o errati; - 04 = numero di satelliti usati; - 02.00 = non significativi; - 000123.0 = altitudine; - M = unità di misura per altitudine; - 0036.0 = geoide altitudine; - M = unità di misura per geoide altitudine; - 13 = DGPS data e ora; - 0001 = DGPS id stazione; * *4b = checksum; - [0D][0A] = rappresentazione dei caratteri CR LF; $GPZDA,124451,28,09,2007,+00,00*62[0D][0A] Che ora analizziamo campo per campo: - $ = identificativo inizio frame; - GPZDA = comando; * 124451 = UTC -> 12h 44' 51"; * 28 = UTC giorno del mese; * 09 = UTC mese; * 2007 = UTC anno; - +00 = ora fuso orario locale; - 00 = minuti fuso orario locale; * *62 = checksum - [0D][0A] = rappresentazione dei caratteri CR LF; $GPVTG,078.0,T,078.0,M,005.0,N,0005.0,K,A*13[0D][0A] Che ora analizziamo campo per campo: - $ = identificativo inizio frame; - GPVTG = comando; * 078.0 = angolo vero in gradi; - T = significa TRUE; * 078.0 = angolo magnetico in gradi; - M = significa MAGNETIC; * 005.0 = velocità in kts; - N = significa kNot; * 005.0 = velocità in km/h; - K = significa km/h; - A = indicatore di modo del sistema di posizione, A:modo autonomo; * *13 = checksum - [0D][0A] = rappresentazione dei caratteri CR LF;

I parametri della connessione seriale non sono modificabili e sono i seguenti:

  • baud rate = 4800;
  • parità = nessuna;
  • numero di bit = 8;
  • numero di stop bit = 1

Il formato del file di testo contenente le coordinate è il seguente: [POSITIONS] Number=10 Pos00000=FEB000,2740035,584761,74 Pos00001=FEA001,2740071,584697,248 Pos00002=FEC003,2740429,584001,330 Pos00003=FEC004,2740753,584017,80 Pos00004=FEC005,2740824,584183,318 Pos00005=FEC006,2741129,584231,78 Pos00006=FEC007,2741152,584540,82 Pos00007=FEC008,2740601,584915,106 Pos00008=FEA006,2740468,585271,120 Pos00009=FEB002,2740021,584817,250 Pos00009=FXXXXX,4444444,999999,0

Segue breve descrizione del formato:

  • "[POSITION]" campo obbligatorio di inizio file;
  • "Number=" scrivere il numero di posizioni geografiche (record) che seguono (nell'esempio 10);
  • "Pos00000=FEB000,2740035,584761,74" record con i dati delle posizioni geografiche cosi composti:
    • "Pos" parola riservata per indicare l'inizio di un nuovo record;
    • "00000" scrivere numero sequenziale del record partendo da zero e composto sempre da 5 cifre
    • "=" carattere riservato;
    • "FEB000" nome posizione geografica, scrivere quello che si vuole;
    • "," carattere riservato;
    • "2740035" latitudine in millesimi di grado;
    • "," carattere riservato;
    • "584761" longitudine in millesimi di grado;
    • "," carattere riservato;
    • "74" angolo in gradi rispetto al nord;

Configurazione ora trasmessa dal gps rispetto all'ora di sistema.

JcGpsSimulator TIME

Configurazione connessione e query dbase MySql o MsSqlServer per estrarre i dati delle coordinate.

Una query di esempio può essere la seguente:

SELECT codice, LatMillesimi, LongMillesimi, DirGradi FROM tabPos

Bisogna sottolineare che i quattro campi presenti nella query sono obbligatori, ovviamente possono avere un nome diverso, ma devono essere sempre presenti e nella sequenza della query di esempio.

JcGpsSimulator DB

Per questo programma non è attualmente previsto un manuale.

Richiede J2SE 5.0 (versione 1.5) o superiore, non sono supportate le versioni inferiori.

Scarica installer del JcGpsSimulator 1.4.0

Dalla versione 1.4.0 il JcGpsSimulator utilizza le librerie RXTX che gestiscono automaticamente (quindi senza creare il link) anche i convertitori usb-seriale, ovviamente il sistema operativo deve sempre gestire questi convertitori a livello di driver.

Cose da Fare Versione 1.4.0

Ottobre 2015, by Crovy
  • Visualizzare su una mappa virtuale le coordinate;
  • Modificare la posizione trasmessa spostando il mouse sulla mappa virtuale;

Errori Noti Versione 1.4.0

Ottobre 2015, by Crovy
  • Nessuno.

Cronologia Revisioni

1.4.0 del 02.10.15
  • Sostituite le vecchie e non pi¨ supportate librerie JavaComm con le librerie RXTX;
1.3.2 del 01.07.10
  • Corretto errore gestione coordinate con quadrante diverso da Nord - Est;
1.3.1 del 19.05.10
  • Aggiunto la possibilitÓ di cambiare il BaudRate della linea seriale;
  • Aggiunto invio della stringa RMC;
  • Aggiunto menu per selezionare le stringhe GPS da inviare;
  • Aggiornato libreria sqljdbc.jar per permettere la connessione anche con le ultime versioni di SqlServer;
1.3.0 del 10.02.09
  • Aggiunto cursore per cambiare la posizione in modo progressivo tra due coordinate;
  • Aggiunto la possibilitÓ di salvare e caricare i parametri relativi al dbase;
  • Aggiunto opzione per visualizzare sempre in primo piano l'applicativo;
  • Aggiunto led per indicare lo stato della connessione seriale;
  • Cambiato finestra About aggiungendo anche la licenza;
  • Riscritto codice layout in modo da eliminare la libreria layouts;
1.2.1 del 31.10.08
  • Controllato la versione di Java all'avvio;
  • Ora viene fornito un programma di installazione che evita l'installazione manuale dei driver per la linea seriale;
1.2.0 del 30.10.07
  • Aumentato frequenza invio stringhe GPS, prima ne veniva inviata una ogni secondo, adesso ne viene inviata una ogni 250mS;
  • Corretto errore relativo alla continua allocazione di memoria;
1.1.0 del 25.10.07
  • Implementato il salvataggio su file delle coordinate (utile quando le coordinate vengono importate tramite query al dbase);
  • Implementato esportazione delle cordinate su un file in formato KML utilizzato da Google Earth, in questo modo è possibile visualizzare le coordinate sulle mappe di Google Earth;
  • Implementato connessione verso dbase MySql;
  • Corretto errore sulla lettura del file delle coordinate, se il nome assegnato alla posizione geografica era composto solo da numeri il file non veniva caricato;
1.0.0 del 09.03.07
  • Rilascio prima versione;