V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
opengps
V2EX  ›  程序员

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

  •  
  •   opengps ·
    null · 2019-04-15 08:50:47 +08:00 · 2288 次点击
    这是一个创建于 2055 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6005 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 02:16 · PVG 10:16 · LAX 18:16 · JFK 21:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.