Hi L6E,
I'm glad you got it figured out.
Just for future reference, checking the data with
Streets&Trips or any other navigation program would be as useless for your purposes as using one of the many utilities that capture the NMEA sentences. In all of those cases the only thing you learn is that the NMEA sentences themselves are valid. It's not a bad place to start, just as a quick sanity check to ensure the GPS module is functioning correctly. But it doesn't tell you nearly enough to work at the level you are.
In order to determine exactly what is coming out of the serial port (at a character data level), you need to capture
all the characters because there may be other characters in the data stream that act similar to the start/stop bits in the ASCII bit stream. The only way to determine this is to do a raw capture of the entire data stream to see what else is in it. .... Very much like using the scope to examine the serial data at the electrical level and discovering that there are control bits embedded in there.
I apologize that I did not mention start/stop bits to you. I assumed - based on the approach you are taking - that you already knew the construction of an ASCII character. Just for future reference, there are a number of possible combinations, depending on what the serial port is set to.
You have encountered the most common serial port setting: 8-n-1. That's eight data bits, no parity and one stop bit (there is always a start bit) for a total of ten bits or, more correctly, ten Baud times.
There are quite a few other possible combinations. You can have odd or even parity, or none. You can have either seven or eight data bits. You can have one or more stop "bits".
The stop bit really isn't a bit at all. It's a stop period, e.g. a period of time that can be arbitrarily long but cannot be shorter than a specified amount, usually one or two bit times. As an aside, this is how asynchronous communication lines stay "synced". The receiver is able to stop capturing bits when it reaches the first stop period and simply wait until it sees the next start bit come along. The amount of time it waits for the next start bit is irrelevant ... the beauty of asynch communications. As long as the sender honours the minimum stop period they negotiated when setting up the line, it's virtually impossible to get out of synch. The receiver simply re-syncs on the next start bit.
So, you could have encountered 7-E-2, or seven data bits, even parity and two stop bits (minimum of two bit times before the next start bit). Or a variety of other combinations.
All of this - the number of data and framing bits, the parity, the "endianness" (order of the data bits, starting with LSB or MSB) )and the transmission speed (Baud) of the line must be pre-agreed by the communicating parties (e.g. the GPS module and the computer's serial port). It's all defined in excruciating detail in the
EIA RS-232 spec. It's a great read if you are having difficulty getting to sleep.
...ken...