我正在尝试用C#编写一个程序,将从我的Zenec GPS单元下载的trk文件中的以下原始数据转换为更易读的格式
4A23EA5899007C06E33E451CFC0300009C190000
我的Zenec上显示的数据显示了我的目标:
Time: 2017-04-09 12:04:26
Latitude: 56.540981650
Longitude: 12.968768239
Altitude: 20.0
Speed(km/h): 6.6
我设法将前4个字节4A23EA58
解码为日期和时间"2017-04-09 12:04:26"
,但我似乎无法解码其余部分。我一直与该部门的供应商联系,但他们无法提供帮助。
感谢任何帮助 //斯蒂
答案 0 :(得分:0)
当你想出时间&日期,这些是32位小端数字。
0x58EA234A =十进制1491739466
使用它作为自1-1-1970以来的秒数产生所需的日期。 对接下来的4个字节尝试相同的方法可得到以下结果:
0x067C0099 =十进制108789913
但这看起来不像浮点数。也许这是缩放的?
108789913/2 ^ 23 = 12.968768
......所需的经度。下一个:
0x1C343EE3 =十进制473186019
473186019/2 ^ 23 = 56.408169
......所需的纬度。下一步
0x000003FC =十进制1020
0x0000199C =十进制6556
6556可能是速度:
6556/10 ^ 3 = 6.556 ,轮到 6.6
不幸的是,即使我尝试其他高度单位,我也找不到很好的缩放比例从1020获得20米:
20.0m = 65.6168ft = 787.402in = 21.8723yds
这些值中的任何一个都没有一个很好的因子缩放到1020.缩放因子为51并不好,但也许这就是他们所做的:
1020/51 = 20.0
我突然意识到海拔高度可能会达到+1000。地球上存在负升高,因此为了避免需要签名号码,他们可能在所有高度上添加了1000以保证正数。它可以存储在 unsigned 号码中。 您确实需要更多数据点。
一方面,如果他们只报告整数(整)米,我会感到惊讶,因为GPS设备报告小数点后的1位或2位数。
OTOH,GPS海拔高度并不准确,大多数徒步旅行者不需要知道海拔高度达到厘米。