Sortere data fra COM-porten
Jeg læser data fra en GPS som er tilsluttet COM-porten. GPSen sender data i NMEA format. Nogle sekunders output fra GPSen, kan se sådan ud :---------------
$PGRME,15.0,M,22.5,M,15.0,M*1B
$GPGLL,6228.116,N,00611.589,E,084034,A*2B
$PGRMZ,86,f,3*25
$PGRMM,WGS 84*06
$GPBOD,,T,,M,,*47
$GPRTE,1,1,c,0*07
$GPRMC,084036,A,6228.116,N,00611.589,E,000.0,360.0,081000,003.0,W*68
$GPRMB,A,,,,,,,,,,,,V*71
$GPGGA,084036,6228.116,N,00611.589,E,1,09,2.0,26.1,M,44.0,M,,*7F
$GPGSA,A,3,01,04,,13,19,20,22,24,25,27,,,2.6,2.0,3.0*3E
$GPGSV,3,1,11,01,69,110,48,04,58,252,47,06,02,003,00,13,63,198,48*7A
$GPGSV,3,2,11,19,26,158,41,20,33,113,43,22,09,076,33,24,39,301,44*7D
$GPGSV,3,3,11,25,18,037,38,27,07,174,31,30,03,338,00,,,,*42
$PGRME,15.0,M,22.5,M,15.0,M*1B
$GPGLL,6228.116,N,00611.589,E,084036,A*29
$PGRMZ,86,f,3*25
$PGRMM,WGS 84*06
$GPBOD,,T,,M,,*47
$GPRTE,1,1,c,0*07
$GPRMC,084038,A,6228.116,N,00611.589,E,000.0,360.0,081000,003.0,W*66
$GPRMB,A,,,,,,,,,,,,V*71
$GPGGA,084038,6228.116,N,00611.589,E,1,09,2.0,26.1,M,44.0,M,,*71
$GPGSA,A,3,01,04,,13,19,20,22,24,25,27,,,2.6,2.0,3.0*3E
$GPGSV,3,1,11,01,69,110,48,04,58,252,47,06,02,003,00,13,63,198,48*7A
$GPGSV,3,2,11,19,26,158,41,20,33,113,43,22,09,076,33,24,39,301,44*7D
$GPGSV,3,3,11,25,18,037,38,27,07,174,31,30,03,338,00,,,,*42
$PGRME,15.0,M,22.5,M,15.0,M*1B
$GPGLL,6228.116,N,00611.589,E,084038,A*27
$PGRMZ,86,f,3*25
$PGRMM,WGS 84*06
$GPBOD,,T,,M,,*47
$GPRTE,1,1,c,0*07
$GPRMC,084040,A,6228.116,N,00611.589,E,000.0,360.0,081000,003.0,W*69
$GPRMB,A,,,,,,,,,,,,V*71
$GPGGA,084040,6228.116,N,00611.589,E,1,09,2.0,26.1,M,44.0,M,,*7E
$GPGSA,A,3,01,04,,13,19,20,22,24,25,27,,,2.6,2.0,3.0*3E
$GPGSV,3,1,11,01,69,110,48,04,58,252,47,06,02,003,00,13,63,198,48*7A
$GPGSV,3,2,11,19,26,158,41,20,33,113,43,22,09,076,33,24,39,301,44*7D
$GPGSV,3,3,11,25,18,037,38,27,07,174,31,30,03,338,00,,,,*42
$PGRME,15.0,M,22.5,M,15.0,M*1B
$GPGLL,6228.116,N,00611.589,E,084040,A*28
$PGRMZ,86,f,3*25
$PGRMM,WGS 84*06
$GPBOD,,T,,M,,*47
$GPRTE,1,1,c,0*07
$GPRMC,084042,A,6228.116,N,00611.589,E,000.0,360.0,081000,003.0,W*6B
$GPRMB,A,,,,,,,,,,,,V*71
$GPGGA,084042,6228.116,N,00611.589,E,1,09,2.0,26.1,M,44.0,M,,*7C
$GPGSA,A,3,01,04,,13,19,20,22,24,25,2
---------------------
Selve det at læse ind-data fra COM-porten er ikke noget problem. Men nu øsnker jeg at skille ud alle sætninger som begynder med $GPGGA - altså f.eks. denne :
$GPGGA,084040,6228.116,N,00611.589,E,1,09,2.0,26.1,M,44.0,M,,*7E
Hvordan gør jeg dette enkelt?. Jeg har tænkt på at lave en \"kø-struktur\", som læser et tegn af gangen, og herefter ser om de sidste 6 tegn er = $GPGGA. Men der må vel findes en mere elegant metode...
