Python教程

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

本文主要是介绍python 语言实现jtt808协议终端报文上报及交互1,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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实现

这篇关于python 语言实现jtt808协议终端报文上报及交互1的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!