本文写给同样对接过车载 GPS 的同行使用,通过修改 socket 服务端代码解决 4 月 7 日 GPS 周翻转计数问题
GPS 信号的 10 个 bit 位最大存储 1024 周,那么很显然,在不修改终端的情况下,平台端也可以解决这个问题!
位置服务平台端:先判断终端时间是否是早于当前等于 1024 周(严格来说推荐约束 1023 周到 1025 周之间)
然后强制把终端传来的时间,增加 1024 周即可!
简单计算一下:
1024 周=10247(天)=10247/365(年) =19.63835616438356 年
约等于 19.6 年,忽略闰年闰秒情况
10 个 bit 位,最大表示 1024。懂点二进制的同学可以看这句:从 0000000000 到 1111111111 总共是 1024 个二进制数字。
而 GPS 通讯规则里,计算时间的周( week ),只给它准备了这么 10 个字节的位置。于是就出现了这个情况,跟里程表一样,涨到最大,下一个就是另一个周期里的 0。
兼容不到位的 GPS 终端,收到 GPS 信号,解析时候就会认为当前时间慢了 1024 周,所以这次 GPS 卫星信号时间周翻转升级事件,完全可以不更改硬件,修改平台端程序兼容这个时间差即可一切恢复正常!
之所有某些 GPS 位置服务平台会出现位置不更新,那是因为他们的平台有这多么一个逻辑:最新点只显示比当前位置时间更加新的坐标,所以才出现很多平台直接显示成离线,或者停止更新位置的效果!
原文地址: https://www.opengps.cn/Blog/View.aspx?id=294 文章的更新编辑依此链接为准。欢迎关注源站原创文章!