基於JT/T808 協議的GPS解析分享 C#

呵呵,這個東西困擾了幾天,今天又發現一個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 這裏,感謝,大家也可以參考這裏的相關資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章