sto interfacciando un modulo gps (MN5010HS) al PIC (16F877A)
il collegamento funziona perfettamente e leggo le stringhe NMEA che invia il gps tutto tramite seriale (TTL)
Linguaggio C ambiente MPLAB con compilatore HI-TECH C
Esempio di stringa NMEA
- Codice: Seleziona tutto
$GPGGA,221036.000,1353.9281,N,05311.0324,E,1,05,3.3,181.5,M,43.1,M,,0000*56
$GPGSA,A,3,18,06,15,21,22,,,,,,,,4.6,3.3,3.2*39
$GPRMC,221036.000,A,1353.9281,N,05311.0324,E,0.31,37.39,190611,,,A*58
$GPVTG,37.39,T,,M,0.31,N,0.6,K,A*37
questo è uno spezzone di codice
- Codice: Seleziona tutto
char NMEA[82]=""; //singola stringa nmea
bit startNmea=0; //se viene rilevato $
unsigned int idx=0; //indice
void interrupt isr(void)
{
if(RCIF)
{
switch (RCREG)
{
case '$':
{
startNmea=1;
idx=0;
break;
}
case '*':
{
startNmea=0;
break;
}
default:
NMEA[idx]=RCREG;
idx++;
break;
}
}
}
Per chi non lo sapesse:
RCIF è un flag è viene abilitato quando si riceve un byte sulla seriale del PIC
RCREG è un registro che contiene 1 byte quindi un singolo carattere delle stringhe NMEA
Lo spezzone di codice precedente ha il compito di:
1) leggere i dati dalla seriale
2) se il carattere letto è $ (dollaro) significa inizio stringa nmea
3) tutti i caratteri successivi al dollaro verranno scritti in NMEA[idx]
4) se il carattere è * (asterisco) verrà interrotto l'acquisizione dati
quindi adesso ho un array contenente:
GPGGA,221036.000,1353.9281,N,05311.0324,E,1,05,3.3,181.5,M,43.1,M,,0000
adesso il mio problema è suddividere tale stringa in sottostringhe (purtroppo la stringa ha lunghezza variabile) però ogni campo è suddiviso dalla virgola. Io ho provato ad utilizzare strtok la suddivisione avviene però non mi piace tanto. Io vorrei che facesse una cosa del genere
1) suddividere la stringa in sottostringhe
2) ogni sottostringa in una propria variabile o array tipo:
char intestazione[]="GPGGA";
char time[]="221036";
char latitudine[]="1353.9281";
e cosi via
cioè ogni singolo dato presente nella stringa nmea per conto suo in modo che posso gestirmi io la stampa su lcd o la modifica dei dati.
sperio di essermi spiegato correttamente.
grazie per l'aiuto
ps: chiunque abbia un idea è ben accetta....
grazie ancora


Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)






