查看: 1861|回复: 0

[ASP.NET教程] 基于JT/T808 协议的GPS解析分享 C#

发表于 2018-3-7 08:00:01

呵呵,这个东西困扰了几天,今天又发现一个BUG,查询资料的过程中遇到的都是项目推广的东西,没几篇帖子认真的仔细的说说怎么来解析,好不容易弄出来了,发出来大家参考一下!!!
只是简单的模拟一下解析的过程,如果你还需要更为详细的GPS框架实现,可能你还要多查查资料了。。。
假定模块发送的数据是:

byte tmpBytes = new byte[]
{
0x7E, 0x02, 0x00, 0x00, 0x3C, 0x01, 0x56, 0x09, 0x52, 0x25, 0x04, 0x3C, 0x78, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0C, 0x00, 0xC3, 0x02, 0x49, 0x8B, 0x68, 0x06, 0x52, 0xBC, 0xF0, 0x04, 0x65, 0x00, 0x00, 0x00,
0xAA, 0x16, 0x08, 0x20, 0x16, 0x27, 0x18, 0x01, 0x04, 0x00, 0x03, 0x07, 0xBC, 0x02, 0x02, 0x01, 0x32,
0x03, 0x02, 0x00, 0x00, 0x25, 0x04, 0x00, 0x00, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x00, 0x00, 0x30,
0x01, 0x18, 0x31, 0x01, 0x08, 0x57, 0x7E
};
然后服务端收到的数据转为字符后结果如下(此过程转换方法见方法1):
7E0200003C0156095225043C7800000000000C00C302498B680652BCF00465000000AA1608201627180104000307BC02020132030200002504000000002B0400000000300118310108577E

然后在解析过程中需要参考JT808协议,这个网上有相应的pdf文件,http://www.jt808.com/?p=893 可以参考这个,通过这个说说附加属性的解析过程:

也就是上方数据的这一部分:
0104000307BC02020132030200002504000000002B0400000000300118310108577E

基于JT/T808 协议的GPS解析分享   C#

类似于 经纬度、速度等参考协议文档就可以看明白了,难点在附加参数这里,有一些误区:
相对里程:
ID 01 附加长度04 即相对应的值长度为4 值:00 03 07 BC(解析的值是这一部分 前面的都是定格式的参数) 注意这是DWORD ToInt32

油耗:
ID 02 附加长度 02 相对于的值长度为2 值:01 32 注意这是WORD 转的时候转为Toint16 结果为306

转的时候注意是通过Byte数组转 直接通过“0132”的字符串肯定是错误的

附:方法1
public static string 方法1(byte[] bytes)
{
string result = "";
if (bytes != null)
{
for (int i = 0; i < bytes.Length; i++)
{
result += bytes[i].ToString("X2");
}
}
return result;
}

上图的资源来源于http://www.jt808.com/?p=893 这里,感谢,大家也可以参考这里的相关资料



回复

使用道具 举报