Visualizza messaggio singolo
Vecchio 19 dicembre 05, 23:07   #31 (permalink)  Top
protomax
UserPlus
 
L'avatar di protomax
 
Data registr.: 21-02-2005
Residenza: TURIN 45N 7E
Messaggi: 1.951
Invia un messaggio via MSN a protomax
Citazione:
Originalmente inviato da aduri
Da come ho capito tu mi consiglieresti di fare un check sul $ anziche' la virgola (divisore campi), creare il vettore e poi analizzarlo all'interno dei cicli (come sotto) o al di fuori?

Tipo.....


rxDone = 0
rxIndex = 0
while rxDone=0
if USART_Data_Ready=1 then
rxGPSData = USART_Read
GP[rxIndex] = rxGPSData ' Nmea 183 sentence $GPGGA
if (rxGPSData="$") then ',
if (GP[1]="G") and (GP[2]="P") then 'G and P
if (GP[3]="G") and (GP[4]="G") then 'G and G
if (GP[5]="A") and (GP[6]=",") then ' A and ,
rxDone = 1
else
goto inizio
end if
end if
end if
end if
inc(rxIndex)
end if
wend

Lo provero'

no semplifica ancora!!!!


rxDone = 0
rxIndex = 0
while rxDone=0
if USART_Data_Ready=1 then
rxGPSData = USART_Read
if (rxGPSData="$") then
rxDone = 1
end if
end if
wend


Corto breve e conciso e cosi' trovi l'inizio della stringa dopo questo sei sicuro che i caratteri ricevuti saranno GPXXX ecc. quindi ricevi i caratteri successivi controlla se e' la tua stringa GGA e se si allora metti nelle variabili a seconda di dove li trovi separati dalla virgola .

Attenzione pero' che quando il GPS non e' "agganciato" manda fuori delle stringhe con tutte virgole quindi fai il controllo per campo vuoto.

Buone prove
__________________
C'e' chi vola con l'elettronica e chi fa volare l'elettronica ... entrambi volano.
________________________________________________
ProtoMax proudly present: ProtoMeter 2
32bit ARM core + ZigBee Radio all in one Telemetry system
... Next on this forum
protomax non รจ collegato   Rispondi citando