04-04-2018, 15:30
Quello che proponi è teoricamente possibile (e si fa) ma ha delle limitazioni. Alcuni GPS più vecchi per esempio mandano i timestamps con la precisioni dei 10 secondi (es: raymarine 120) quindi non funzionerebbe.
Il software (opencpn in questo caso) assume che uno stream NMEA sia in "real time" quindi due tracce RMC (o equivalente) consecutive arrivino con una differenza di tempi uguale alla differenza dei loro timestamp - e funziona a meno di ritardi significativi nel processo (molto difficile, i sistemi embedded non hanno questi problemi).
Fare il replay di uno stream per rigenerare una traccia funziona ma o lo stream deve essere riprodotto nei tempi corretti oppure il software ricevente si aspetta di ricevere i messaggi de-sincronizzati.
Esempio: se due stringhe sono arrivate a 0.6 secondi di distanza l'una dall'altra il replay deve fare in modo da mandarle a 0.6 secondi una dall'altra.
Una conseguenza è che nel caso generale una traccia di due ore non puoi farla girare in 10 secondi e peggio ancora, solo alcune stringhe hanno il timestamp (RMC e poco altro) quindi non c'e' modo di fare il replay affidabile di uno stream generico.
La soluzione che uso io per estrarre una traccia è di convertire usare un file GPX intermedio - mi sono fato un piccolo script che legge le tracce RMC e scrive il GPX, poi importo il GPX dove voglio, ad esempio in OpenCPN.
Se hai un minimo di manualità anche un editor avanzato ti consente di farlo con un po' di sostituzioni.
Il software (opencpn in questo caso) assume che uno stream NMEA sia in "real time" quindi due tracce RMC (o equivalente) consecutive arrivino con una differenza di tempi uguale alla differenza dei loro timestamp - e funziona a meno di ritardi significativi nel processo (molto difficile, i sistemi embedded non hanno questi problemi).
Fare il replay di uno stream per rigenerare una traccia funziona ma o lo stream deve essere riprodotto nei tempi corretti oppure il software ricevente si aspetta di ricevere i messaggi de-sincronizzati.
Esempio: se due stringhe sono arrivate a 0.6 secondi di distanza l'una dall'altra il replay deve fare in modo da mandarle a 0.6 secondi una dall'altra.
Una conseguenza è che nel caso generale una traccia di due ore non puoi farla girare in 10 secondi e peggio ancora, solo alcune stringhe hanno il timestamp (RMC e poco altro) quindi non c'e' modo di fare il replay affidabile di uno stream generico.
La soluzione che uso io per estrarre una traccia è di convertire usare un file GPX intermedio - mi sono fato un piccolo script che legge le tracce RMC e scrive il GPX, poi importo il GPX dove voglio, ad esempio in OpenCPN.
Se hai un minimo di manualità anche un editor avanzato ti consente di farlo con un po' di sostituzioni.
La semplicità è la suprema sofististicazione. LdV
