Research on Application and Development of GPS Beidou dual-mode Technology -- data parsing and gps Development
In the previous article, we introduced several important concepts. Next we will parse this dual-mode output log. Before parsing, let's take a look at the significance of each important standard field. In actual development, the author only used four of them, namely GGA, GSA, GSV, RMC, and GLL. Of course, there are other fields that I think are repeated, parse as needed. Next we will introduce them separately:
$ XXGGA, (1), (2), (3), (4), (5), (6), (7), (8), (9 ), m, (10), M, (11), (12) * hh (CR) (LF) the corresponding meaning of each part is: (1) Positioning UTC time: 05: 09 minutes 01 seconds (2) latitude (Format: ddmm. mmmm: dd level, mm. mmmm points); (3) N/S (north or south latitude): 39 degrees 31.4449 points north latitude; (4) longitude (Format: dddmm. mmmm: ddd, mm. mmmm points); (5) E/W (eastern longitude or Western longitude): eastern longitude 116 degrees 43.5123 points; (6) Quality Factor (0 = No positioning, 1 = real-time GPS, 2 = Differential GPS): 1 = real-time GPS; (7) number of available satellites (0 ~ 8): the number of available satellites = 07; (8) Horizontal precision factor (1.0 ~ 99.9); horizontal precision factor = 1.4; (9) antenna elevation (sea level,-9999.9 ~ 99999.9, unit: m); antenna elevation = 76.2 m); (10) height of the earth's elliptical sphere relative to sea level (-999.9 ~ 9999.9, unit: m):-7.0 m; (11) Differential GPS data age, real-time GPS without: none; (12) Differential reference station number (0000 ~ 1023), real-time GPS without: none; * sum verification domain; hh sum verification number: 65 (CR) (LF) Press enter, line feed.
$ XXGSA, <1 >,< 2 >,< 3 >,< 3 >,< 3 >,< 3 >,< 3 >,< 3 >,< 3>, <3>, <3>, <3>, <3>, <3>, <4>, <5>, <6> * hh <CR> <LF> <1> mode, M = manual, A = automatic <2> positioning type, 1 = No positioning, 2 = 2D positioning, 3 = 3D positioning <3> PRN code (Pseudo-Random Noise Code), which is used to calculate the satellite number (01 ~ 32 ). <4> position precision factor of PDOP (0.5 ~ 99.9) <5> HDOP horizontal precision factor (0.5 ~ 99.9) <6> VDOP vertical precision factor (0.5 ~ 99.9)
$ XXGSV, <1>, <2>, <3>, <4>, <5>, <6>, <7> ,... <4>, <5>, <6>, <7> * hh <CR> <LF> <1> total number of GSV statements <2> Number of GSV statements in this sentence <3> total number of visible satellites (00 ~ 12, the previous 0 will also be transmitted) <4> PRN code (Pseudo Random Noise Code) (01 ~ 32, the preceding 0 will also be transmitted) <5> satellite elevation (00 ~ 90 degrees, the first 0 will also be transmitted) <6> satellite azimuth (000 ~ 359 degrees, the previous 0 will also be transmitted) <7> signal-to-noise ratio (00 ~ 99dB. If no satellite is tracked, the preceding 0 values are transmitted. Note: <4 >,< 5 >,< 6>, <7> information is displayed cyclically based on each satellite. Each GSV statement can display up to four satellites. Other satellite information will be output in the next series of NMEA0183 statements.
$ XXRMC, <1 >,< 2 >,< 3 >,< 4 >,< 5 >,< 6 >,< 7 >,< 8 >,< 9>, <10>, <11>, <12> * hh <CR> <LF> <1> UTC time, hhmmss (hour/minute/second) format <2> Location status, A = valid positioning, V = Invalid positioning <3> latitude ddmm. mmmm (degree) format (the preceding 0 will also be transmitted) <4> latitude hemisphere N (northern hemisphere) or S (Southern Hemisphere) <5> longitude dddmm. mmmm (degree) format (the preceding 0 will also be transmitted) <6> longitude hemisphere E (eastern longitude) or W (Western longitude) <7> ground rate (000.0 ~ Section 999.9, the preceding 0 will also be transmitted) <8> ground heading (000.0 ~ 359.9 degrees. Based on the reference of zhenbei, the preceding 0 values will also be transmitted.) <9> UTC date, ddmmyy (day-month-year) format <10> magnetic angle (000.0 ~ 180.0 degrees, the previous 0 will also be transmitted) <11> magnetic angle direction, E (East) or W (West) <12> mode indication (output only for NMEA0183 3.00, A = autonomous positioning, D = difference, E = estimation, N = Invalid Data)
$ XXGLL, <1 >,< 2 >,< 3 >,< 4 >,< 5 >,< 6>, <7> * hh <CR> <LF> <1> latitude ddmm. mmmm (degree) format (the preceding 0 will also be transmitted) <2> latitude hemisphere N (northern hemisphere) or S (Southern Hemisphere) <3> longitude dddmm. mmmm (degree) format (the preceding 0 will also be transmitted) <4> longitude hemisphere E (eastern longitude) or W (Western longitude) <5> UTC time, hhmmss (hour/second) format <6> Location status, A = valid location, V = Invalid location <7> mode indication (output only in NMEA0183 3.00, A = autonomous location, D = differential, E = estimation, N = Invalid Data)
The above descriptions are fixed, which is stipulated in the NMEA0183 protocol. Before the beginning of GGA, I used XX to blur the data header because a single GPS module starts with GP, but if it is a dual-mode GGA, it may be GNGGA, GSA and GSV need to distinguish between GPS and Beidou. If GPS is used, GPGSV may be used, and BDGSV may be used. Of course, this data header needs to be determined based on specific modules, many modules can also use commands to modify data headers. The following describes a valid dual-mode log:
$GNGGA,033327.000,2234.6973,N,11355.2708,E,1,14,0.7,55.57,M,-2.7,M,0.0,0000,1.3*70$GNGLL,2234.6973,N,11355.2708,E,033327.000,A,0*32$GPGSA,A,3,05,02,13,10,17,12,06,26,25,09,,,1.5,0.7,1.3,0.8*34$BDGSA,A,3,01,03,04,05,,,,,,,,,1.5,0.7,1.3,0.8*2B$GPGSV,3,1,10,10,55,021,42,05,55,256,45,02,47,341,43,13,41,139,42*71$GPGSV,3,2,10,06,41,044,39,12,34,275,42,17,32,132,42,09,22,053,35*7A$GPGSV,3,3,10,26,14,184,37,25,11,308,35*7A$BDGSV,2,1,06,03,62,188,41,01,49,130,41,02,34,247,35,04,32,111,39*69$BDGSV,2,2,06,05,23,255,37,10,03,198,35*68$GNRMC,033327.000,A,2234.6973,N,11355.2708,E,0.000,50.711,281114,,,A*49$RUANT,2*42$GNGGA,033328.000,2234.6973,N,11355.2708,E,1,14,0.7,55.57,M,-2.7,M,0.0,0000,1.3*7F$GNGLL,2234.6973,N,11355.2708,E,033328.000,A,0*3D$GPGSA,A,3,05,02,13,10,17,12,06,26,25,09,,,1.5,0.7,1.3,0.8*34$BDGSA,A,3,01,03,04,05,,,,,,,,,1.5,0.7,1.3,0.8*2B$GPGSV,3,1,10,10,55,021,42,05,55,256,45,02,47,341,43,13,41,139,42*71$GPGSV,3,2,10,06,41,044,39,12,34,275,42,17,32,132,42,09,22,053,35*7A$GPGSV,3,3,10,26,14,184,38,25,11,308,35*75$BDGSV,2,1,06,03,62,188,40,01,49,130,41,02,34,247,36,04,32,111,38*6A$BDGSV,2,2,06,05,23,255,36,10,03,198,35*69$GNRMC,033328.000,A,2234.6973,N,11355.2708,E,0.000,50.711,281114,,,A*46$RUANT,2*42
From GGA and GLL, we can analyze its location, GSV, and GSA, and we can see how many active satellites there are, its PRN, SNR, azimuth, and whether there are any calendars, next, let's take a look at the dual-mode display pictures of each Visible satellite:
The satellite information above is captured during the actual road test. The antenna matching can be further optimized to improve the SNR. The next article introduces some management information about android location.