TinyGPS++ La Libreria non può essere usata. Il nome deve contenere solo [...]

Ciao oggi volevo provare la differenza di prestazioni tra NeoGPS e TinyGPS++

Quando stavo però aggiungendo dallo Zip, perchè non presente nella lista di librerie presenti in "Gestione librerie", la libreria di Tiny GPS mi è comparso il seguente messaggio di errore.

Tempo fa l'avevo utilizzata e non avevo avuto di questi problemi.

Ho scaricato l'ultima versione la 13 da Git Hub

Come potrei risolvere il probelma?

Grazie mille per l'aiuto

Gli hai cambiato nome ? Perché l'originale che si scarica da quel link NON si chiama TinyGPS++ ma solo TinyGPS ... ::)

Guglielmo

Il problema è il nome della cartella, non deve contenere nessun carattere speciale, solo numeri e lettere, modifica il nome della cartella da "TinyGPS-13" in "TinyGPS", i file all'interno hanno già questo nome, e vedrai che il problema sparisce.

gpb01: Gli hai cambiato nome ?

La "colpa" è di come è fatto lo zip che si scarica da git, quando estrai ti trovi la cartella col 13 che non deve esserci.

TInyGPS e TinyGPS++ sono due librerie dello stesso autore, ma diverse.

Nella mia esperienza, entrambe funzionano meglio di NeoGPS, per quanto siano più limitate (o forse proprio per questo :D).

Attenzione che per la TinyGPS++ è necessario modificare sia il nome della cartella, p.e. in TinyGPSplus, che quello dei file .cpp e .h, altrimenti l'IDE fornisce l'errore oggetto di questo topic. Tocca anche modificare la include nel file .cpp con il nuovo nome assegnato.

astrobeed: La "colpa" è di come è fatto lo zip che si scarica da git, quando estrai ti trovi la cartella col 13 che non deve esserci.

NON sono d'accordo Astro ... ... ho appena effettuato la prova lascaindo il -13 nel nome della cartella e tutto funziona correttamente .... inoltre se guardi l'immagine dell'errore specifica proprio TinyGPS++

Guglielmo

astrobeed: Attenzione che per la TinyGPS++ è necessario modificare sia il nome della cartella, p.e. in TinyGPSplus, che quello dei file .cpp e .h, altrimenti l'IDE fornisce l'errore oggetto di questo topic.

E debbo dirti che anche questo NON è vero ... ... scaricata anche quella indicata da SukkoPera e compila correttamente con il file di nome TinyGPS++.cpp

Il problema è quindi altrove ...

Guglielmo

gpb01: ... ho appena effettuato la prova lascaindo il -13 nel nome della cartella e tutto funziona correttamente .... inoltre se guardi l'immagine dell'errore specifica proprio TinyGPS++

Però all'interno della cartella i file sono senza -13, se poi stiamo parlando della ++, io l'immagine non la vedo, il solito problema dei link, allora vale quanto ho scritto sopra. :)

Ah ... entrambe le prove fatte con l'ultima versione dell'IDE (1.8.2) su macOS ... :D

Guglielmo

gpb01: E debbo dirti che anche questo NON è vero ...

Con l'IDE 1.8x, appena provato, si arrabbia appena lo lanci segnalando il problema dei nomi, cosa con la quale ho già litigato altre volte, se non ci sono solo numeri e lettere l'IDE non riconosce la libreria, però potrebbe essere un problema solo per la versione Windows, da verificare, tu stai sul MAC. :)

... allora è un problema solo di Win :smiling_imp: ... su Mac entrambe compilano perfettamente senza alcun errore :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes:

Guglielmo

P.S.: E, se tanto mi da tanto, ho idea che anche sotto Linux NON ci sia problema ... ::)

Ho trovato questa issue dove si parla di questo specifico problema proprio per MacOS, guarda caso proprio per la TinyGPS++, la issue risulta chiusa, però a quanto pare hanno risolto solo per il MAC e non per Windows, ho anche trovato diversi utenti, tutti Windows, che lamentano lo stesso problema a partire dal 2013. Del resto quello è uno specifico messaggio di errore del IDE e dice chiaramente che i nomi delle librerie non devono contenere caratteri speciale e non possono cominciare con un numero, mi sa tanto che tocca aprire una nuova issue.

astrobeed: ... mi sa tanto che tocca aprire una nuova issue.

Ho idea ... anche perché così è un po' un casino, su alcune piattaforme non si hanno problemi, su altre si ... e si genera solo confusione !!! ::)

Potrei comunque capire lo spazio ed i caratteri speciali, ma +, - e . non mi sembrano così poco usati e sarebbe bene che li gestissero correttamente.

Guglielmo

Grazie mille per il supporto adesso provo a scaricare TinyGPS e a risolvere il problema nella creazione della cartella.

SukkoPera: Nella mia esperienza, entrambe funzionano meglio di NeoGPS, per quanto siano più limitate (o forse proprio per questo :D).

Come mai ti sei trovato meglio? Io purtroppo sono ancora alle prime armi e mi piacerebbe apporfondire :)

Il motivo è semplice: TinyGPS estrae dallo stream NMEA "il minimo indispensabile". NeoGPS invece può essere configurato per estrarre molti più dati (e a me interessava proprio per questo), con conseguente tempo di processamento del GPS aumentato, e meno tempo a disposizione dello sketch.

In sostanza, con TinyGPS lo sketch può fare quel che gli pare, ogni tanto guarda se ci sono caratteri sulla seriale e in tal caso glieli passa. Con NeoGPS, invece, lo sketch è schiavo del GPS: il suo lavoro principale è passare a NeoGPS tutto quanto arriva sulla seriale. Quando poi NeoGPS dice che c'è un fix completo e che è arrivata l'ultima sentenza NMEA del momento, allora lo sketch deve fare in fretta tutto quel che esula dal GPS, perché di lì a poco arriverà il nuovo blocco NMEA e dovrà essere lì ad aspettarlo.

Il problema principale è che la mia piattaforma gira a 8 MHz, e di fatto non riesce a fare praticamente niente con NeoGPS, manco a passargli tutto quel che arriva sulla seriale :(. Mi riservo di fare ulteriori test, ma la prima impressione che ho avuto è questa.

Il GPS tipicamente comunica a 9600 bps con un invio ogni secondo, a meno che non modifichi questi parametri se il GPS lo permette. Tutti i GPS moderni, perlomeno quelli che hanno meno di 10 anni, permettono di usare la seriale a 115kbps e inviare i dati almeno due volte al secondo, nei GPS migliori si arriva a cinque volte al secondo, quelli di classe superiore 10 volte al secondo. Non ho mai usato la Neogps, però immagino che faccia una sorta di polling, nella loop, sulla disponibilità di caratteri sulla seriale e li legge per comporre la stringa della sentenza NMEA, quando ne trova una valida estrapola i dati, pertanto non può bloccare lo sketch per più di pochi ms ad ogni iterazione della loop().

Vero, ma se la seriale va più veloce, se non sei pronto a leggerla ti perdi più caratteri a parità di tempo :(.

Comunque sono d'accordo sul resto, per questo prima o poi farò altri test. Il mio sospetto è che ogni volta che le si passa un carattere faccia parecchio processamento per evitare di dover usare un buffer "grande". Dico questo perché si vanta di usare pochissima RAM.

Fatto sta che con TinyGPS riesco tranquillamente ad avere un fix al secondo, con NeoGPS al momento ho più errori di parsing che altro :(.

SukkoPera: Vero, ma se la seriale va più veloce, se non sei pronto a leggerla ti perdi più caratteri a parità di tempo :(.

La seriale è gestita tramite interrupt e un buffer di 64 caratteri, il GPS invia le sentenze a intervalli precisi, p.e. una volta al secondo, quanto ci mette ad inviare una sentenza dipende dalla velocità della seriale e da quanti caratteri la compongono, il numero è variabile. Se il polling della Neogps non viene eseguito più velocemente di come arrivano i dati è possibile che alcuni caratteri vanno persi in quanto le sentenze possono essere più lunghe di 64 caratteri, però visto che dichiarano solo 10 byte di ram usata mi chiedo dove processano le stringhe ricevute sulla seriale perché se non usano un buffer secondario, dove caricare i dati in arrivo dalla seriale, vuol dire che lo fanno direttamente sul buffer della seriale senza cancellarlo fino a che non c'è la sentenza completa, questo può essere un vero problema se la libreria non modifica le dimensioni del buffer almeno a 128 byte. Se trovo un attimo di tempo provo a guardare come lavora la Neogps, giusto per curiosità.

--> https://forum.arduino.cc/index.php?topic=466445.0

Da qualche parte su internet c'è anche un benchmark con altre 2 librerie GPS per Arduino. Non ritrovo il link. Trovato --> https://github.com/SlashDevin/NeoGPS/blob/master/extras/doc/Performance.md E c'è anche questa --> https://github.com/stevemarple/MicroNMEA