Hejsa,
Lidt input:
Jeg ville mene at at der skal skrives et par linier kode, som byte-for-byte 
processer den modtagne karakter, og udfra de programmerede modtagne ord, 
sætter de respektive variabler. Dette har jeg da selv lavet flere gange!
Altså en statemaskine der byte-for-byte bliver fodret med den modtagne 
streng, og så når alt er OK (CMD, end-of-command sov osv) signalerer til 
applikationen (eller hvem der måtte ønske dette) at nu er der nye 
oplysninger klar!
Opdel det i funktioner ...
- en fnc der modtager fra uart ...
- en fnc der processer byte-by-byte, det der er modtaget
    - dette er en statemaskine som finder
        - kommandofelt (her sættes formatet for de efterfølgende),
        - seperator,
        - værdi1,
        - værdi2 osv (ifht cmd der modtages)
        - csum
En ny state for hver nyt felt ...
Desuden skal der kodes handle_date(),  handle_time(), handle_position() osv 
osv
Disse kaldes så fra det sted i statemaskinen (switch-case'n) hvor man 
detekterer f.eks 'nu-har-vi-position' ... altså konverter det modtagne til 
en local-variable.
Nogle detekterer først kommandoen, derefter er der een func() per kommando 
der kan modtages, andre vælger at konverterer en hel string (som med scanf), 
nogle igen tager byte-for-byte og konverterer hen-ad-vejen' .... så der er 
flere approaches ....
Der er talrige exemple på dette ude på nettet.
google lidt omkring "nmea.c"   eller  "gps.c" "parser" osv osv
eks.:
 *Nix -> 
http://pe1chl.xs4all.nl/Softw/nmea.c
--> 
http://hubbard.engr.scu.edu/embedded/avr/avrlib/docs/html/nmea_8c-source.html
Sorceforged har sikkert talrige projekter, hvori der indgår gps/nmea
alternativt .. .drop mig et email, så skal jeg se hvad jeg har liggende.
(scanf mfl processer baseret en hel streng)
Der er desuden det aspekt at man skal kunne være fejltolerant når man 
modtager 'udefra' .. Jeg ved ikke om det samme gælder i din applikation.
>
> Meget sjovt, men det er ikke sikkert, at en som lige har overstået 
> begynderfasen kan gennemsue din joke...
Jeg tror ikke det var en joke - dette bruges af alle (næsten) der arbejder 
med protokoller   
>
> scanf/sscanf funktionen benyttes til at formattere en ASCII streng med 
> flere værdier til tal. Prøv at slå op i en C bog, eller søg på scanf på 
> google.
>
> I princippet går det bare ud på at søge efter kommaer i strengen, og så 
> dele den store streng op i mindre strenge, som hver især kan konverteres 
> til et tal.
Enig! Men da der er forskelle for hver eneste NMEA kommando, skal der er en 
lille statemaskine til at processerer disse!
/johnk