ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python 语言实现jtt808协议终端报文上报及交互1

2022-06-29 14:33:36  阅读:220  来源: 互联网

标签:00 python 报文 附加 校验码 -- 消息 jtt808 整型


python 语言实现jtt808协议终端报文上报及交互1

此次我们采用的协议时jtt808-2013

首先我们要了解jtt808协议是什么,这个只做简介。

先给一段报文,网上随便找的:

7E0200005B014141138693224E00000100000000000157E6DE06CBEC600000000000001703090019200104000026F5EB3700060089FFFFFFFD000700B400FFFFFFFF002400A901CC000627BD0FABCC27910000B727911287BF27BD1159C327BD0000BB27910ED1B5C97E

详细解释
原始数据为十六进制,转换成十进制后得到标准数据

7E --标识符
02 00 --消息头(消息ID)
00 5B --消息头(消息体属性)
01 41 41 13 86 93 --消息头(终端手机号)
22 4E --消息头(消息流水号)
00 00 01 00 --报警标志
00 00 00 00 --状态
01 57 E6 DE --纬度
06 CB EC 60 --经度
00 00 --高程
00 00 --速度
00 00 --方向
17 03 09 00 19 20 --时间(GTM+8)
01 --附加消息ID(0x01)
04 --附加消息长度(DWORD)
00 00 26 F5 --附加消息(里程)
EB --附加消息(0xEB,这里是厂商自定义的)
37 --附加消息长度(DWORD,16进制的37,10进制为55,剩下的消息55个长度)
0006 0089 FFFFFFFD --附加消息(厂商自定)
0007 00B4 00 FFFF FFFF --附加消息(厂商自定)
0024 00A9 01CC 00 06 --附加消息(厂商自定)
27BD 0FAB CC --附加消息(厂商自定)
2791 0000 B7 --附加消息(厂商自定)
2791 1287 BF --附加消息(厂商自定)
27BD 1159 C3 --附加消息(厂商自定)
27BD 0000 BB --附加消息(厂商自定)
2791 0ED1 B5 --附加消息(厂商自定)
C9 --校验码
7E --标识符

协议基础:

通信协议采用TCP方式,服务端和客户端

协议中采用大端模式(Big-Endian)的网络字节序来传递字和双字。

平台、设备数据交换间隔最长**秒一次  否则平台会自动断开连接。

平台、设备数据交互字符类型采用GBK编码。

 

从上面的解析可以看出,一条报文可以分为几个部分,

该消息结构包括:消息开始标识符、消息头(header)、消息体(body)、校验码(CRC)和消息结束标识符。

消息开始标识符(7e)

消息头

消息体

校验码

消息结束标识符(7e)

消息开始标识符:

标识位:采用0x7e表示,若校验码!消息头以及消息体中出现 0x7e ,则要进行转义处理

转义规则定义如下

0x7e → 0x7d 后紧跟一个 0x02

0x7d → 0x7d 后紧跟一个 0x01

发送一条内容为 0x30 0x7e 0x08 0x7d 0x55的数据包,则经过封装如下0x30 0x7d 0x02 0x08 0x7d 0x01 0x55

 

1.1.1 JTT808-2013数据类型

数据类型

说明

BYTE

无符号整型,1byte

WORD

无符号整型,2byte

DWORD

无符号整型,4byte

BYTE[n]

n字节

BCD[n]

8421码,nbyte

STRING

GBK编码,采用0终结符,如无数据,则放一个0x00终结符

 

2.数据类型:

数据类型

说明

INT8

有符号整型,1byte

BYTE(UINT8)

无符号整型,1byte

INT16

有符号整型,2byte

WORD (UINT16)

无符号整型,2byte

INT32

有符号整型,4byte

DWORD(UINT32)

无符号整型,4byte

BCD[n]

8421码,nbyte

BYTE[n]

nbyte

STRING

GBK编码,采用0终结符,如无数据,则放一个0x00终结符

 

 

效验码: 

检验码指从消息头开始,同后一字节异或,直到校验码前一个字节,校验码占用一个字节

 

消息处理:

消息处理过程如下

发送消息时: 消息体加密 > 消息封装(消息头、消息体) > 计算并填充校验码         >  转义

接收消息时: 转义还原   >   验证校验码             > 消息拆分(消息体、消息体) >  消息体解密

 

以上先写协议内容及大概,第二部分写python实现

标签:00,python,报文,附加,校验码,--,消息,jtt808,整型
来源: https://www.cnblogs.com/yongqing-python/p/16423245.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有