7

我正在尝试从 GPS 跟踪设备转换 GPS 数据。该公司提供了协议手册,但不清楚。我能够从我从设备收到的数据包中解码的大部分数据。通信是通过 TCP/IP 进行的。我在解码经度和纬度的十六进制值时遇到问题。这是手册中的一个示例:

示例:22º32.7658'=(22X60+32.7658)X3000=40582974,然后转换为十六进制数 40582974(Decimal)= 26B3F3E(Hexadecimal) 最后得到值为 0x02 0x6B 0x3F 0x3E。

我想知道如何从十六进制反转为经度和纬度。设备将发送 26B3F3E。我想知道获取 22º32.7658 的过程。

该协议适用于 GT06 和 Heacent 908。

4

1 回答 1

8
  1. 将所有四个值存储在无符号 32 位变量中。
    v1 = 0x02, v2 = 0x6b, v3 = 0x3f, v4 = 0x3e.

  2. 计算(v4 << 48) | (v3 << 32) | (v2 << 16) | v1这将产生一个保存十进制值 40582974 的变量。

  3. 将其转换为浮点数并将其除以 30,000.0(您的 3,000 是错误的),这将为您提供 1,352.765

  4. 切成整数并除以 60。这将得到 22。

  5. 将第 4 步中得到的数字乘以 60,然后从第 3 步中得到的数字中减去。这将得到1352.765 - 22*6032.765。

有你的答案2232.765

于 2013-06-28T01:04:35.540 回答