GPS 周数翻转到 1999 年,不用替换 GPS 硬件,平台端的解决办法

2019-04-15 08:50:47 +08:00
 opengps

本文写给同样对接过车载 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 文章的更新编辑依此链接为准。欢迎关注源站原创文章!

2284 次点击
所在节点    程序员
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/555157

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX