Yeah, that works just like you said it would. But unfortunately with my device it does not recognize position messages, the callback is not called.
My first step was do add these not supported sentences GNGLL and GPGLL to the list.
Now all records can be handled by the parser.
This is irrelevant for selecting the appropriate NMEA data set.The NMEA data records contain the talker-id at the beginning. This indicates which system was used for the current NMEA record.
Nowadays almost all GPS receivers can use several systems at the same time to get an optimal position determination.
Then the talker-id is <GN>.
NMEA messages are shown with heading $Gxyyy, where x stands for the satellite system (P = GPS, SBAS, QZSS, L = GLONASS, A = Galileo, B = BeiDou, N = Any combination of GNSS) and yyy for the type of message (e.g. ZDA=Time & Date).
- Suggestion: use only the 3 letters behind, the rest is discarded.
But another step is necessary.
Parsing NMEA
['GNRMC', '105120.00', 'A', '5207.48262', 'N', '00838.29766', 'E', '0.473', '', '220120', '', '', 'A', '6F']
The records at the position, 8 (speed), 10, 11 (Mag Var) are empty.
This leads to an error during the conversion to float, which then discards the data set.
My first approach was to simply convert the empty in fields segs to 0. Using a list-comprehension?
This would then be required for every record, so it always takes time.
The alternative would be an if-statement before the float calculation. But that would be 2 extra if-queries.
Hence my question about the time needed:
I want to track at high frequency.
I try to use a board like LoPy or FiPy or one of the new boards.
The GPS receivers I currently use are from u-blox®.
So they offer another version: PUBX.
Here are all the data I need in one line.
But the configuration is quite different from MTK commands.
And again a Windows program.
So I go on and on with great pleasure - and a lot of time.
Like riding a motorbike: The way is the goal.