Beginner String formatting question

JAMoore84 at gmail.com JAMoore84 at gmail.com
Sat Jan 26 15:15:59 EST 2008


I apologize for the lack of details in my last post.  This time
formatting program is a piece of a larger program I am trying to write
to de-clutter GPS transmission.  I have a GPS receiver that transmits
its readings via bluetooth.  I've been able to use pySerial and store
X number of bytes, then write that to a file (the next step will be
finding a way to write the stream to a file directly).  The raw GPS
data is tranmitted in the NMEA format (http://vancouver-webpages.com/
peter/nmeafaq.txt):

$GPRMC,024830,V,,N,,E,,,260108,,,N*58
$GPVTG,,T,,M,,N,,K,N*2C
$GPGGA,024831,LAT_GOES_HERE,N,LONG_GOES_HERE,E,0,00,,,M,,M,,*61
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,3,1,09,09,,,37,13,,,00,18,,,00,23,,,00*75
$GPGSV,3,2,09,01,,,00,29,,,00,14,,,00,26,,,00*7A
$GPGSV,3,3,09,12,,,00,,,,,,,,,,,,*73
$GPRMC,024831,V,LAT_GOES_HERE,N,LONG_GOES_HERE,E,,,260108,,,N*59
$GPVTG,,T,,M,,N,,K,N*2C

the "$GPGGA" and "$GPRMC" lines are the ones that will give you your
Latitude and Longitude data --or the would if I had a signal.
All the entries are comma delimited, so I used the split(',') function
to parse the appropriate statements.  Here's the code for that:
=============================
input = open('c:\sample_readout.txt','r')   #location of the Raw GPS
data
output = open('c:\GPSout.txt', 'w')

output.write("Timestamp \t Latitude \t Longitude \t Velocity")

s = input.readlines()

for line in s:

  if line.startswith('$GPGGA'):
    InputTuple = line.split(',')

    time = InputTuple[1]
    lat  = InputTuple[2]+' '+InputTuple[3]
    long = InputTuple[4]+' '+InputTuple[5]

    out = '\n '+ time + '\t\t' + lat + '\t\t\t' + long

    output.writelines(out)

  elif line.startswith('$GPRMC'):
    InputTuple = line.split(',')

    time = InputTuple[1]
    lat  = InputTuple[3]+' '+InputTuple[4]
    long = InputTuple[5]+' '+InputTuple[6]

    out = '\n '+ time + '\t\t' + lat + '\t\t\t' + long

    output.writelines(out)

  elif line.startswith('$GPVTG'):  #this will give grounp speed in
knts and [7] gives kmph
    InputTuple = line.split(',')

    out = '\n ' + '\t\t' + InputTuple[5]

    output.writelines(out)

input.close()
output.close()
========================

The time stamp for both the GPRMC and GPGGA lines will be stored in
InputTuple[1].

Right now, this program will read the GPS data file and pull out the
necessary information.  I wanted the Format.py program to function as
a module so that I could call Format.FormatTime(time) to change the
HHMMSS GPS data to HH:MM:SS, for readability.  The next step was to
write a FormatCoord function (within the Format module) to do the same
for lat/long data.

Now that I've explained the structure, the argument of
Format.FormatTime() will be InputTuple[1] (the timestamp).  I want to
be able to call that function in the GPS program to read the contents
of InputTuple[1] and write the HH:MM:SS data to the file.

I've incorporated some of your recommendations into my program already
and it looks much better.  Thanks to everyone for your suggestions.

Jimmy





More information about the Python-list mailing list