HopeToBeUseful1day
Member since Jul 2023 • Last active Aug 2023Most recent activity
-
- 11 comments
- 1,067 views
-
-
Looks like @BillM implemented the checksum function another way. His version computes 28 without "$" sign. Attached screenshot
-
I'm not sure if "$" should be accounted in the checksum.
As shown here, NMEA checksum calculation does not include "$" and "*"Lets assume the following NMEA sentence:
$GPGLL,5300.97914,N,00259.98174,E,125926,A*28
In this sentence the checksum is the character representation of the
hexadecimal value 28. The string that the checksum is calculated over
isGPGLL,5300.97914,N,00259.98174,E,125926,A
To calculate the checksum you parse all characters between $ and *
from the NMEA sentence into a new string. -
-
-
Thank for the reply. The post misses the checksum. The real code is:
function checksum(str) { var cs = 0; for (const c of str) { cs = cs ^ c.charCodeAt(0); //XOR } return cs.toString(16).toUpperCase().padStart(2, '0'); } function configureSBAS() { const thisTime = new Date(); let timeString = thisTime.toISOString(); // SBAS satellite (SBAS satellite No. 1-19, corresponding to PRN 120-138 var cmd = "PCAS15,4,FFFF"; //turn on satellites 1-16 of SBAS //var cmd = "PCAS15,4,7FFFF"; //turn on satellites 1-19 of SBAS cmd = "$" + cmd + "*" + checksum(cmd); Serial1.println(cmd); writeLogFile(timeString + ": " + cmd + "\n"); SBASon = true; }
-
Playing with @BillM 's code. Despite forcing AT6558(R?) into the SBAS mode by sending
"PCAS15,4,FFFF"
to the chip, the error is still over 7 meters.
Is there a way to get the error below 2 meters as stated in most SBAS articles?UPD:
After taking weighted by time between records average of recorded coordinates at a static point and comparing those average coordinates to the true coordinates, the error seems to be closer to 20 meters.UPD2:
The command checksum is not included in the post. When the command is sent to the GPS chip the checksum is added.
Mostly ask questions. Barely can answer anything