c# - Concox TR06 GPS定位器解码4字节纬度/4字节经度

标签 c# gps

我们有一个 Concox TG06 GPS 追踪器。我通过 TCP 从它接收数据,但我正在努力解码纬度和经度坐标(在 C# 中)。根据协议(protocol)手册,从跟踪器(终端)到服务器的消息是这样的:

Concox TR06 position protocol

如您所见,纬度和经度坐标各为 4 个字节。再往下,手册解释了这些坐标的格式:

5.2.1.6 纬度 消耗四个字节,定义位置数据的纬度值。取值范围为0 - 162000000,表示0°-90°的范围。其转换方法如下: 将GPS模块输出的经纬度值转换成以分钟为单位的小数;将转换后的小数乘以 30000;并将相乘结果转换为十六进制。例子:22º32.7658’=(22X60+32.7658)X30000=40582974,然后转换成十六进制数40582974(十进制)= 26B3F3E(十六进制)最后的值为0x02 0x6B 0x3F 0x3E

我真的很努力向后解决这个问题 - 即从四个字节 (0x02 0x6B 0x3F 0x3E) 到纬度坐标(不一定是度数和分钟,因为我在我的代码中使用十进制)。基本上我正在尝试创建一个函数,其 shell 如下所示:

private double DecodeLat(byte[] latBytes)
{
    double latitude;
    // implementation
    return latitude;
{

(经度显然相同)。如果有任何帮助,我将不胜感激!

谢谢

最佳答案

你可以解码如下:

public static decimal DecodeLatitude(byte[] bytes)
{
    decimal minutes = (bytes[0] << 24) + (bytes[1] << 16) + (bytes[2] << 8) + bytes[3];
    minutes /= 30000;

    return minutes;
}

查看示例 here .

关于c# - Concox TR06 GPS定位器解码4字节纬度/4字节经度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39529059/

相关文章:

iphone - 增强现实 SDK

android - 如何处理应用程序被HOME按钮最小化

android - 检查 GPS 可访问性

c# - SqlDateTime 溢出必须介于 1/1/1753 和 12/31/9999 之间,来自对 sql 的 Access

c# - 多个 Worker 在 .NET Core 中并行运行

c# - 底层连接已关闭 : An unexpected error occurred on a receive

android - 如何从 GPS 设置窗口返回到我的 Activity

c++ - 如何在我的程序中检测 GPS 设备连接到的端口(C/C)

c# - 传递运算符和其他参数

c# - LINQ to Entities 在尝试解析列以进行不等式比较时无法识别方法 'Int32 Parse(System.String)' 方法