JT808 2.4.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package JT808 --version 2.4.1
NuGet\Install-Package JT808 -Version 2.4.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="JT808" Version="2.4.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add JT808 --version 2.4.1
#r "nuget: JT808, 2.4.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install JT808 as a Cake Addin
#addin nuget:?package=JT808&version=2.4.1

// Install JT808 as a Cake Tool
#tool nuget:?package=JT808&version=2.4.1

JT808协议

MIT Licence.NET Core

前提条件

  1. 掌握进制转换:二进制转十六进制;
  2. 掌握BCD编码、Hex编码;
  3. 掌握各种位移、异或;
  4. 掌握常用反射;
  5. 掌握JObject的用法;
  6. 掌握快速ctrl+c、ctrl+v;
  7. 掌握Span<T>的基本用法
  8. 掌握以上装逼技能,就可以开始搬砖了。

JT808数据结构解析

数据包[JT808Package]

头标识 数据头 数据体/分包数据体 校验码 尾标识
Begin JT808Header JT808Bodies/JT808SubDataBodies CheckCode End
7E - - - 7E

数据头[JT808Header]

消息ID 消息体属性 协议版本号(2019版本) 终端手机号 消息流水号 消息总包数(依赖是否分包) 包序号(依赖是否分包)
MsgId JT808HeaderMessageBodyProperty ProtocolVersion TerminalPhoneNo MsgNum PackgeCount PackageIndex
数据头-消息体属性[JT808HeaderMessageBodyProperty]
版本标识(2019版本) 是否分包 加密标识 消息体长度
VersionFlag IsPackge Encrypt DataLength
消息体属性[JT808Bodies]

根据对应消息ID:MsgId

注意:数据内容(除去头和尾标识)进行转义判断

转义规则如下:

  1. 若数据内容中有出现字符 0x7e 的,需替换为字符 0x7d 紧跟字符 0x02;
  2. 若数据内容中有出现字符 0x7d 的,需替换为字符 0x7d 紧跟字符 0x01;

反转义的原因:确认JT808协议的TCP消息边界。

举个栗子1

1.组包:

MsgId 0x0200:位置信息汇报


JT808Package jT808Package = new JT808Package();

jT808Package.Header = new JT808Header
{
    MsgId = Enums.JT808MsgId.位置信息汇报,
    ManualMsgNum = 126,
    TerminalPhoneNo = "123456789012"
};

JT808_0x0200 jT808_0x0200 = new JT808_0x0200();
jT808_0x0200.AlarmFlag = 1;
jT808_0x0200.Altitude = 40;
jT808_0x0200.GPSTime = DateTime.Parse("2018-10-15 10:10:10");
jT808_0x0200.Lat = 12222222;
jT808_0x0200.Lng = 132444444;
jT808_0x0200.Speed = 60;
jT808_0x0200.Direction = 0;
jT808_0x0200.StatusFlag = 2;
jT808_0x0200.JT808LocationAttachData = new Dictionary<byte, JT808_0x0200_BodyBase>();

jT808_0x0200.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x01, new JT808_0x0200_0x01
{
    Mileage = 100
});

jT808_0x0200.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x02, new JT808_0x0200_0x02
{
    Oil = 125
});

jT808Package.Bodies = jT808_0x0200;

byte[] data = JT808Serializer.Serialize(jT808Package);

var hex = data.ToHexString();

// 输出结果Hex:
// 7E 02 00 00 26 12 34 56 78 90 12 00 7D 02 00 00 00 01 00 00 00 02 00 BA 7F 0E 07 E4 F1 1C 00 28 00 3C 00 00 18 10 15 10 10 10 01 04 00 00 00 64 02 02 00 7D 01 13 7E
2.手动解包:
1.原包:
7E 02 00 00 26 12 34 56 78 90 12 00 (7D 02) 00 00 00 01 00 00 00 02 00 BA 7F 0E 07 E4 F1 1C 00 28 00 3C 00 00 18 10 15 10 10 10 01 04 00 00 00 64 02 02 00 (7D 01) 13 7E

2.进行反转义
7D 02 ->7E
7D 01 ->7D
反转义后
7E 02 00 00 26 12 34 56 78 90 12 00 7E 00 00 00 01 00 00 00 02 00 BA 7F 0E 07 E4 F1 1C 00 28 00 3C 00 00 18 10 15 10 10 10 01 04 00 00 00 64 02 02 00 7D 13 7E

3.拆解
7E                  --头标识
02 00               --数据头->消息ID
00 26               --数据头->消息体属性
12 34 56 78 90 12   --数据头->终端手机号
00 7E               --数据头->消息流水号
00 00 00 01         --消息体->报警标志
00 00 00 02         --消息体->状态位标志
00 BA 7F 0E         --消息体->纬度
07 E4 F1 1C         --消息体->经度
00 28               --消息体->海拔高度
00 3C               --消息体->速度
00 00               --消息体->方向
18 10 15 10 10 10   --消息体->GPS时间
01                  --消息体->附加信息->里程
04                  --消息体->附加信息->长度
00 00 00 64         --消息体->附加信息->数据
02                  --消息体->附加信息->油量
02                  --消息体->附加信息->长度
00 7D               --消息体->附加信息->数据
13                  --检验码
7E                  --尾标识
3.程序解包:
//1.转成byte数组
byte[] bytes = "7E 02 00 00 26 12 34 56 78 90 12 00 7D 02 00 00 00 01 00 00 00 02 00 BA 7F 0E 07 E4 F1 1C 00 28 00 3C 00 00 18 10 15 10 10 10 01 04 00 00 00 64 02 02 00 7D 01 13 7E".ToHexBytes();

//2.将数组反序列化
var jT808Package = JT808Serializer.Deserialize(bytes);

//3.数据包头
Assert.Equal(Enums.JT808MsgId.位置信息汇报, jT808Package.Header.MsgId);
Assert.Equal(38, jT808Package.Header.MessageBodyProperty.DataLength);
Assert.Equal(126, jT808Package.Header.MsgNum);
Assert.Equal("123456789012", jT808Package.Header.TerminalPhoneNo);
Assert.False(jT808Package.Header.MessageBodyProperty.IsPackge);
Assert.Equal(0, jT808Package.Header.PackageIndex);
Assert.Equal(0, jT808Package.Header.PackgeCount);
Assert.Equal(JT808EncryptMethod.None, jT808Package.Header.MessageBodyProperty.Encrypt);

//4.数据包体
JT808_0x0200 jT808_0x0200 = (JT808_0x0200)jT808Package.Bodies;
Assert.Equal((uint)1, jT808_0x0200.AlarmFlag);
Assert.Equal((uint)40, jT808_0x0200.Altitude);
Assert.Equal(DateTime.Parse("2018-10-15 10:10:10"), jT808_0x0200.GPSTime);
Assert.Equal(12222222, jT808_0x0200.Lat);
Assert.Equal(132444444, jT808_0x0200.Lng);
Assert.Equal(60, jT808_0x0200.Speed);
Assert.Equal(0, jT808_0x0200.Direction);
Assert.Equal((uint)2, jT808_0x0200.StatusFlag);
//4.1.附加信息1
Assert.Equal(100, ((JT808_0x0200_0x01)jT808_0x0200.JT808LocationAttachData[JT808Constants.JT808_0x0200_0x01]).Mileage);
//4.2.附加信息2
Assert.Equal(125, ((JT808_0x0200_0x02)jT808_0x0200.JT808LocationAttachData[JT808Constants.JT808_0x0200_0x02]).Oil);

举个栗子2

// 使用消息Id的扩展方法创建JT808Package包
JT808Package jT808Package = Enums.JT808MsgId.位置信息汇报.Create("123456789012",
    new JT808_0x0200 {
        AlarmFlag = 1,
        Altitude = 40,
        GPSTime = DateTime.Parse("2018-10-15 10:10:10"),
        Lat = 12222222,
        Lng = 132444444,
        Speed = 60,
        Direction = 0,
        StatusFlag = 2,
        JT808LocationAttachData = new Dictionary<byte, JT808LocationAttachBase>
        {
            { JT808Constants.JT808_0x0200_0x01,new JT808_0x0200_0x01{Mileage = 100}},
            { JT808Constants.JT808_0x0200_0x02,new JT808_0x0200_0x02{Oil = 125}}
        }
});

byte[] data = JT808Serializer.Serialize(jT808Package);

var hex = data.ToHexString();
//输出结果Hex:
//7E 02 00 00 26 12 34 56 78 90 12 00 01 00 00 00 01 00 00 00 02 00 BA 7F 0E 07 E4 F1 1C 00 28 00 3C 00 00 18 10 15 10 10 10 01 04 00 00 00 64 02 02 00 7D 01 6C 7E

举个栗子3

// 初始化配置
IJT808Config DT1JT808Config = new DT1Config();
IJT808Config DT2JT808Config = new DT2Config();
// 注册自定义消息外部程序集
DT1JT808Config.Register(Assembly.GetExecutingAssembly());
// 跳过校验和验证
DT1JT808Config.SkipCRCCode = true;
// 根据不同的设备终端号,添加自定义消息Id
DT1JT808Config.MsgIdFactory.SetMap<DT1Demo6>();
DT2JT808Config.MsgIdFactory.SetMap<DT2Demo6>();
// 初始化序列化实例
JT808Serializer DT1JT808Serializer = new JT808Serializer(DT1JT808Config);
JT808Serializer DT2JT808Serializer = new JT808Serializer(DT2JT808Config);

可以参考Simples的Demo6

举个栗子4

遇到的问题-多设备多协议的自定义位置附加信息

场景: 一个设备厂商对应多个设备类型,不同设备类型可能存在相同的自定义位置附加信息Id,导致自定义附加信息Id冲突,无法解析。

解决方式:

1.可以根据设备类型做个工厂,解耦对公共序列化器的依赖。

2.可以根据设备类型去实现(GlobalConfigBase)对应的配置,根据不同的GlobalConfigBase实例去绑定对应协议解析器。

可以参考Simples的Demo4

可以参考Simples的Demo6

要是哪位大佬还有其他的解决方式,请您告知我下,谢谢您了。

举个栗子5

遇到的问题-多媒体数据上传进行分包处理

场景: 设备在上传多媒体数据的时候,由于数据比较多,一次上传不了,所以采用分包方式处理。

解决方式:

  1. 第一包数据上来采用平常的方式去解析数据;

  2. 当第二包上来跟第一包的分包数据体(SubDataBodies)进行合并

  3. 当N包数据上来,延续步骤2的方式。

普及知识点:一般行业分包是按256的整数倍,太多不行,太少也不行,必须刚刚好。

可以参考Simples的Demo5

举个栗子6

遇到的问题-多设备多协议的消息ID冲突

场景: 由于每个设备厂商不同,导致设备的私有协议可能使用相同的消息ID作为指令,导致平台解析不了。

解决方式:

可以根据设备类型去实现(GlobalConfigBase)对应的配置,根据不同的GlobalConfigBase实例去绑定对应 协议解析器。

可以参考Simples的Demo6

举个栗子7

如何兼容2019版本

最新协议文档已经写好了如何做兼容,就是在消息体属性中第14位为版本标识。

  1. 当第14位为0时,标识协议为2011年的版本;

  2. 当第14位为1时,标识协议为2019年的版本。

可以参考Simples的Demo7

举个栗子8

协议分析器在数据出现异常和纠错的时候也是挺有用的,总不能凭借24K氪金眼去观察数据,那么可以在开发协议的同时就把协议分析器给写好,这样方便技术或者技术支持排查问题,提高效率。

可以参考Simples的Demo8

举个栗子9

增加行车记录仪序列化器,既可以单独的存在,也可以组装在808的数据包当中。

可以参考Simples的Demo9

举个栗子10

场景: 有些设备,不会按照国标的附加信息Id来搞,把附加信息Id搞为两个字节,这样在上报上来的数据就会存在重复的附加Id,导致平台解析出错。

可以参考Simples的Demo10

举个栗子11

场景: 有些设备,补报的定位数据有异常数据包内容长度跟原始的内容长度不一致导致整包的数据的解析出错,再设备不升级,改不了的情况下,尽量能解析多少补报的数据量,就解析多少。

可以参考Simples的Demo11

举个栗子12

场景: 由于粤标的设备厂家自定义的附加信息长度可以为四4个字节的,所以需要兼容。

可以参考Simples的Demo12

注意:只适用于已知的设备厂家协议才行

举个栗子13

场景: 由于粤标的设备把2019版本的0x8105终端控制消息命令参数做了扩展,所以需要兼容。

可以参考Simples的Demo13

举个栗子14

场景: 由于协议库本身可能存在消息解析出错的情况,要么就提PR上来,但是不一定会及时发布,这时候就需要自己把原有的消息解析复制出来,改造好,然后重新注册。

可以参考Simples的Demo14

举个栗子15

场景: 由于某些厂商不按要求去做,明明使用的2013的协议但是在消息头部的版本标识位置为1,导致程序认为是2019协议。从而解析报错。此时可以强制解析成2013后,然后修正版本标识,重新序列化消息,以供下游服务使用

可以参考Simples的Demo15

NuGet安装

Package Name Version Preview Version Downloads Remark
Install-Package JT808 JT808 JT808 JT808 JT808
Install-Package JT808.Protocol.Extensions.JT1078 JT808.Protocol.Extensions.JT1078 JT808.Protocol.Extensions.JT1078 JT808 JT1078扩展JT808
Install-Package JT808.Protocol.Extensions.SuBiao JT808.Protocol.Extensions.SuBiao JT808.Protocol.Extensions.SuBiao JT808 主动安全(苏标)扩展JT808
Install-Package JT808.Protocol.Extensions.YueBiao JT808.Protocol.Extensions.YueBiao JT808.Protocol.Extensions.YueBiao JT808 主动安全(粤标)扩展JT808

使用BenchmarkDotNet性能测试报告(只是玩玩,不能当真)


BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19041.572 (2004/?/20H1)
Intel Core i7-8700K CPU 3.70GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical cores
.NET Core SDK=5.0.100
  [Host]     : .NET Core 5.0.0 (CoreCLR 5.0.20.51904, CoreFX 5.0.20.51904), X64 RyuJIT
  Job-WADLYX : .NET Core 5.0.0 (CoreCLR 5.0.20.51904, CoreFX 5.0.20.51904), X64 RyuJIT

Platform=AnyCpu  Server=False  Toolchain=.NET Core 5.0  

Method Categories N Mean Error StdDev Gen 0 Gen 1 Gen 2 Allocated
0x0200_All_AttachId_Serialize 0x0200Serializer 100 249.02 μs 3.466 μs 2.894 μs 31.7383 - - 196.88 KB
0x0200_All_AttachId_Deserialize 0x0200Serializer 100 762.07 μs 14.713 μs 15.743 μs 80.0781 - - 496.09 KB
0x0200_All_AttachId_Serialize 0x0200Serializer 10000 24,541.76 μs 173.184 μs 161.996 μs 3187.5000 - - 19687.5 KB
0x0200_All_AttachId_Deserialize 0x0200Serializer 10000 75,919.55 μs 1,326.444 μs 1,175.858 μs 8000.0000 - - 49609.55 KB
0x0200_All_AttachId_Serialize 0x0200Serializer 100000 249,887.82 μs 4,966.928 μs 5,520.727 μs 32000.0000 - - 196876.26 KB
0x0200_All_AttachId_Deserialize 0x0200Serializer 100000 734,062.09 μs 10,270.434 μs 9,104.472 μs 80000.0000 - - 496095 KB
0x0100Serialize 0x0100Serializer 100 79.16 μs 0.906 μs 0.803 μs 10.7422 - - 66.41 KB
0x0100Deserialize 0x0100Serializer 100 70.47 μs 1.377 μs 2.060 μs 15.7471 - - 96.88 KB
0x0100Serialize 0x0100Serializer 10000 7,934.91 μs 121.485 μs 113.637 μs 1078.1250 - - 6640.63 KB
0x0100Deserialize 0x0100Serializer 10000 7,077.60 μs 139.419 μs 165.969 μs 1578.1250 - - 9687.5 KB
0x0100Serialize 0x0100Serializer 100000 80,403.44 μs 1,522.446 μs 1,563.440 μs 10714.2857 - - 66406.25 KB
0x0100Deserialize 0x0100Serializer 100000 69,196.07 μs 1,289.555 μs 1,206.251 μs 15666.6667 - - 96875.13 KB

JT808终端通讯协议消息对照表

序号 消息ID 完成情况 测试情况 消息体名称 2019版本
1 0x0001 终端通用应答
2 0x8001 平台通用应答
3 0x0002 终端心跳
4 0x8003 补传分包请求
5 0x0100 终端注册 修改
6 0x8100 终端注册应答
7 0x0003 终端注销
8 0x0102 终端鉴权 修改
9 0x8103 设置终端参数 修改且增加
10 0x8104 查询终端参数
11 0x0104 查询终端参数应答
12 0x8105 终端控制
13 0x8106 查询指定终端参数
14 0x8107 消息体为空 查询终端属性
15 0x0107 查询终端属性应答
16 0x8108 下发终端升级包
17 0x0108 终端升级结果通知
18 0x0200 位置信息汇报 增加附加信息
19 0x8201 位置信息查询
20 0x0201 位置信息查询应答
21 0x8202 临时位置跟踪控制
22 0x8203 人工确认报警消息
23 0x8300 文本信息下发 修改
24 0x8301 事件设置 删除
25 0x0301 事件报告 删除
26 0x8302 提问下发 删除
27 0x0302 提问应答 删除
28 0x8303 信息点播菜单设置 删除
29 0x0303 信息点播/取消 删除
30 0x8304 信息服务 删除
31 0x8400 电话回拨
32 0x8401 设置电话本
33 0x8500 车辆控制 修改
34 0x0500 车辆控制应答
35 0x8600 设置圆形区域 修改
36 0x8601 删除圆形区域
37 0x8602 设置矩形区域 修改
38 0x8603 删除矩形区域
39 0x8604 设置多边形区域 修改
40 0x8605 删除多边形区域
41 0x8606 设置路线 修改
42 0x8607 删除路线
43 0x8700 行驶记录仪数据采集命令
44 0x0700 行驶记录仪数据上传
45 0x8701 行驶记录仪参数下传命令
46 0x0701 电子运单上报
47 0x0702 驾驶员身份信息采集上报 修改
48 0x8702 消息体为空 上报驾驶员身份信息请求
49 0x0704 定位数据批量上传 修改
50 0x0705 CAN 总线数据上传 修改
51 0x0800 多媒体事件信息上传
52 0x0801 多媒体数据上传 修改
53 0x8800 多媒体数据上传应答
54 0x8801 摄像头立即拍摄命令 修改
55 0x0805 摄像头立即拍摄命令应答 修改
56 0x8802 存储多媒体数据检索
57 0x0802 存储多媒体数据检索应答
58 0x8803 存储多媒体数据上传
59 0x8804 录音开始命令
60 0x8805 单条存储多媒体数据检索上传命令 修改
61 0x8900 数据下行透传 修改
62 0x0900 数据上行透传 修改
63 0x0901 数据压缩上报
64 0x8A00 平台 RSA 公钥
65 0x0A00 终端 RSA 公钥
66 0x8F00~0x8FFF 保留 保留 平台下行消息保留
67 0x0F00~0x0FFF 保留 保留 终端上行消息保留
68 0x0004 查询服务器时间请求 新增
69 0x8004 查询服务器时间应答 新增
70 0x0005 终端补传分包请求 新增
71 0x8204 链路检测 新增
72 0x8608 查询区域或线路数据 新增
73 0x0608 查询区域或线路数据应答 新增
74 0xE000~0xEFFF 保留 保留 厂商自定义上行消息 新增
75 0xF000~0xFFFF 保留 保留 厂商自定义下行消息 新增

JT1078扩展JT808议消息对照表

序号 消息ID 完成情况 测试情况 消息体名称
1 0x0200_0x14 视频相关报警
2 0x0200_0x15 视频信号丢失报警状态
3 0x0200_0x16 视频信号遮挡报警状态
4 0x0200_0x17 存储器故障报警状态
5 0x0200_0x18 异常驾驶行为报警详细描述
6 0x8103_0x0075 音视频参数设置
7 0x8103_0x0076 音视频通道列表设置
8 0x8103_0x0077 单独视频通道参数设置
9 0x8103_0x0079 特殊报警录像参数设置
10 0x8103_0x007A 视频相关报警屏蔽字
11 0x8103_0x007B 图像分析报警参数设置
12 0x8103_0x007C 终端休眠模式唤醒设置
13 0x1003 终端上传音视频属性
14 0x1005 终端上传乘客流量
15 0x1205 终端上传音视频资源列表
16 0x1206 文件上传完成通知
17 0x9003 查询终端音视频属性
18 0x9101 实时音视频传输请求
19 0x9102 音视频实时传输控制
20 0x9105 实时音视频传输状态通知
21 0x9201 平台下发远程录像回放请求
22 0x9202 平台下发远程录像回放控制
23 0x9205 查询资源列表
24 0x9206 文件上传指令
25 0x9207 文件上传控制
26 0x9301 云台旋转
27 0x9302 云台调整焦距控制
28 0x9303 云台调整光圈控制
29 0x9304 云台雨刷控制
30 0x9305 红外补光控制
31 0x9306 云台变倍控制

使用方法

IServiceCollection serviceDescriptors1 = new ServiceCollection();
serviceDescriptors1.AddJT808Configure()
                   .AddJT1078Configure();

主动安全(苏标)扩展JT808协议消息对照表

序号 消息ID 完成情况 测试情况 消息体名称
1 0x1210 报警附件信息消息
2 0x1211 文件信息上传
3 0x1212 文件上传完成消息
4 0x9208 报警附件上传指令
5 0x9212 文件上传完成消息应答
6 0x0200_0x64 高级驾驶辅助系统报警信息
7 0x0200_0x65 驾驶员状态监测系统报警信息
8 0x0200_0x66 胎压监测系统报警信息
9 0x0200_0x67 盲区监测系统报警信息
10 0x8103_0xF364 高级驾驶辅助系统参数
11 0x8103_0xF365 驾驶员状态监测系统参数
12 0x8103_0xF366 胎压监测系统参数
13 0x8103_0xF367 盲区监测系统参数
14 0x0900 上传基本信息
15 0x0900_0xF7 外设工作状态
16 0x0900_0xF8 外设系统信息
17 0x8900 查询基本信息
18 0x8900_0xF7 外设工作状态
19 0x8900_0xF8 外设系统信息

使用方法

IServiceCollection serviceDescriptors1 = new ServiceCollection();
serviceDescriptors1.AddJT808Configure()
                   .AddSuBiaoConfigure();

主动安全(粤标)扩展JT808协议消息对照表

注意:基于JT/T808 2019版本

序号 消息ID 完成情况 测试情况 消息体名称
1 0x1210 报警附件信息消息
2 0x1211 文件信息上传
3 0x1212 文件上传完成消息
4 0x9208 报警附件上传指令
5 0x9212 文件上传完成消息应答
6 0x1FC4 终端升级进度上报
7 0x0200_0x64 高级驾驶辅助系统报警信息
8 0x0200_0x65 驾驶员状态监测系统报警信息
9 0x0200_0x66 胎压监测系统报警信息
10 0x0200_0x67 盲区监测系统报警信息
11 0x8103_0xF364 高级驾驶辅助系统参数
12 0x8103_0xF365 驾驶员状态监测系统参数
13 0x8103_0xF366 胎压监测系统参数
14 0x8103_0xF367 盲区监测系统参数
15 0x8103_0xF370 智能视频协议版本信息
16 0x0900 上传基本信息
17 0x0900_0xF7 外设工作状态
18 0x0900_0xF8 外设系统信息
19 0x8900 查询基本信息
20 0x8900_0xF7 外设工作状态
21 0x8900_0xF8 外设系统信息

使用方法

IServiceCollection serviceDescriptors1 = new ServiceCollection();
serviceDescriptors1.AddJT808Configure()
                   .AddYueBiaoConfigure();
Product Compatible and additional computed target framework versions.
.NET net5.0 is compatible.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 is compatible. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (11)

Showing the top 5 NuGet packages that depend on JT808:

Package Downloads
JT808.DotNetty.Abstractions

基于DotNetty实现的JT808DotNetty的抽象库

JT808.Gateway.Abstractions

基于Pipeline实现的JT808Gateway的抽象库

JT808.Protocol.Extensions.Streamax

基于JT808协议锐明公交业务扩展部分

JT808.Protocol.Extensions.JT1078

JT/T1078 video message protocol based on JT/JT808 protocol and GB808 protocol extension.基于JT808协议、GB808协议扩展的JT1078视频消息协议。

JT808.Gateway.Client

基于pipeline实现的JT808客户端工具

GitHub repositories (4)

Showing the top 4 popular GitHub repositories that depend on JT808:

Repository Stars
yswenli/SAEA
SAEA.Socket is a high-performance IOCP framework TCP based on dotnet standard 2.0; Src contains its application test scenarios, such as websocket,rpc, redis driver, MVC WebAPI, lightweight message server, ultra large file transmission, etc. SAEA.Socket是一个高性能IOCP框架的 TCP,基于dotnet standard 2.0;Src中含有其应用测试场景,例如websocket、rpc、redis驱动、MVC WebAPI、轻量级消息服务器、超大文件传输等
SmallChi/JT1078
JT1078协议、GB1078协议、道路运输车辆卫星定位系统-视频通讯协议
SmallChi/JT808Gateway
JT/T808 Gateway,JT808 Gateway, GB808 Gateway(support 2011, 2013, 2019 version) JT/T808网关、JT808网关、GB808网关(支持2011、2013、2019版本)
SmallChi/JT809
JT809协议、GB809协议、道路运输车辆卫星定位系统-平台数据交换协议(支持2011、2019版本)
Version Downloads Last updated
2.6.5 548 12/7/2023
2.6.4 1,429 11/15/2023
2.6.3 247 10/29/2023
2.6.2 379 7/27/2023
2.6.2-preview7 184 7/20/2023
2.6.2-preview6 164 6/13/2023
2.6.2-preview5 435 6/6/2023
2.6.2-preview4 202 5/29/2023
2.6.2-preview3 137 5/23/2023
2.6.2-preview2 131 5/20/2023
2.6.2-preview1 128 5/16/2023
2.6.1 512 4/17/2023
2.6.0 421 1/30/2023
2.5.1 2,557 11/9/2022
2.5.0 875 10/19/2022
2.5.0-preview4 154 10/7/2022
2.5.0-preview3 428 8/31/2022
2.5.0-preview2 197 7/20/2022
2.5.0-preview1 707 5/22/2022
2.4.6 2,667 5/4/2022
2.4.6-preview2 203 4/26/2022
2.4.6-preview1 218 4/25/2022
2.4.5 8,603 11/18/2021
2.4.5-preview2 235 11/16/2021
2.4.5-preview1 285 11/11/2021
2.4.4 6,547 9/29/2021
2.4.4-preview1 442 9/8/2021
2.4.3 6,380 8/31/2021
2.4.2 6,239 7/23/2021
2.4.1 6,471 6/28/2021
2.4.1-preview1 467 6/28/2021
2.4.0 3,472 5/17/2021
2.3.9 3,589 4/28/2021
2.3.8 376 4/28/2021
2.3.7 3,760 4/3/2021
2.3.6 4,844 2/18/2021
2.3.5 3,527 1/4/2021
2.3.4 1,012 12/25/2020
2.3.3 1,301 12/21/2020
2.3.2 674 12/10/2020
2.3.1 648 11/30/2020
2.3.0 2,969 11/17/2020
2.2.14 1,427 10/28/2020
2.2.13 1,344 10/23/2020
2.2.12 3,691 8/28/2020
2.2.11 516 8/13/2020
2.2.10 7,619 4/9/2020
2.2.9 895 3/26/2020
2.2.8 2,888 3/1/2020
2.2.7 3,266 2/3/2020
2.2.6 2,222 1/23/2020
2.2.5 966 1/11/2020
2.2.4 617 1/6/2020
2.2.3 5,293 12/19/2019
2.2.2 1,260 12/11/2019
2.2.1 4,463 12/8/2019
2.2.0 720 12/5/2019
2.2.0-preview3 372 12/2/2019
2.2.0-preview2 384 11/25/2019
2.2.0-preview1 360 11/25/2019
2.1.8 4,519 10/26/2019
2.1.7 6,943 9/24/2019
2.1.6 4,901 9/4/2019
2.1.3 3,379 8/12/2019
2.1.2 2,714 7/19/2019
2.1.0 861 7/8/2019
2.0.0 1,058 6/27/2019
1.3.0 2,684 5/30/2019
1.2.1 762 4/1/2019
1.2.0 2,622 2/20/2019
1.1.4 2,592 1/30/2019
1.1.3 835 1/19/2019
1.1.2 2,927 1/4/2019
1.1.1 5,855 12/19/2018
1.1.0 750 11/19/2018
1.0.1 759 11/3/2018
1.0.0 735 10/15/2018

JT808协议、GB808协议、道路运输车辆卫星定位系统-北斗兼容车载终端通讯协议(支持2013、2019版本)