Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

[REBOL] Parsing a "Brick Wall" - Need help!

From: webmaster::windsweptfarm::com at: 10-Sep-2002 10:53

Dear List, Here's the background: I have a stream of "NMEA sentences" coming from a GPS unit on a serial port. I wish to parse the various elements within each sentence into variables/words. The hickup in this is that Rebol wants to evaluate these elements and is convinced that they are malformed data types. The $ prefix convinces Rebol that I am talking money, while the decimals are also generating errors of their own. How do I block this behaviour? I want these elements to be vanilla values until they are shunted. How can I insulate the data from evaluation prior to assignment? This is a typical NMEA sentences of one type ($GPGLL) that I wish to package into variables: $GPGLL,327.900,N,08056.851,W,141608,A*3E Here is the code to pull only "$GPGLL" data from GPS unit on com1: ;START CODE==========> GPS_STREAM: open/read/lines serial://port1/4800/8/none/1 while [0 <> (length? (NMEA_LINE: first GPS_STREAM)) ][while [(GEO_POS: find/match NMEA_LINE "$GPGLL,")][ (print GEO_POS) BREAK ]] close GPS_STREAM ;STOP CODE==========^ This prints all "NMEA sentences": START CODE==========> GPS_STREAM: open/read/lines serial://port1/4800/8/none/1 while [0 <> (length? (NMEA_LINE: first GPS_STREAM))][print NMEA_LINE] close GPS_STREAM ;STOP CODE==========^ Here is a raw stream of NMEA sentences from the GPS unit via com port: BTW: It is a simulation of the unit travelling at 160mph towards Garmin (the gps manufacturer, in Kansas). That is why we see the word "GARMIN". $GPRMC,143959,A,4309.445,N,08208.192,W,139.0,250.1,100902,008.1,W*78 $GPRMB,A,0.00,R,,GARMIN,3851.333,N,09447.941,W,629.5,250.0,139.0,V*2E $GPGGA,143959,4309.443,N,08208.202,W,1,11,2.0,378.3,M,-35.0,M,,*7A $GPGSA,A,3,03,09,14,15,17,18,21,23,26,29,31,,4.1,2.0,3.0*3D $GPGSV,3,1,11,03,14,284,36,09,52,111,46,14,24,241,40,15,64,189,48*71 $GPGSV,3,2,11,17,52,167,46,18,75,357,49,21,46,302,45,23,24,094,40*73 $GPGSV,3,3,11,26,19,054,38,29,11,056,34,31,06,319,30,,,,*4C $PGRME,15.0,M,22.5,M,15.0,M*1B $GPGLL,4309.435,N,08208.231,W,143959,A*35 $PGRMZ,1241,f,3*2D $PGRMM,WGS 84*06 $GPBOD,250.0,T,258.1,M,GARMIN,*50 $GPRTE,1,1,c,0,GARMIN*35 $GPWPL,3851.333,N,09447.941,W,GARMIN*49 $GPRMC,144001,A,4309.419,N,08208.291,W,139.0,250.1,100902,008.1,W*72 $GPRMB,A,0.00,R,,GARMIN,3851.333,N,09447.941,W,629.4,250.0,139.0,V*2F $GPGGA,144001,4309.417,N,08208.301,W,1,11,2.0,378.3,M,-35.0,M,,*7A $GPGSA,A,3,03,09,14,15,17,18,21,23,26,29,31,,4.1,2.0,3.0*3D $GPGSV,3,1,11,03,14,284,36,09,52,111,46,14,24,241,40,15,64,189,48*71 $GPGSV,3,2,11,17,52,167,46,18,75,001,49,21,46,302,45,23,24,094,40*73 $GPGSV,3,3,11,26,19,054,38,29,11,056,34,31,06,319,30,,,,*4C $PGRME,15.0,M,22.5,M,15.0,M*1B $GPGLL,4309.409,N,08208.331,W,144001,A*38 $PGRMZ,1241,f,3*2D $PGRMM,WGS 84*06 $GPBOD,250.0,T,258.1,M,GARMIN,*50 $GPRTE,1,1,c,0,GARMIN*35 $GPWPL,3851.333,N,09447.941,W,GARMIN*49 $GPRMC,144003,A,4309.393,N,08208.390,W,139.0,250.1,100902,008.1,W*75 $GPRMB,A,0.00,R,,GARMIN,3851.333,N,09447.941,W,629.4,250.0,139.0,V*2F $GPGGA,144003,4309.390,N,08208.400,W,1,11,2.0,378.3,M,-35.0,M,,*76 $GPGSA,A,3,03,09,14,15,17,18,21,23,26,29,31,,4.1,2.0,3.0*3D $GPGSV,3,1,11,03,14,284,36,09,52,111,46,14,24,241,40,15,64,189,48*71 $GPGSV,3,2,11,17,52,167,46,18,75,001,49,21,46,302,45,23,24,094,40*73 $GPGSV,3,3,11,26,19,054,38,29,11,056,34,31,06,319,30,,,,*4C $PGRME,15.0,M,22.5,M,15.0,M*1B $GPGLL,4309.382,N,08208.430,W,144003,A*38 $PGRMZ,1241,f,3*2D $PGRMM,WGS 84*06 $GPBOD,250.0,T,258.1,M,GARMIN,*50 $GPRTE,1,1,c,0,GARMIN*35 $GPWPL,3851.333,N,09447.941,W,GARMIN*49 $GPRMC,144005,A,4309.366,N,08208.489,W,139.0,250.1,100902,008.1,W*76 $GPRMB,A,0.00,R,,GARMIN,3851.333,N,09447.941,W,629.3,250.0,139.0,V*28 $GPGGA,144005,4309.364,N,08208.499,W,1,11,2.0,378.3,M,-35.0,M,,*7B $GPGSA,A,3,03,09,14,15,17,18,21,23,26,29,31,,4.1,2.0,3.0*3D $GPGSV,3,1,11,03,14,284,36,09,52,111,46,14,24,241,40,15,64,189,48*71 $GPGSV,3,2,11,17,52,167,46,18,75,001,49,21,46,302,45,23,24,094,40*73 $GPGSV,3,3,11,26,19,054,38,29,11,056,34,31,06,319,30,,,,*4C $PGRME,15.0,M,22.5,M,15.0,M*1B $GPGLL,4309.356,N,08208.529,W,144005,A*3E $PGRMZ,1241,f,3*2D $PGRMM,WGS 84*06 $GPBOD,250.0,T,258.1,M,GARMIN,*50 $GPRTE,1,1,c,0,GARMIN*35 $GPWPL,3851.333,N,09447.941,W,GARMIN*49 $GPRMC,144007,A,4309.340,N,08208.589,W,139.0,250.1,100902,008.1,W*71 $GPRMB,A,0.00,R,,GARMIN,3851.333,N,09447.941,W,629.2,250.0,139.0,V*29 $GPGGA,144007,4309.337,N,08208.599,W,1,11,2.0,378.3,M,-35.0,M,,*7E $GPGSA,A,3,03,09,14,15,17,18,21,23,26,29,31,,4.1,2.0,3.0*3D $GPGSV,3,1,11,03,14,284,36,09,52,111,46,14,24,241,40,15,64,189,48*71 $GPGSV,3,2,11,17,52,167,46,18,75,001,49,21,46,302,45,23,24,094,40*73 $GPGSV,3,3,11,26,19,054,38,29,11,056,34,31,06,319,30,,,,*4C $PGRME,15.0,M,22.5,M,15.0,M*1B $GPGLL,4309.330,N,08208.628,W,144007,A*3E $PGRMZ,1241,f,3*2D $PGRMM,WGS 84*06 $GPBOD,250.0,T,258.1,M,GARMIN,*50 $GPRTE,1,1,c,0,GARMIN*35 $GPWPL,3851.333,N,09447.941,W,GARMIN*49 $GPRMC,144009,A,4309.314,N,08208.688,W,139.0,250.1,100902,008.1,W*7C $GPRMB,A,0.00,R,,GARMIN,3851.333,N,09447.941,W,629.1,250.0,139.0,V*2A $GPGGA,144009,4309.311,N,08208.698,W,1,11,2.0,378.3,M,-35.0,M,,*76 $GPGSA,A,3,03,09,14,15,17,18,21,23,26,29,31,,4.1,2.0,3.0*3D $GPGSV,3,1,11,03,14,284,36,09,52,111,46,14,24,241,40,15,64,189,48*71 $GPGSV,3,2,11,17,52,167,46,18,75,001,49,21,46,302,45,23,24,094,40*73 Thanks in advance! Jim