@@ -295,7 +295,7 @@ namespace JT808.Protocol.Test.MessageBody | |||||
Assert.Equal(DateTime.Parse("2020-01-07 00:00:12"), jT808_0X8606.StartTime); | Assert.Equal(DateTime.Parse("2020-01-07 00:00:12"), jT808_0X8606.StartTime); | ||||
Assert.Equal(DateTime.Parse("2020-01-07 00:00:12"), jT808_0X8606.EndTime); | Assert.Equal(DateTime.Parse("2020-01-07 00:00:12"), jT808_0X8606.EndTime); | ||||
Assert.Equal(1, jT808_0X8606.InflectionPointItems.Count); | |||||
Assert.Single(jT808_0X8606.InflectionPointItems); | |||||
Assert.Equal((uint)1000, jT808_0X8606.InflectionPointItems[0].InflectionPointId); | Assert.Equal((uint)1000, jT808_0X8606.InflectionPointItems[0].InflectionPointId); | ||||
Assert.Equal((uint)123456789, jT808_0X8606.InflectionPointItems[0].InflectionPointLat); | Assert.Equal((uint)123456789, jT808_0X8606.InflectionPointItems[0].InflectionPointLat); | ||||
@@ -8,36 +8,61 @@ using System.Text; | |||||
namespace JT808.Protocol | namespace JT808.Protocol | ||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// DI扩展 | |||||
/// </summary> | /// </summary> | ||||
public static class DependencyInjectionExtensions | public static class DependencyInjectionExtensions | ||||
{ | { | ||||
/// <summary> | |||||
/// 注册808配置 | |||||
/// </summary> | |||||
/// <param name="services"></param> | |||||
/// <param name="jT808Config"></param> | |||||
/// <returns></returns> | |||||
public static IJT808Builder AddJT808Configure(this IServiceCollection services, IJT808Config jT808Config) | public static IJT808Builder AddJT808Configure(this IServiceCollection services, IJT808Config jT808Config) | ||||
{ | { | ||||
services.AddSingleton(jT808Config.GetType(), jT808Config); | services.AddSingleton(jT808Config.GetType(), jT808Config); | ||||
return new DefaultBuilder(services, jT808Config); | return new DefaultBuilder(services, jT808Config); | ||||
} | } | ||||
/// <summary> | |||||
/// 注册808配置 | |||||
/// </summary> | |||||
/// <param name="builder"></param> | |||||
/// <param name="jT808Config"></param> | |||||
/// <returns></returns> | |||||
public static IJT808Builder AddJT808Configure(this IJT808Builder builder, IJT808Config jT808Config) | public static IJT808Builder AddJT808Configure(this IJT808Builder builder, IJT808Config jT808Config) | ||||
{ | { | ||||
builder.Services.AddSingleton(jT808Config.GetType(), jT808Config); | builder.Services.AddSingleton(jT808Config.GetType(), jT808Config); | ||||
return builder; | return builder; | ||||
} | } | ||||
/// <summary> | |||||
/// 注册808配置 | |||||
/// </summary> | |||||
/// <typeparam name="TJT808Config"></typeparam> | |||||
/// <param name="services"></param> | |||||
/// <returns></returns> | |||||
public static IJT808Builder AddJT808Configure<TJT808Config>(this IServiceCollection services)where TJT808Config : IJT808Config,new() | public static IJT808Builder AddJT808Configure<TJT808Config>(this IServiceCollection services)where TJT808Config : IJT808Config,new() | ||||
{ | { | ||||
var config = new TJT808Config(); | var config = new TJT808Config(); | ||||
services.AddSingleton(typeof(TJT808Config), config); | services.AddSingleton(typeof(TJT808Config), config); | ||||
return new DefaultBuilder(services, config); | return new DefaultBuilder(services, config); | ||||
} | } | ||||
/// <summary> | |||||
/// 注册808配置 | |||||
/// </summary> | |||||
/// <typeparam name="TJT808Config"></typeparam> | |||||
/// <param name="builder"></param> | |||||
/// <returns></returns> | |||||
public static IJT808Builder AddJT808Configure<TJT808Config>(this IJT808Builder builder) where TJT808Config : IJT808Config, new() | public static IJT808Builder AddJT808Configure<TJT808Config>(this IJT808Builder builder) where TJT808Config : IJT808Config, new() | ||||
{ | { | ||||
var config = new TJT808Config(); | var config = new TJT808Config(); | ||||
builder.Services.AddSingleton(typeof(TJT808Config), config); | builder.Services.AddSingleton(typeof(TJT808Config), config); | ||||
return builder; | return builder; | ||||
} | } | ||||
/// <summary> | |||||
/// 注册808配置 | |||||
/// </summary> | |||||
/// <param name="services"></param> | |||||
/// <returns></returns> | |||||
public static IJT808Builder AddJT808Configure(this IServiceCollection services) | public static IJT808Builder AddJT808Configure(this IServiceCollection services) | ||||
{ | { | ||||
DefaultGlobalConfig config = new DefaultGlobalConfig(); | DefaultGlobalConfig config = new DefaultGlobalConfig(); | ||||
@@ -85,8 +85,17 @@ namespace JT808.Protocol.Enums | |||||
/// 标志维持至报警条件解除 | /// 标志维持至报警条件解除 | ||||
/// </summary> | /// </summary> | ||||
疲劳驾驶预警 = 16384, | 疲劳驾驶预警 = 16384, | ||||
/// <summary> | |||||
/// 保留1 | |||||
/// </summary> | |||||
保留1 = 32768, | 保留1 = 32768, | ||||
/// <summary> | |||||
/// 保留2 | |||||
/// </summary> | |||||
保留2 = 65536, | 保留2 = 65536, | ||||
/// <summary> | |||||
/// 保留3 | |||||
/// </summary> | |||||
保留3 = 131072, | 保留3 = 131072, | ||||
/// <summary> | /// <summary> | ||||
/// 当天累计驾驶超时 | /// 当天累计驾驶超时 | ||||
@@ -5,7 +5,13 @@ | |||||
/// </summary> | /// </summary> | ||||
public enum JT808CallBackType : byte | public enum JT808CallBackType : byte | ||||
{ | { | ||||
/// <summary> | |||||
/// 普通通话 | |||||
/// </summary> | |||||
普通通话 = 0, | 普通通话 = 0, | ||||
/// <summary> | |||||
/// 监听 | |||||
/// </summary> | |||||
监听 = 1 | 监听 = 1 | ||||
} | } | ||||
} | } |
@@ -9,13 +9,37 @@ namespace JT808.Protocol.Enums | |||||
/// </summary> | /// </summary> | ||||
public enum JT808CameraResolutionType:byte | public enum JT808CameraResolutionType:byte | ||||
{ | { | ||||
/// <summary> | |||||
/// x320_240 | |||||
/// </summary> | |||||
x320_240 = 0x01, | x320_240 = 0x01, | ||||
/// <summary> | |||||
/// x640_480 | |||||
/// </summary> | |||||
x640_480 = 0x02, | x640_480 = 0x02, | ||||
/// <summary> | |||||
/// x800_600 | |||||
/// </summary> | |||||
x800_600 = 0x03, | x800_600 = 0x03, | ||||
/// <summary> | |||||
/// x1020_768 | |||||
/// </summary> | |||||
x1020_768 = 0x04, | x1020_768 = 0x04, | ||||
/// <summary> | |||||
/// x176_144_Qcif | |||||
/// </summary> | |||||
x176_144_Qcif = 0x05, | x176_144_Qcif = 0x05, | ||||
/// <summary> | |||||
/// x352_288_Cif | |||||
/// </summary> | |||||
x352_288_Cif = 0x06, | x352_288_Cif = 0x06, | ||||
/// <summary> | |||||
/// x704_288_HALF_D1 | |||||
/// </summary> | |||||
x704_288_HALF_D1 = 0x07, | x704_288_HALF_D1 = 0x07, | ||||
/// <summary> | |||||
/// x704_576_D1 | |||||
/// </summary> | |||||
x704_576_D1 = 0x07, | x704_576_D1 = 0x07, | ||||
} | } | ||||
} | } |
@@ -5,7 +5,13 @@ | |||||
/// </summary> | /// </summary> | ||||
public enum JT808DirectionType : byte | public enum JT808DirectionType : byte | ||||
{ | { | ||||
/// <summary> | |||||
/// 进 | |||||
/// </summary> | |||||
进 = 0, | 进 = 0, | ||||
/// <summary> | |||||
/// 出 | |||||
/// </summary> | |||||
出 = 1 | 出 = 1 | ||||
} | } | ||||
} | } |
@@ -1,5 +1,8 @@ | |||||
namespace JT808.Protocol.Enums | namespace JT808.Protocol.Enums | ||||
{ | { | ||||
/// <summary> | |||||
/// 异常错误码 | |||||
/// </summary> | |||||
public enum JT808ErrorCode | public enum JT808ErrorCode | ||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
@@ -5,8 +5,17 @@ | |||||
/// </summary> | /// </summary> | ||||
public enum JT808TelephoneBookContactType : byte | public enum JT808TelephoneBookContactType : byte | ||||
{ | { | ||||
/// <summary> | |||||
/// 呼入 | |||||
/// </summary> | |||||
呼入 = 1, | 呼入 = 1, | ||||
/// <summary> | |||||
/// 呼出 | |||||
/// </summary> | |||||
呼出 = 2, | 呼出 = 2, | ||||
/// <summary> | |||||
/// 呼入_呼出 | |||||
/// </summary> | |||||
呼入_呼出 = 3 | 呼入_呼出 = 3 | ||||
} | } | ||||
} | } |
@@ -1,11 +1,29 @@ | |||||
namespace JT808.Protocol.Enums | namespace JT808.Protocol.Enums | ||||
{ | { | ||||
/// <summary> | |||||
/// 终端注册返回结果 | |||||
/// </summary> | |||||
public enum JT808TerminalRegisterResult : byte | public enum JT808TerminalRegisterResult : byte | ||||
{ | { | ||||
/// <summary> | |||||
/// 成功 | |||||
/// </summary> | |||||
成功 = 0x00, | 成功 = 0x00, | ||||
/// <summary> | |||||
/// 车辆已被注册 | |||||
/// </summary> | |||||
车辆已被注册 = 0x01, | 车辆已被注册 = 0x01, | ||||
/// <summary> | |||||
/// 数据库中无该车辆 | |||||
/// </summary> | |||||
数据库中无该车辆 = 0x02, | 数据库中无该车辆 = 0x02, | ||||
/// <summary> | |||||
/// 终端已被注册 | |||||
/// </summary> | |||||
终端已被注册 = 0x03, | 终端已被注册 = 0x03, | ||||
/// <summary> | |||||
/// 数据库中无该终端 | |||||
/// </summary> | |||||
数据库中无该终端 = 0x04 | 数据库中无该终端 = 0x04 | ||||
} | } | ||||
} | } |
@@ -1,5 +1,8 @@ | |||||
namespace JT808.Protocol.Enums | namespace JT808.Protocol.Enums | ||||
{ | { | ||||
/// <summary> | |||||
/// 通用应答返回 | |||||
/// </summary> | |||||
public enum JT808TerminalResult : byte | public enum JT808TerminalResult : byte | ||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
@@ -23,6 +23,13 @@ namespace JT808.Protocol.Extensions | |||||
static readonly ConcurrentDictionary<Type, (object Value, JT808SerializeMethod SerializeMethod)> jT808Serializers = new ConcurrentDictionary<Type, (object Value, JT808SerializeMethod SerializeMethod)>(); | static readonly ConcurrentDictionary<Type, (object Value, JT808SerializeMethod SerializeMethod)> jT808Serializers = new ConcurrentDictionary<Type, (object Value, JT808SerializeMethod SerializeMethod)>(); | ||||
static readonly ConcurrentDictionary<Type, (object Value, JT808DeserializeMethod DeserializeMethod)> jT808Deserializes = new ConcurrentDictionary<Type, (object Value, JT808DeserializeMethod DeserializeMethod)>(); | static readonly ConcurrentDictionary<Type, (object Value, JT808DeserializeMethod DeserializeMethod)> jT808Deserializes = new ConcurrentDictionary<Type, (object Value, JT808DeserializeMethod DeserializeMethod)>(); | ||||
/// <summary> | |||||
/// JT808动态序列化 | |||||
/// </summary> | |||||
/// <param name="objFormatter"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public static void JT808DynamicSerialize(object objFormatter, ref JT808MessagePackWriter writer, object value, IJT808Config config) | public static void JT808DynamicSerialize(object objFormatter, ref JT808MessagePackWriter writer, object value, IJT808Config config) | ||||
{ | { | ||||
Type type = value.GetType(); | Type type = value.GetType(); | ||||
@@ -51,6 +58,13 @@ namespace JT808.Protocol.Extensions | |||||
} | } | ||||
formatterAndDelegate.SerializeMethod(formatterAndDelegate.Value, ref writer, value, config); | formatterAndDelegate.SerializeMethod(formatterAndDelegate.Value, ref writer, value, config); | ||||
} | } | ||||
/// <summary> | |||||
/// JT808动态反序列化 | |||||
/// </summary> | |||||
/// <param name="objFormatter"></param> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public static dynamic JT808DynamicDeserialize(object objFormatter, ref JT808MessagePackReader reader, IJT808Config config) | public static dynamic JT808DynamicDeserialize(object objFormatter, ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
var type = objFormatter.GetType(); | var type = objFormatter.GetType(); | ||||
@@ -32,9 +32,9 @@ namespace JT808.Protocol.Extensions | |||||
/// <param name="maxLength"></param> | /// <param name="maxLength"></param> | ||||
public static string ValiMaxString(this string value, in string fieldName, in int maxLength) | public static string ValiMaxString(this string value, in string fieldName, in int maxLength) | ||||
{ | { | ||||
if (length > maxLength) | |||||
if (value.Length > maxLength) | |||||
{ | { | ||||
throw new JT808Exception(JT808ErrorCode.VailLength, $"{fieldName}:{length}>max length[{maxLength}]"); | |||||
throw new JT808Exception(JT808ErrorCode.VailLength, $"{fieldName}:{value.Length}>max length[{maxLength}]"); | |||||
} | } | ||||
return value; | return value; | ||||
} | } | ||||
@@ -6,9 +6,18 @@ using System.Text; | |||||
namespace JT808.Protocol | namespace JT808.Protocol | ||||
{ | { | ||||
/// <summary> | |||||
/// JT808构造器 | |||||
/// </summary> | |||||
public interface IJT808Builder | public interface IJT808Builder | ||||
{ | { | ||||
/// <summary> | |||||
/// JT808配置 | |||||
/// </summary> | |||||
IJT808Config Config { get; } | IJT808Config Config { get; } | ||||
/// <summary> | |||||
/// 服务注册 | |||||
/// </summary> | |||||
IServiceCollection Services { get; } | IServiceCollection Services { get; } | ||||
} | } | ||||
} | } |
@@ -7,8 +7,14 @@ using System.Text; | |||||
namespace JT808.Protocol.Interfaces | namespace JT808.Protocol.Interfaces | ||||
{ | { | ||||
/// <summary> | |||||
/// 全局配置基类 | |||||
/// </summary> | |||||
public abstract class GlobalConfigBase : IJT808Config | public abstract class GlobalConfigBase : IJT808Config | ||||
{ | { | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
protected GlobalConfigBase() | protected GlobalConfigBase() | ||||
{ | { | ||||
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); | Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); | ||||
@@ -31,26 +37,93 @@ namespace JT808.Protocol.Interfaces | |||||
TerminalPhoneNoLength = 12; | TerminalPhoneNoLength = 12; | ||||
Trim = true; | Trim = true; | ||||
} | } | ||||
/// <summary> | |||||
/// 配置Id | |||||
/// </summary> | |||||
public abstract string ConfigId { get; protected set; } | public abstract string ConfigId { get; protected set; } | ||||
/// <summary> | |||||
/// 分布式消息自增流水号 | |||||
/// </summary> | |||||
public virtual IJT808MsgSNDistributed MsgSNDistributed { get; set; } | public virtual IJT808MsgSNDistributed MsgSNDistributed { get; set; } | ||||
/// <summary> | |||||
/// 压缩 | |||||
/// </summary> | |||||
public virtual IJT808Compress Compress { get; set; } | public virtual IJT808Compress Compress { get; set; } | ||||
/// <summary> | |||||
/// 808分包策略 | |||||
/// </summary> | |||||
public virtual IJT808SplitPackageStrategy SplitPackageStrategy { get; set; } | public virtual IJT808SplitPackageStrategy SplitPackageStrategy { get; set; } | ||||
/// <summary> | |||||
/// 808消息Id工厂 | |||||
/// </summary> | |||||
public virtual IJT808MsgIdFactory MsgIdFactory { get; set; } | public virtual IJT808MsgIdFactory MsgIdFactory { get; set; } | ||||
/// <summary> | |||||
/// GBK编码 | |||||
/// </summary> | |||||
public virtual Encoding Encoding { get; set; } | public virtual Encoding Encoding { get; set; } | ||||
/// <summary> | |||||
/// 跳过校验码验证 | |||||
/// 默认false | |||||
/// </summary> | |||||
public virtual bool SkipCRCCode { get; set; } | public virtual bool SkipCRCCode { get; set; } | ||||
/// <summary> | |||||
/// 序列化器工厂 | |||||
/// </summary> | |||||
public virtual IJT808FormatterFactory FormatterFactory { get; set; } | public virtual IJT808FormatterFactory FormatterFactory { get; set; } | ||||
/// <summary> | |||||
/// 0x0200自定义附加信息工厂 | |||||
/// </summary> | |||||
public virtual IJT808_0x0200_Custom_Factory JT808_0X0200_Custom_Factory { get; set; } | public virtual IJT808_0x0200_Custom_Factory JT808_0X0200_Custom_Factory { get; set; } | ||||
/// <summary> | |||||
/// 0x0200附加信息工厂 | |||||
/// </summary> | |||||
public virtual IJT808_0x0200_Factory JT808_0X0200_Factory { get; set; } | public virtual IJT808_0x0200_Factory JT808_0X0200_Factory { get; set; } | ||||
/// <summary> | |||||
/// 0x8103自定义终端参数设置自定义消息工厂 | |||||
/// </summary> | |||||
public virtual IJT808_0x8103_Custom_Factory JT808_0X8103_Custom_Factory { get; set; } | public virtual IJT808_0x8103_Custom_Factory JT808_0X8103_Custom_Factory { get; set; } | ||||
/// <summary> | |||||
/// 0x8103终端参数设置消息工厂 | |||||
/// </summary> | |||||
public virtual IJT808_0x8103_Factory JT808_0X8103_Factory { get; set; } | public virtual IJT808_0x8103_Factory JT808_0X8103_Factory { get; set; } | ||||
/// <summary> | |||||
/// 终端SIM卡长度 | |||||
/// </summary> | |||||
public virtual int TerminalPhoneNoLength { get; set; } | public virtual int TerminalPhoneNoLength { get; set; } | ||||
/// <summary> | |||||
/// 是否去掉头尾空格 | |||||
/// </summary> | |||||
public virtual bool Trim { get; set; } | public virtual bool Trim { get; set; } | ||||
/// <summary> | |||||
/// 自定义数据上行透传消息工厂 | |||||
/// </summary> | |||||
public virtual IJT808_0x0900_Custom_Factory JT808_0x0900_Custom_Factory { get; set; } | public virtual IJT808_0x0900_Custom_Factory JT808_0x0900_Custom_Factory { get; set; } | ||||
/// <summary> | |||||
/// 自定义数据下行透传消息工厂 | |||||
/// </summary> | |||||
public virtual IJT808_0x8900_Custom_Factory JT808_0x8900_Custom_Factory { get; set; } | public virtual IJT808_0x8900_Custom_Factory JT808_0x8900_Custom_Factory { get; set; } | ||||
/// <summary> | |||||
/// 车辆控制消息工厂 | |||||
/// </summary> | |||||
public virtual IJT808_0x8500_2019_Factory JT808_0x8500_2019_Factory { get; set; } | public virtual IJT808_0x8500_2019_Factory JT808_0x8500_2019_Factory { get; set; } | ||||
/// <summary> | |||||
/// JT19056上行消息工厂 | |||||
/// </summary> | |||||
public IJT808_CarDVR_Up_Factory JT808_CarDVR_Up_Factory { get; set; } | public IJT808_CarDVR_Up_Factory JT808_CarDVR_Up_Factory { get; set; } | ||||
/// <summary> | |||||
/// JT19056下行消息工厂 | |||||
/// </summary> | |||||
public IJT808_CarDVR_Down_Factory JT808_CarDVR_Down_Factory { get; set; } | public IJT808_CarDVR_Down_Factory JT808_CarDVR_Down_Factory { get; set; } | ||||
/// <summary> | |||||
/// 跳过校验码验证 | |||||
/// 默认false | |||||
/// </summary> | |||||
public bool SkipCarDVRCRCCode { get; set; } | public bool SkipCarDVRCRCCode { get; set; } | ||||
/// <summary> | |||||
/// 外部扩展程序集注册 | |||||
/// </summary> | |||||
/// <param name="externalAssemblies"></param> | |||||
/// <returns></returns> | |||||
public virtual IJT808Config Register(params Assembly[] externalAssemblies) | public virtual IJT808Config Register(params Assembly[] externalAssemblies) | ||||
{ | { | ||||
if (externalAssemblies != null) | if (externalAssemblies != null) | ||||
@@ -4,8 +4,17 @@ using System.Text.Json; | |||||
namespace JT808.Protocol.Interfaces | namespace JT808.Protocol.Interfaces | ||||
{ | { | ||||
/// <summary> | |||||
/// JT808分析器 | |||||
/// </summary> | |||||
public interface IJT808Analyze | public interface IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 分析器 | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config); | void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config); | ||||
} | } | ||||
} | } |
@@ -5,7 +5,17 @@ | |||||
/// </summary> | /// </summary> | ||||
public interface IJT808Compress | public interface IJT808Compress | ||||
{ | { | ||||
/// <summary> | |||||
/// 压缩 | |||||
/// </summary> | |||||
/// <param name="data"></param> | |||||
/// <returns></returns> | |||||
byte[] Compress(byte[] data); | byte[] Compress(byte[] data); | ||||
/// <summary> | |||||
/// 解压缩 | |||||
/// </summary> | |||||
/// <param name="compressData"></param> | |||||
/// <returns></returns> | |||||
byte[] Decompress(byte[] compressData); | byte[] Decompress(byte[] compressData); | ||||
} | } | ||||
@@ -8,6 +8,9 @@ using System.Text; | |||||
namespace JT808.Protocol | namespace JT808.Protocol | ||||
{ | { | ||||
/// <summary> | |||||
/// JT808接口配置 | |||||
/// </summary> | |||||
public interface IJT808Config | public interface IJT808Config | ||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
@@ -4,8 +4,14 @@ using System.Text; | |||||
namespace JT808.Protocol.Interfaces | namespace JT808.Protocol.Interfaces | ||||
{ | { | ||||
/// <summary> | |||||
/// 消息描述接口 | |||||
/// </summary> | |||||
public interface IJT808Description | public interface IJT808Description | ||||
{ | { | ||||
/// <summary> | |||||
/// 消息描述 | |||||
/// </summary> | |||||
string Description { get;} | string Description { get;} | ||||
} | } | ||||
} | } |
@@ -3,10 +3,27 @@ using System.Collections.Generic; | |||||
namespace JT808.Protocol.Interfaces | namespace JT808.Protocol.Interfaces | ||||
{ | { | ||||
/// <summary> | |||||
/// JT808消息工厂接口 | |||||
/// </summary> | |||||
public interface IJT808MsgIdFactory:IJT808ExternalRegister | public interface IJT808MsgIdFactory:IJT808ExternalRegister | ||||
{ | { | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
IDictionary<ushort, object> Map { get; } | IDictionary<ushort, object> Map { get; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="msgId"></param> | |||||
/// <param name="instance"></param> | |||||
/// <returns></returns> | |||||
bool TryGetValue(ushort msgId, out object instance); | bool TryGetValue(ushort msgId, out object instance); | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <typeparam name="TJT808Bodies"></typeparam> | |||||
/// <returns></returns> | |||||
IJT808MsgIdFactory SetMap<TJT808Bodies>() where TJT808Bodies : JT808Bodies; | IJT808MsgIdFactory SetMap<TJT808Bodies>() where TJT808Bodies : JT808Bodies; | ||||
} | } | ||||
} | } |
@@ -1,7 +1,15 @@ | |||||
namespace JT808.Protocol.Interfaces | namespace JT808.Protocol.Interfaces | ||||
{ | { | ||||
/// <summary> | |||||
/// JT808分布式自增流水号 | |||||
/// </summary> | |||||
public interface IJT808MsgSNDistributed | public interface IJT808MsgSNDistributed | ||||
{ | { | ||||
/// <summary> | |||||
/// 根据终端SIM号自增 | |||||
/// </summary> | |||||
/// <param name="terminalPhoneNo"></param> | |||||
/// <returns></returns> | |||||
ushort Increment(string terminalPhoneNo); | ushort Increment(string terminalPhoneNo); | ||||
} | } | ||||
} | } |
@@ -10,6 +10,11 @@ namespace JT808.Protocol.Interfaces | |||||
/// </summary> | /// </summary> | ||||
public interface IJT808SplitPackageStrategy | public interface IJT808SplitPackageStrategy | ||||
{ | { | ||||
/// <summary> | |||||
/// 分包处理器 | |||||
/// </summary> | |||||
/// <param name="bigData"></param> | |||||
/// <returns></returns> | |||||
IEnumerable<JT808SplitPackageProperty> Processor(ReadOnlySpan<byte> bigData); | IEnumerable<JT808SplitPackageProperty> Processor(ReadOnlySpan<byte> bigData); | ||||
} | } | ||||
} | } |
@@ -5,9 +5,20 @@ using System.Text; | |||||
namespace JT808.Protocol.Interfaces | namespace JT808.Protocol.Interfaces | ||||
{ | { | ||||
/// <summary> | |||||
/// 自定义0x0200附加信息工厂 | |||||
/// </summary> | |||||
public interface IJT808_0x0200_Custom_Factory: IJT808ExternalRegister | public interface IJT808_0x0200_Custom_Factory: IJT808ExternalRegister | ||||
{ | { | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
IDictionary<byte, object> Map { get; } | IDictionary<byte, object> Map { get; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <typeparam name="TJT808_0x0200_CustomBody"></typeparam> | |||||
/// <returns></returns> | |||||
IJT808_0x0200_Custom_Factory SetMap<TJT808_0x0200_CustomBody>() where TJT808_0x0200_CustomBody : JT808_0x0200_CustomBodyBase; | IJT808_0x0200_Custom_Factory SetMap<TJT808_0x0200_CustomBody>() where TJT808_0x0200_CustomBody : JT808_0x0200_CustomBodyBase; | ||||
} | } | ||||
} | } |
@@ -6,10 +6,20 @@ using System.Text; | |||||
namespace JT808.Protocol.Interfaces | namespace JT808.Protocol.Interfaces | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x0200附加信息工厂 | |||||
/// </summary> | |||||
public interface IJT808_0x0200_Factory: IJT808ExternalRegister | public interface IJT808_0x0200_Factory: IJT808ExternalRegister | ||||
{ | { | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
IDictionary<byte, object> Map { get; set; } | IDictionary<byte, object> Map { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <typeparam name="TJT808_0x0200_Body"></typeparam> | |||||
/// <returns></returns> | |||||
IJT808_0x0200_Factory SetMap<TJT808_0x0200_Body>() where TJT808_0x0200_Body : JT808_0x0200_BodyBase; | IJT808_0x0200_Factory SetMap<TJT808_0x0200_Body>() where TJT808_0x0200_Body : JT808_0x0200_BodyBase; | ||||
} | } | ||||
} | } |
@@ -5,9 +5,20 @@ using System.Text; | |||||
namespace JT808.Protocol.Interfaces | namespace JT808.Protocol.Interfaces | ||||
{ | { | ||||
/// <summary> | |||||
/// 自定义数据上行透传 | |||||
/// </summary> | |||||
public interface IJT808_0x0900_Custom_Factory : IJT808ExternalRegister | public interface IJT808_0x0900_Custom_Factory : IJT808ExternalRegister | ||||
{ | { | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
IDictionary<byte, object> Map { get; } | IDictionary<byte, object> Map { get; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <typeparam name="TJT808_0x0900_BodyBase"></typeparam> | |||||
/// <returns></returns> | |||||
IJT808_0x0900_Custom_Factory SetMap<TJT808_0x0900_BodyBase>() where TJT808_0x0900_BodyBase : JT808_0x0900_BodyBase; | IJT808_0x0900_Custom_Factory SetMap<TJT808_0x0900_BodyBase>() where TJT808_0x0900_BodyBase : JT808_0x0900_BodyBase; | ||||
} | } | ||||
} | } |
@@ -5,9 +5,20 @@ using System.Text; | |||||
namespace JT808.Protocol.Interfaces | namespace JT808.Protocol.Interfaces | ||||
{ | { | ||||
/// <summary> | |||||
/// 自定义设置终端参数消息工厂 | |||||
/// </summary> | |||||
public interface IJT808_0x8103_Custom_Factory : IJT808ExternalRegister | public interface IJT808_0x8103_Custom_Factory : IJT808ExternalRegister | ||||
{ | { | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
IDictionary<uint, object> Map { get;} | IDictionary<uint, object> Map { get;} | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <typeparam name="TJT808_0x8103_CustomBody"></typeparam> | |||||
/// <returns></returns> | |||||
IJT808_0x8103_Custom_Factory SetMap<TJT808_0x8103_CustomBody>() where TJT808_0x8103_CustomBody : JT808_0x8103_CustomBodyBase; | IJT808_0x8103_Custom_Factory SetMap<TJT808_0x8103_CustomBody>() where TJT808_0x8103_CustomBody : JT808_0x8103_CustomBodyBase; | ||||
} | } | ||||
@@ -6,9 +6,20 @@ using System.Text; | |||||
namespace JT808.Protocol.Interfaces | namespace JT808.Protocol.Interfaces | ||||
{ | { | ||||
/// <summary> | |||||
/// 设置终端参数消息工厂 | |||||
/// </summary> | |||||
public interface IJT808_0x8103_Factory: IJT808ExternalRegister | public interface IJT808_0x8103_Factory: IJT808ExternalRegister | ||||
{ | { | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
IDictionary<uint, object> Map { get; } | IDictionary<uint, object> Map { get; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <typeparam name="TJT808_0x8103_Body"></typeparam> | |||||
/// <returns></returns> | |||||
IJT808_0x8103_Factory SetMap<TJT808_0x8103_Body>() where TJT808_0x8103_Body : JT808_0x8103_BodyBase; | IJT808_0x8103_Factory SetMap<TJT808_0x8103_Body>() where TJT808_0x8103_Body : JT808_0x8103_BodyBase; | ||||
} | } | ||||
} | } |
@@ -5,9 +5,20 @@ using System.Text; | |||||
namespace JT808.Protocol.Interfaces | namespace JT808.Protocol.Interfaces | ||||
{ | { | ||||
/// <summary> | |||||
/// 车辆控制 | |||||
/// </summary> | |||||
public interface IJT808_0x8500_2019_Factory : IJT808ExternalRegister | public interface IJT808_0x8500_2019_Factory : IJT808ExternalRegister | ||||
{ | { | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
IDictionary<ushort, object> Map { get; } | IDictionary<ushort, object> Map { get; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <typeparam name="TJT808_0x8500_ControlType"></typeparam> | |||||
/// <returns></returns> | |||||
IJT808_0x8500_2019_Factory SetMap<TJT808_0x8500_ControlType>() where TJT808_0x8500_ControlType : JT808_0x8500_ControlType; | IJT808_0x8500_2019_Factory SetMap<TJT808_0x8500_ControlType>() where TJT808_0x8500_ControlType : JT808_0x8500_ControlType; | ||||
} | } | ||||
} | } |
@@ -5,9 +5,20 @@ using System.Text; | |||||
namespace JT808.Protocol.Interfaces | namespace JT808.Protocol.Interfaces | ||||
{ | { | ||||
/// <summary> | |||||
/// 自定义数据下行透传消息工厂 | |||||
/// </summary> | |||||
public interface IJT808_0x8900_Custom_Factory : IJT808ExternalRegister | public interface IJT808_0x8900_Custom_Factory : IJT808ExternalRegister | ||||
{ | { | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
IDictionary<byte, object> Map { get; } | IDictionary<byte, object> Map { get; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <typeparam name="TJT808_0x8900_BodyBase"></typeparam> | |||||
/// <returns></returns> | |||||
IJT808_0x8900_Custom_Factory SetMap<TJT808_0x8900_BodyBase>() where TJT808_0x8900_BodyBase : JT808_0x8900_BodyBase; | IJT808_0x8900_Custom_Factory SetMap<TJT808_0x8900_BodyBase>() where TJT808_0x8900_BodyBase : JT808_0x8900_BodyBase; | ||||
} | } | ||||
} | } |
@@ -6,10 +6,24 @@ using System.Text; | |||||
namespace JT808.Protocol.Internal | namespace JT808.Protocol.Internal | ||||
{ | { | ||||
/// <summary> | |||||
/// 默认JT808构造器 | |||||
/// </summary> | |||||
class DefaultBuilder : IJT808Builder | class DefaultBuilder : IJT808Builder | ||||
{ | { | ||||
/// <summary> | |||||
/// DI服务 | |||||
/// </summary> | |||||
public IServiceCollection Services { get; } | public IServiceCollection Services { get; } | ||||
/// <summary> | |||||
/// JT808配置 | |||||
/// </summary> | |||||
public IJT808Config Config { get; } | public IJT808Config Config { get; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="services"></param> | |||||
/// <param name="config"></param> | |||||
public DefaultBuilder(IServiceCollection services, IJT808Config config) | public DefaultBuilder(IServiceCollection services, IJT808Config config) | ||||
{ | { | ||||
Services = services; | Services = services; | ||||
@@ -2,9 +2,19 @@ | |||||
namespace JT808.Protocol.Internal | namespace JT808.Protocol.Internal | ||||
{ | { | ||||
/// <summary> | |||||
/// 默认全局配置 | |||||
/// </summary> | |||||
class DefaultGlobalConfig : GlobalConfigBase | class DefaultGlobalConfig : GlobalConfigBase | ||||
{ | { | ||||
/// <summary> | |||||
/// 配置Id | |||||
/// </summary> | |||||
public override string ConfigId { get; protected set; } | public override string ConfigId { get; protected set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="configId"></param> | |||||
public DefaultGlobalConfig(string configId= "Default") | public DefaultGlobalConfig(string configId= "Default") | ||||
{ | { | ||||
ConfigId = configId; | ConfigId = configId; | ||||
@@ -11,13 +11,22 @@ namespace JT808.Protocol.Interfaces | |||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_Factory:IJT808_CarDVR_Up_Factory | public class JT808_CarDVR_Up_Factory:IJT808_CarDVR_Up_Factory | ||||
{ | { | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
public IDictionary<byte, object> Map { get; } | public IDictionary<byte, object> Map { get; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
public JT808_CarDVR_Up_Factory() | public JT808_CarDVR_Up_Factory() | ||||
{ | { | ||||
Map = new Dictionary<byte, object>(); | Map = new Dictionary<byte, object>(); | ||||
Register(Assembly.GetExecutingAssembly()); | Register(Assembly.GetExecutingAssembly()); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="externalAssembly"></param> | |||||
public void Register(Assembly externalAssembly) | public void Register(Assembly externalAssembly) | ||||
{ | { | ||||
var types = externalAssembly.GetTypes().Where(w => w.BaseType == typeof(JT808CarDVRUpBodies)).ToList(); | var types = externalAssembly.GetTypes().Where(w => w.BaseType == typeof(JT808CarDVRUpBodies)).ToList(); | ||||
@@ -35,7 +44,11 @@ namespace JT808.Protocol.Interfaces | |||||
} | } | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <typeparam name="TJT808CarDVRUpBodies"></typeparam> | |||||
/// <returns></returns> | |||||
public IJT808_CarDVR_Up_Factory SetMap<TJT808CarDVRUpBodies>() where TJT808CarDVRUpBodies : JT808CarDVRUpBodies | public IJT808_CarDVR_Up_Factory SetMap<TJT808CarDVRUpBodies>() where TJT808CarDVRUpBodies : JT808CarDVRUpBodies | ||||
{ | { | ||||
Type type = typeof(TJT808CarDVRUpBodies); | Type type = typeof(TJT808CarDVRUpBodies); | ||||
@@ -2,6 +2,9 @@ | |||||
namespace JT808.Protocol | namespace JT808.Protocol | ||||
{ | { | ||||
/// <summary> | |||||
/// 内存池 | |||||
/// </summary> | |||||
internal static class JT808ArrayPool | internal static class JT808ArrayPool | ||||
{ | { | ||||
private readonly static ArrayPool<byte> ArrayPool; | private readonly static ArrayPool<byte> ArrayPool; | ||||
@@ -10,12 +13,20 @@ namespace JT808.Protocol | |||||
{ | { | ||||
ArrayPool = ArrayPool<byte>.Create(); | ArrayPool = ArrayPool<byte>.Create(); | ||||
} | } | ||||
/// <summary> | |||||
/// 申请 | |||||
/// </summary> | |||||
/// <param name="minimumLength"></param> | |||||
/// <returns></returns> | |||||
public static byte[] Rent(int minimumLength) | public static byte[] Rent(int minimumLength) | ||||
{ | { | ||||
return ArrayPool.Rent(minimumLength); | return ArrayPool.Rent(minimumLength); | ||||
} | } | ||||
/// <summary> | |||||
/// 回收 | |||||
/// </summary> | |||||
/// <param name="array"></param> | |||||
/// <param name="clearArray"></param> | |||||
public static void Return(byte[] array, bool clearArray = false) | public static void Return(byte[] array, bool clearArray = false) | ||||
{ | { | ||||
ArrayPool.Return(array, clearArray); | ArrayPool.Return(array, clearArray); | ||||
@@ -2,6 +2,9 @@ | |||||
namespace JT808.Protocol | namespace JT808.Protocol | ||||
{ | { | ||||
/// <summary> | |||||
/// JT808抽象数据体 | |||||
/// </summary> | |||||
public abstract class JT808Bodies: IJT808Description | public abstract class JT808Bodies: IJT808Description | ||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
@@ -10,9 +13,13 @@ namespace JT808.Protocol | |||||
/// 当数据体为空的时候,使用null作为空包感觉不适合,所以就算使用空包也需要new一下来表达意思。 | /// 当数据体为空的时候,使用null作为空包感觉不适合,所以就算使用空包也需要new一下来表达意思。 | ||||
/// </summary> | /// </summary> | ||||
public virtual bool SkipSerialization { get; set; } = false; | public virtual bool SkipSerialization { get; set; } = false; | ||||
/// <summary> | |||||
/// 消息Id | |||||
/// </summary> | |||||
public abstract ushort MsgId { get;} | public abstract ushort MsgId { get;} | ||||
/// <summary> | |||||
/// 消息描述 | |||||
/// </summary> | |||||
public abstract string Description { get; } | public abstract string Description { get; } | ||||
} | } | ||||
} | } |
@@ -1,4 +1,5 @@ | |||||
using JT808.Protocol.MessagePack; | |||||
using JT808.Protocol.Interfaces; | |||||
using JT808.Protocol.MessagePack; | |||||
using System; | using System; | ||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.Text; | using System.Text; | ||||
@@ -8,7 +9,7 @@ namespace JT808.Protocol | |||||
/// <summary> | /// <summary> | ||||
/// 记录仪上行数据体 | /// 记录仪上行数据体 | ||||
/// </summary> | /// </summary> | ||||
public abstract class JT808CarDVRDownBodies | |||||
public abstract class JT808CarDVRDownBodies : IJT808Description | |||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
/// 命令字 | /// 命令字 | ||||
@@ -20,7 +21,9 @@ namespace JT808.Protocol | |||||
/// 当数据体为空的时候,使用null作为空包感觉不适合,所以就算使用空包也需要new一下来表达意思。 | /// 当数据体为空的时候,使用null作为空包感觉不适合,所以就算使用空包也需要new一下来表达意思。 | ||||
/// </summary> | /// </summary> | ||||
public virtual bool SkipSerialization { get; set; } = false; | public virtual bool SkipSerialization { get; set; } = false; | ||||
/// <summary> | |||||
/// 消息描述 | |||||
/// </summary> | |||||
public abstract string Description { get; } | public abstract string Description { get; } | ||||
} | } | ||||
} | } |
@@ -11,8 +11,14 @@ using System.Text.Json; | |||||
namespace JT808.Protocol | namespace JT808.Protocol | ||||
{ | { | ||||
/// <summary> | |||||
/// 行车记录仪下行数据包 | |||||
/// </summary> | |||||
public class JT808CarDVRDownPackage : IJT808_CarDVR_Down_Package,IJT808MessagePackFormatter<JT808CarDVRDownPackage>, IJT808Analyze | public class JT808CarDVRDownPackage : IJT808_CarDVR_Down_Package,IJT808MessagePackFormatter<JT808CarDVRDownPackage>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 头标识 | |||||
/// </summary> | |||||
public const ushort BeginFlag = 0x557A; | public const ushort BeginFlag = 0x557A; | ||||
/// <summary> | /// <summary> | ||||
/// 起始字头 | /// 起始字头 | ||||
@@ -38,7 +44,12 @@ namespace JT808.Protocol | |||||
/// 校验字 | /// 校验字 | ||||
/// </summary> | /// </summary> | ||||
public byte CheckCode { get; set; } | public byte CheckCode { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRDownPackage value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRDownPackage value, IJT808Config config) | ||||
{ | { | ||||
var currentPosition = writer.GetCurrentPosition(); | var currentPosition = writer.GetCurrentPosition(); | ||||
@@ -57,7 +68,12 @@ namespace JT808.Protocol | |||||
writer.WriteUInt16Return((ushort)(writer.GetCurrentPosition() -2-1- datalengthPosition), datalengthPosition);//此处-2:减去数据长度字段2位,-1:减去保留字长度 | writer.WriteUInt16Return((ushort)(writer.GetCurrentPosition() -2-1- datalengthPosition), datalengthPosition);//此处-2:减去数据长度字段2位,-1:减去保留字长度 | ||||
writer.WriteCarDVRCheckCode(currentPosition); | writer.WriteCarDVRCheckCode(currentPosition); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808CarDVRDownPackage Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808CarDVRDownPackage Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808CarDVRDownPackage value = new JT808CarDVRDownPackage(); | JT808CarDVRDownPackage value = new JT808CarDVRDownPackage(); | ||||
@@ -84,7 +100,12 @@ namespace JT808.Protocol | |||||
value.CheckCode = reader.ReadByte(); | value.CheckCode = reader.ReadByte(); | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808CarDVRDownPackage value = new JT808CarDVRDownPackage(); | JT808CarDVRDownPackage value = new JT808CarDVRDownPackage(); | ||||
@@ -11,26 +11,54 @@ using System.Text.Json; | |||||
namespace JT808.Protocol | namespace JT808.Protocol | ||||
{ | { | ||||
/// <summary> | |||||
/// JT19056序列化器 | |||||
/// </summary> | |||||
public class JT808CarDVRSerializer | public class JT808CarDVRSerializer | ||||
{ | { | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
public readonly static JT808CarDVRUpPackage JT808CarDVRUpPackage = new JT808CarDVRUpPackage(); | public readonly static JT808CarDVRUpPackage JT808CarDVRUpPackage = new JT808CarDVRUpPackage(); | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
public readonly static JT808CarDVRDownPackage JT808CarDVRDownPackage = new JT808CarDVRDownPackage(); | public readonly static JT808CarDVRDownPackage JT808CarDVRDownPackage = new JT808CarDVRDownPackage(); | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="jT808Config"></param> | |||||
public JT808CarDVRSerializer(IJT808Config jT808Config) | public JT808CarDVRSerializer(IJT808Config jT808Config) | ||||
{ | { | ||||
this.jT808Config = jT808Config; | this.jT808Config = jT808Config; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
public JT808CarDVRSerializer():this(new DefaultGlobalConfig()) | public JT808CarDVRSerializer():this(new DefaultGlobalConfig()) | ||||
{ | { | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
public string SerializerId => jT808Config.ConfigId; | public string SerializerId => jT808Config.ConfigId; | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
private readonly IJT808Config jT808Config; | private readonly IJT808Config jT808Config; | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="package"></param> | |||||
/// <param name="version"></param> | |||||
/// <param name="minBufferSize"></param> | |||||
/// <returns></returns> | |||||
public byte[] Serialize(JT808CarDVRUpPackage package, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | public byte[] Serialize(JT808CarDVRUpPackage package, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | ||||
{ | { | ||||
byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | ||||
@@ -45,7 +73,13 @@ namespace JT808.Protocol | |||||
JT808ArrayPool.Return(buffer); | JT808ArrayPool.Return(buffer); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="package"></param> | |||||
/// <param name="version"></param> | |||||
/// <param name="minBufferSize"></param> | |||||
/// <returns></returns> | |||||
public ReadOnlySpan<byte> SerializeReadOnlySpan(JT808CarDVRUpPackage package, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | public ReadOnlySpan<byte> SerializeReadOnlySpan(JT808CarDVRUpPackage package, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | ||||
{ | { | ||||
byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | ||||
@@ -60,7 +94,13 @@ namespace JT808.Protocol | |||||
JT808ArrayPool.Return(buffer); | JT808ArrayPool.Return(buffer); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="package"></param> | |||||
/// <param name="version"></param> | |||||
/// <param name="minBufferSize"></param> | |||||
/// <returns></returns> | |||||
public byte[] Serialize(JT808CarDVRDownPackage package, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | public byte[] Serialize(JT808CarDVRDownPackage package, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | ||||
{ | { | ||||
byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | ||||
@@ -75,7 +115,13 @@ namespace JT808.Protocol | |||||
JT808ArrayPool.Return(buffer); | JT808ArrayPool.Return(buffer); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="package"></param> | |||||
/// <param name="version"></param> | |||||
/// <param name="minBufferSize"></param> | |||||
/// <returns></returns> | |||||
public ReadOnlySpan<byte> SerializeReadOnlySpan(JT808CarDVRDownPackage package, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | public ReadOnlySpan<byte> SerializeReadOnlySpan(JT808CarDVRDownPackage package, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | ||||
{ | { | ||||
byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | ||||
@@ -90,19 +136,36 @@ namespace JT808.Protocol | |||||
JT808ArrayPool.Return(buffer); | JT808ArrayPool.Return(buffer); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="bytes"></param> | |||||
/// <param name="version"></param> | |||||
/// <returns></returns> | |||||
public JT808CarDVRUpPackage UpDeserialize(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013) | public JT808CarDVRUpPackage UpDeserialize(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013) | ||||
{ | { | ||||
JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes, version); | JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes, version); | ||||
return JT808CarDVRUpPackage.Deserialize(ref jT808MessagePackReader, jT808Config); | return JT808CarDVRUpPackage.Deserialize(ref jT808MessagePackReader, jT808Config); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="bytes"></param> | |||||
/// <param name="version"></param> | |||||
/// <returns></returns> | |||||
public JT808CarDVRDownPackage DownDeserialize(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013) | public JT808CarDVRDownPackage DownDeserialize(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013) | ||||
{ | { | ||||
JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes, version); | JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes, version); | ||||
return JT808CarDVRDownPackage.Deserialize(ref jT808MessagePackReader, jT808Config); | return JT808CarDVRDownPackage.Deserialize(ref jT808MessagePackReader, jT808Config); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <typeparam name="T"></typeparam> | |||||
/// <param name="obj"></param> | |||||
/// <param name="version"></param> | |||||
/// <param name="minBufferSize"></param> | |||||
/// <returns></returns> | |||||
public byte [] Serialize<T>(T obj, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | public byte [] Serialize<T>(T obj, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | ||||
{ | { | ||||
byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | ||||
@@ -118,7 +181,14 @@ namespace JT808.Protocol | |||||
JT808ArrayPool.Return(buffer); | JT808ArrayPool.Return(buffer); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <typeparam name="T"></typeparam> | |||||
/// <param name="obj"></param> | |||||
/// <param name="version"></param> | |||||
/// <param name="minBufferSize"></param> | |||||
/// <returns></returns> | |||||
public ReadOnlySpan<byte> SerializeReadOnlySpan<T>(T obj, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | public ReadOnlySpan<byte> SerializeReadOnlySpan<T>(T obj, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | ||||
{ | { | ||||
byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | ||||
@@ -134,21 +204,39 @@ namespace JT808.Protocol | |||||
JT808ArrayPool.Return(buffer); | JT808ArrayPool.Return(buffer); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <typeparam name="T"></typeparam> | |||||
/// <param name="bytes"></param> | |||||
/// <param name="version"></param> | |||||
/// <returns></returns> | |||||
public T Deserialize<T>(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013) | public T Deserialize<T>(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013) | ||||
{ | { | ||||
JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes, version); | JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes, version); | ||||
var formatter = jT808Config.GetMessagePackFormatter<T>(); | var formatter = jT808Config.GetMessagePackFormatter<T>(); | ||||
return formatter.Deserialize(ref jT808MessagePackReader, jT808Config); | return formatter.Deserialize(ref jT808MessagePackReader, jT808Config); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="bytes"></param> | |||||
/// <param name="type"></param> | |||||
/// <param name="version"></param> | |||||
/// <returns></returns> | |||||
public dynamic Deserialize(ReadOnlySpan<byte> bytes, Type type, JT808Version version = JT808Version.JTT2013) | public dynamic Deserialize(ReadOnlySpan<byte> bytes, Type type, JT808Version version = JT808Version.JTT2013) | ||||
{ | { | ||||
var formatter = jT808Config.GetMessagePackFormatterByType(type); | var formatter = jT808Config.GetMessagePackFormatterByType(type); | ||||
JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes, version); | JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes, version); | ||||
return JT808MessagePackFormatterResolverExtensions.JT808DynamicDeserialize(formatter,ref jT808MessagePackReader, jT808Config); | return JT808MessagePackFormatterResolverExtensions.JT808DynamicDeserialize(formatter,ref jT808MessagePackReader, jT808Config); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="bytes"></param> | |||||
/// <param name="version"></param> | |||||
/// <param name="options"></param> | |||||
/// <returns></returns> | |||||
public string UpAnalyze(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013, JsonWriterOptions options = default) | public string UpAnalyze(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013, JsonWriterOptions options = default) | ||||
{ | { | ||||
JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes, version); | JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes, version); | ||||
@@ -163,7 +251,13 @@ namespace JT808.Protocol | |||||
return value; | return value; | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="bytes"></param> | |||||
/// <param name="version"></param> | |||||
/// <param name="options"></param> | |||||
/// <returns></returns> | |||||
public string DownAnalyze(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013, JsonWriterOptions options = default) | public string DownAnalyze(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013, JsonWriterOptions options = default) | ||||
{ | { | ||||
JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes, version); | JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes, version); | ||||
@@ -178,7 +272,14 @@ namespace JT808.Protocol | |||||
return value; | return value; | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <typeparam name="T"></typeparam> | |||||
/// <param name="bytes"></param> | |||||
/// <param name="version"></param> | |||||
/// <param name="options"></param> | |||||
/// <returns></returns> | |||||
public string Analyze<T>(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013, JsonWriterOptions options = default) | public string Analyze<T>(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013, JsonWriterOptions options = default) | ||||
{ | { | ||||
JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes, version); | JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes, version); | ||||
@@ -194,7 +295,13 @@ namespace JT808.Protocol | |||||
return value; | return value; | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="bytes"></param> | |||||
/// <param name="version"></param> | |||||
/// <param name="options"></param> | |||||
/// <returns></returns> | |||||
public byte[] UpAnalyzeJsonBuffer(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013, JsonWriterOptions options = default) | public byte[] UpAnalyzeJsonBuffer(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013, JsonWriterOptions options = default) | ||||
{ | { | ||||
JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes, version); | JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes, version); | ||||
@@ -208,7 +315,13 @@ namespace JT808.Protocol | |||||
return memoryStream.ToArray(); | return memoryStream.ToArray(); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="bytes"></param> | |||||
/// <param name="version"></param> | |||||
/// <param name="options"></param> | |||||
/// <returns></returns> | |||||
public byte[] DownAnalyzeJsonBuffer(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013, JsonWriterOptions options = default) | public byte[] DownAnalyzeJsonBuffer(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013, JsonWriterOptions options = default) | ||||
{ | { | ||||
JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes, version); | JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes, version); | ||||
@@ -222,7 +335,14 @@ namespace JT808.Protocol | |||||
return memoryStream.ToArray(); | return memoryStream.ToArray(); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <typeparam name="T"></typeparam> | |||||
/// <param name="bytes"></param> | |||||
/// <param name="version"></param> | |||||
/// <param name="options"></param> | |||||
/// <returns></returns> | |||||
public byte[] AnalyzeJsonBuffer<T>(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013, JsonWriterOptions options = default) | public byte[] AnalyzeJsonBuffer<T>(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013, JsonWriterOptions options = default) | ||||
{ | { | ||||
JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes, version); | JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes, version); | ||||
@@ -1,4 +1,5 @@ | |||||
using JT808.Protocol.MessagePack; | |||||
using JT808.Protocol.Interfaces; | |||||
using JT808.Protocol.MessagePack; | |||||
using System; | using System; | ||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.Text; | using System.Text; | ||||
@@ -8,7 +9,7 @@ namespace JT808.Protocol | |||||
/// <summary> | /// <summary> | ||||
/// 记录仪上行数据体 | /// 记录仪上行数据体 | ||||
/// </summary> | /// </summary> | ||||
public abstract class JT808CarDVRUpBodies | |||||
public abstract class JT808CarDVRUpBodies: IJT808Description | |||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
/// 命令字 | /// 命令字 | ||||
@@ -20,7 +21,9 @@ namespace JT808.Protocol | |||||
/// 当数据体为空的时候,使用null作为空包感觉不适合,所以就算使用空包也需要new一下来表达意思。 | /// 当数据体为空的时候,使用null作为空包感觉不适合,所以就算使用空包也需要new一下来表达意思。 | ||||
/// </summary> | /// </summary> | ||||
public virtual bool SkipSerialization { get; set; } = false; | public virtual bool SkipSerialization { get; set; } = false; | ||||
/// <summary> | |||||
/// 消息描述 | |||||
/// </summary> | |||||
public abstract string Description { get; } | public abstract string Description { get; } | ||||
} | } | ||||
} | } |
@@ -16,6 +16,9 @@ namespace JT808.Protocol | |||||
/// </summary> | /// </summary> | ||||
public class JT808CarDVRUpPackage : IJT808_CarDVR_Up_Package,IJT808MessagePackFormatter<JT808CarDVRUpPackage>, IJT808Analyze | public class JT808CarDVRUpPackage : IJT808_CarDVR_Up_Package,IJT808MessagePackFormatter<JT808CarDVRUpPackage>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 起始字头 | |||||
/// </summary> | |||||
public const ushort BeginFlag = 0x557A; | public const ushort BeginFlag = 0x557A; | ||||
/// <summary> | /// <summary> | ||||
/// 起始字头 | /// 起始字头 | ||||
@@ -41,7 +44,12 @@ namespace JT808.Protocol | |||||
/// 校验字 | /// 校验字 | ||||
/// </summary> | /// </summary> | ||||
public byte CheckCode { get; set; } | public byte CheckCode { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808CarDVRUpPackage value = new JT808CarDVRUpPackage(); | JT808CarDVRUpPackage value = new JT808CarDVRUpPackage(); | ||||
@@ -77,7 +85,12 @@ namespace JT808.Protocol | |||||
} | } | ||||
writer.WriteEndObject(); | writer.WriteEndObject(); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808CarDVRUpPackage Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808CarDVRUpPackage Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808CarDVRUpPackage value = new JT808CarDVRUpPackage(); | JT808CarDVRUpPackage value = new JT808CarDVRUpPackage(); | ||||
@@ -104,7 +117,12 @@ namespace JT808.Protocol | |||||
value.CheckCode = reader.ReadByte(); | value.CheckCode = reader.ReadByte(); | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpPackage value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpPackage value, IJT808Config config) | ||||
{ | { | ||||
var currentPosition = writer.GetCurrentPosition(); | var currentPosition = writer.GetCurrentPosition(); | ||||
@@ -4,6 +4,9 @@ using System.Text; | |||||
namespace JT808.Protocol | namespace JT808.Protocol | ||||
{ | { | ||||
/// <summary> | |||||
/// JT808常量 | |||||
/// </summary> | |||||
public static class JT808Constants | public static class JT808Constants | ||||
{ | { | ||||
static JT808Constants() | static JT808Constants() | ||||
@@ -15,22 +18,70 @@ namespace JT808.Protocol | |||||
/// 日期限制于2000年 | /// 日期限制于2000年 | ||||
/// </summary> | /// </summary> | ||||
public const int DateLimitYear = 2000; | public const int DateLimitYear = 2000; | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
public static readonly DateTime UTCBaseTime = new DateTime(1970, 1, 1); | public static readonly DateTime UTCBaseTime = new DateTime(1970, 1, 1); | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
public static Encoding Encoding { get;} | public static Encoding Encoding { get;} | ||||
/// <summary> | |||||
/// JT808_0x0200_0x01 | |||||
/// </summary> | |||||
public const byte JT808_0x0200_0x01 = 0x01; | public const byte JT808_0x0200_0x01 = 0x01; | ||||
/// <summary> | |||||
/// JT808_0x0200_0x02 | |||||
/// </summary> | |||||
public const byte JT808_0x0200_0x02 = 0x02; | public const byte JT808_0x0200_0x02 = 0x02; | ||||
/// <summary> | |||||
/// JT808_0x0200_0x03 | |||||
/// </summary> | |||||
public const byte JT808_0x0200_0x03 = 0x03; | public const byte JT808_0x0200_0x03 = 0x03; | ||||
/// <summary> | |||||
/// JT808_0x0200_0x04 | |||||
/// </summary> | |||||
public const byte JT808_0x0200_0x04 = 0x04; | public const byte JT808_0x0200_0x04 = 0x04; | ||||
/// <summary> | |||||
/// JT808_0x0200_0x05 | |||||
/// </summary> | |||||
public const byte JT808_0x0200_0x05 = 0x05; | public const byte JT808_0x0200_0x05 = 0x05; | ||||
/// <summary> | |||||
/// JT808_0x0200_0x06 | |||||
/// </summary> | |||||
public const byte JT808_0x0200_0x06 = 0x06; | public const byte JT808_0x0200_0x06 = 0x06; | ||||
/// <summary> | |||||
/// JT808_0x0200_0x11 | |||||
/// </summary> | |||||
public const byte JT808_0x0200_0x11 = 0x11; | public const byte JT808_0x0200_0x11 = 0x11; | ||||
/// <summary> | |||||
/// JT808_0x0200_0x12 | |||||
/// </summary> | |||||
public const byte JT808_0x0200_0x12 = 0x12; | public const byte JT808_0x0200_0x12 = 0x12; | ||||
/// <summary> | |||||
/// JT808_0x0200_0x13 | |||||
/// </summary> | |||||
public const byte JT808_0x0200_0x13 = 0x13; | public const byte JT808_0x0200_0x13 = 0x13; | ||||
/// <summary> | |||||
/// JT808_0x0200_0x25 | |||||
/// </summary> | |||||
public const byte JT808_0x0200_0x25 = 0x25; | public const byte JT808_0x0200_0x25 = 0x25; | ||||
/// <summary> | |||||
/// JT808_0x0200_0x2A | |||||
/// </summary> | |||||
public const byte JT808_0x0200_0x2A = 0x2A; | public const byte JT808_0x0200_0x2A = 0x2A; | ||||
/// <summary> | |||||
/// JT808_0x0200_0x2B | |||||
/// </summary> | |||||
public const byte JT808_0x0200_0x2B = 0x2B; | public const byte JT808_0x0200_0x2B = 0x2B; | ||||
/// <summary> | |||||
/// JT808_0x0200_0x30 | |||||
/// </summary> | |||||
public const byte JT808_0x0200_0x30 = 0x30; | public const byte JT808_0x0200_0x30 = 0x30; | ||||
/// <summary> | |||||
/// JT808_0x0200_0x31 | |||||
/// </summary> | |||||
public const byte JT808_0x0200_0x31 = 0x31; | public const byte JT808_0x0200_0x31 = 0x31; | ||||
/// <summary> | /// <summary> | ||||
/// 终端心跳发送间隔,单位为秒(s) | /// 终端心跳发送间隔,单位为秒(s) | ||||
@@ -49,7 +49,12 @@ namespace JT808.Protocol | |||||
/// 报序号 从1开始 | /// 报序号 从1开始 | ||||
/// </summary> | /// </summary> | ||||
public ushort PackageIndex { get; set; } | public ushort PackageIndex { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808Header Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808Header Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808Header jT808Header = new JT808Header(); | JT808Header jT808Header = new JT808Header(); | ||||
@@ -82,7 +87,12 @@ namespace JT808.Protocol | |||||
} | } | ||||
return jT808Header; | return jT808Header; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808Header value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808Header value, IJT808Config config) | ||||
{ | { | ||||
// 1.消息ID | // 1.消息ID | ||||
@@ -5,8 +5,18 @@ using System; | |||||
namespace JT808.Protocol | namespace JT808.Protocol | ||||
{ | { | ||||
/// <summary> | |||||
/// 头部消息体属性 | |||||
/// </summary> | |||||
public class JT808HeaderMessageBodyProperty | public class JT808HeaderMessageBodyProperty | ||||
{ | { | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="dataLength"></param> | |||||
/// <param name="isPackage"></param> | |||||
/// <param name="versionFlag"></param> | |||||
/// <param name="jT808EncryptMethod"></param> | |||||
public JT808HeaderMessageBodyProperty(int dataLength,bool isPackage, bool versionFlag= false, JT808EncryptMethod jT808EncryptMethod= JT808EncryptMethod.None) | public JT808HeaderMessageBodyProperty(int dataLength,bool isPackage, bool versionFlag= false, JT808EncryptMethod jT808EncryptMethod= JT808EncryptMethod.None) | ||||
{ | { | ||||
IsPackage = isPackage; | IsPackage = isPackage; | ||||
@@ -14,7 +24,12 @@ namespace JT808.Protocol | |||||
DataLength = dataLength; | DataLength = dataLength; | ||||
VersionFlag = versionFlag; | VersionFlag = versionFlag; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="isPackage"></param> | |||||
/// <param name="versionFlag"></param> | |||||
/// <param name="jT808EncryptMethod"></param> | |||||
public JT808HeaderMessageBodyProperty(bool isPackage, bool versionFlag, JT808EncryptMethod jT808EncryptMethod = JT808EncryptMethod.None) | public JT808HeaderMessageBodyProperty(bool isPackage, bool versionFlag, JT808EncryptMethod jT808EncryptMethod = JT808EncryptMethod.None) | ||||
{ | { | ||||
IsPackage = isPackage; | IsPackage = isPackage; | ||||
@@ -22,7 +37,11 @@ namespace JT808.Protocol | |||||
DataLength = 0; | DataLength = 0; | ||||
VersionFlag = versionFlag; | VersionFlag = versionFlag; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="versionFlag"></param> | |||||
/// <param name="jT808EncryptMethod"></param> | |||||
public JT808HeaderMessageBodyProperty(bool versionFlag, JT808EncryptMethod jT808EncryptMethod = JT808EncryptMethod.None) | public JT808HeaderMessageBodyProperty(bool versionFlag, JT808EncryptMethod jT808EncryptMethod = JT808EncryptMethod.None) | ||||
{ | { | ||||
IsPackage = false; | IsPackage = false; | ||||
@@ -30,7 +49,14 @@ namespace JT808.Protocol | |||||
DataLength = 0; | DataLength = 0; | ||||
VersionFlag = versionFlag; | VersionFlag = versionFlag; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
public JT808HeaderMessageBodyProperty(){} | public JT808HeaderMessageBodyProperty(){} | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="value"></param> | |||||
public JT808HeaderMessageBodyProperty(ushort value) | public JT808HeaderMessageBodyProperty(ushort value) | ||||
{ | { | ||||
VersionFlag = (value >> 14 & 0x01) == 1; | VersionFlag = (value >> 14 & 0x01) == 1; | ||||
@@ -70,6 +96,10 @@ namespace JT808.Protocol | |||||
/// 消息体长度 | /// 消息体长度 | ||||
/// </summary> | /// </summary> | ||||
public int DataLength { get; set; } = 0; | public int DataLength { get; set; } = 0; | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <returns></returns> | |||||
public ushort Wrap() | public ushort Wrap() | ||||
{ | { | ||||
// 1.是否分包 | // 1.是否分包 | ||||
@@ -64,7 +64,11 @@ namespace JT808.Protocol | |||||
/// 原数据 | /// 原数据 | ||||
/// </summary> | /// </summary> | ||||
public byte[] OriginalData { get; set; } | public byte[] OriginalData { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
public JT808HeaderPackage(ref JT808MessagePackReader reader, IJT808Config config) | public JT808HeaderPackage(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
// 1. 验证校验和 | // 1. 验证校验和 | ||||
@@ -78,7 +78,12 @@ namespace JT808.Protocol | |||||
} | } | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808Package Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808Package Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
// 1. 验证校验和 | // 1. 验证校验和 | ||||
@@ -164,7 +169,12 @@ namespace JT808.Protocol | |||||
// ---------------解包完成-------------- | // ---------------解包完成-------------- | ||||
return jT808Package; | return jT808Package; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808Package value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808Package value, IJT808Config config) | ||||
{ | { | ||||
// ---------------开始组包-------------- | // ---------------开始组包-------------- | ||||
@@ -243,7 +253,12 @@ namespace JT808.Protocol | |||||
writer.WriteEncode(); | writer.WriteEncode(); | ||||
// ---------------组包结束-------------- | // ---------------组包结束-------------- | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
// ---------------开始解析对象-------------- | // ---------------开始解析对象-------------- | ||||
@@ -40,7 +40,13 @@ namespace JT808.Protocol | |||||
public string SerializerId => jT808Config.ConfigId; | public string SerializerId => jT808Config.ConfigId; | ||||
private readonly IJT808Config jT808Config; | private readonly IJT808Config jT808Config; | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="package"></param> | |||||
/// <param name="version"></param> | |||||
/// <param name="minBufferSize"></param> | |||||
/// <returns></returns> | |||||
public byte[] Serialize(JT808Package package, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | public byte[] Serialize(JT808Package package, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | ||||
{ | { | ||||
byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | ||||
@@ -55,7 +61,13 @@ namespace JT808.Protocol | |||||
JT808ArrayPool.Return(buffer); | JT808ArrayPool.Return(buffer); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="package"></param> | |||||
/// <param name="version"></param> | |||||
/// <param name="minBufferSize"></param> | |||||
/// <returns></returns> | |||||
public ReadOnlySpan<byte> SerializeReadOnlySpan(JT808Package package, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | public ReadOnlySpan<byte> SerializeReadOnlySpan(JT808Package package, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | ||||
{ | { | ||||
byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | ||||
@@ -70,7 +82,13 @@ namespace JT808.Protocol | |||||
JT808ArrayPool.Return(buffer); | JT808ArrayPool.Return(buffer); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="bytes"></param> | |||||
/// <param name="version"></param> | |||||
/// <param name="minBufferSize"></param> | |||||
/// <returns></returns> | |||||
public JT808Package Deserialize(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | public JT808Package Deserialize(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | ||||
{ | { | ||||
byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | ||||
@@ -85,7 +103,14 @@ namespace JT808.Protocol | |||||
JT808ArrayPool.Return(buffer); | JT808ArrayPool.Return(buffer); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <typeparam name="T"></typeparam> | |||||
/// <param name="obj"></param> | |||||
/// <param name="version"></param> | |||||
/// <param name="minBufferSize"></param> | |||||
/// <returns></returns> | |||||
public byte [] Serialize<T>(T obj, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | public byte [] Serialize<T>(T obj, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | ||||
{ | { | ||||
byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | ||||
@@ -101,7 +126,14 @@ namespace JT808.Protocol | |||||
JT808ArrayPool.Return(buffer); | JT808ArrayPool.Return(buffer); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <typeparam name="T"></typeparam> | |||||
/// <param name="obj"></param> | |||||
/// <param name="version"></param> | |||||
/// <param name="minBufferSize"></param> | |||||
/// <returns></returns> | |||||
public ReadOnlySpan<byte> SerializeReadOnlySpan<T>(T obj, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | public ReadOnlySpan<byte> SerializeReadOnlySpan<T>(T obj, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | ||||
{ | { | ||||
byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | ||||
@@ -117,7 +149,14 @@ namespace JT808.Protocol | |||||
JT808ArrayPool.Return(buffer); | JT808ArrayPool.Return(buffer); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <typeparam name="T"></typeparam> | |||||
/// <param name="bytes"></param> | |||||
/// <param name="version"></param> | |||||
/// <param name="minBufferSize"></param> | |||||
/// <returns></returns> | |||||
public T Deserialize<T>(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | public T Deserialize<T>(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | ||||
{ | { | ||||
byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | ||||
@@ -134,7 +173,11 @@ namespace JT808.Protocol | |||||
JT808ArrayPool.Return(buffer); | JT808ArrayPool.Return(buffer); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="type"></param> | |||||
/// <returns></returns> | |||||
private static bool CheckPackageType(Type type) | private static bool CheckPackageType(Type type) | ||||
{ | { | ||||
return type == typeof(JT808Package) || type == typeof(JT808HeaderPackage); | return type == typeof(JT808Package) || type == typeof(JT808HeaderPackage); | ||||
@@ -145,6 +188,8 @@ namespace JT808.Protocol | |||||
/// 根据头部的消息Id进行分发处理,可以防止小部分性能损耗。 | /// 根据头部的消息Id进行分发处理,可以防止小部分性能损耗。 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="bytes"></param> | /// <param name="bytes"></param> | ||||
/// <param name="version"></param> | |||||
/// <param name="minBufferSize"></param> | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public JT808HeaderPackage HeaderDeserialize(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | public JT808HeaderPackage HeaderDeserialize(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | ||||
{ | { | ||||
@@ -160,6 +205,14 @@ namespace JT808.Protocol | |||||
JT808ArrayPool.Return(buffer); | JT808ArrayPool.Return(buffer); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="bytes"></param> | |||||
/// <param name="type"></param> | |||||
/// <param name="version"></param> | |||||
/// <param name="minBufferSize"></param> | |||||
/// <returns></returns> | |||||
public dynamic Deserialize(ReadOnlySpan<byte> bytes, Type type, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | public dynamic Deserialize(ReadOnlySpan<byte> bytes, Type type, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096) | ||||
{ | { | ||||
byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | ||||
@@ -176,7 +229,14 @@ namespace JT808.Protocol | |||||
JT808ArrayPool.Return(buffer); | JT808ArrayPool.Return(buffer); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="bytes"></param> | |||||
/// <param name="version"></param> | |||||
/// <param name="options"></param> | |||||
/// <param name="minBufferSize"></param> | |||||
/// <returns></returns> | |||||
public string Analyze(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013, JsonWriterOptions options = default, int minBufferSize = 8096) | public string Analyze(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013, JsonWriterOptions options = default, int minBufferSize = 8096) | ||||
{ | { | ||||
byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | ||||
@@ -198,7 +258,15 @@ namespace JT808.Protocol | |||||
JT808ArrayPool.Return(buffer); | JT808ArrayPool.Return(buffer); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <typeparam name="T"></typeparam> | |||||
/// <param name="bytes"></param> | |||||
/// <param name="version"></param> | |||||
/// <param name="options"></param> | |||||
/// <param name="minBufferSize"></param> | |||||
/// <returns></returns> | |||||
public string Analyze<T>(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013, JsonWriterOptions options = default, int minBufferSize = 8096) | public string Analyze<T>(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013, JsonWriterOptions options = default, int minBufferSize = 8096) | ||||
{ | { | ||||
byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | ||||
@@ -303,7 +371,14 @@ namespace JT808.Protocol | |||||
JT808ArrayPool.Return(buffer); | JT808ArrayPool.Return(buffer); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="bytes"></param> | |||||
/// <param name="version"></param> | |||||
/// <param name="options"></param> | |||||
/// <param name="minBufferSize"></param> | |||||
/// <returns></returns> | |||||
public byte[] AnalyzeJsonBuffer(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013, JsonWriterOptions options = default, int minBufferSize = 8096) | public byte[] AnalyzeJsonBuffer(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013, JsonWriterOptions options = default, int minBufferSize = 8096) | ||||
{ | { | ||||
byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | ||||
@@ -324,7 +399,15 @@ namespace JT808.Protocol | |||||
JT808ArrayPool.Return(buffer); | JT808ArrayPool.Return(buffer); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <typeparam name="T"></typeparam> | |||||
/// <param name="bytes"></param> | |||||
/// <param name="version"></param> | |||||
/// <param name="options"></param> | |||||
/// <param name="minBufferSize"></param> | |||||
/// <returns></returns> | |||||
public byte[] AnalyzeJsonBuffer<T>(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013, JsonWriterOptions options = default, int minBufferSize = 8096) | public byte[] AnalyzeJsonBuffer<T>(ReadOnlySpan<byte> bytes, JT808Version version = JT808Version.JTT2013, JsonWriterOptions options = default, int minBufferSize = 8096) | ||||
{ | { | ||||
byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | byte[] buffer = JT808ArrayPool.Rent(minBufferSize); | ||||
@@ -41,7 +41,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public enum BatchLocationType : byte | public enum BatchLocationType : byte | ||||
{ | { | ||||
/// <summary> | |||||
/// 正常位置批量汇报 | |||||
/// </summary> | |||||
正常位置批量汇报 = 0x00, | 正常位置批量汇报 = 0x00, | ||||
/// <summary> | |||||
/// 盲区补报 | |||||
/// </summary> | |||||
盲区补报 = 0x01 | 盲区补报 = 0x01 | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
@@ -20,7 +20,9 @@ namespace JT808.Protocol.MessageBody | |||||
/// 查询服务器时间应答 | /// 查询服务器时间应答 | ||||
/// </summary> | /// </summary> | ||||
public override string Description => "查询服务器时间应答"; | public override string Description => "查询服务器时间应答"; | ||||
/// <summary> | |||||
/// 服务器时间 | |||||
/// </summary> | |||||
public DateTime Time { get; set; } = DateTime.Now; | public DateTime Time { get; set; } = DateTime.Now; | ||||
/// <summary> | /// <summary> | ||||
/// | /// | ||||
@@ -10,8 +10,8 @@ namespace JT808.Protocol.MessageBody | |||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
/// 服务器 TCP 端口 | /// 服务器 TCP 端口 | ||||
/// 2019版本已作为保留 | |||||
/// </summary> | /// </summary> | ||||
[Obsolete("2019版本已作为保留")] | |||||
public class JT808_0x8103_0x0018 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0018>, IJT808_2019_Version, IJT808Analyze | public class JT808_0x8103_0x0018 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0018>, IJT808_2019_Version, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
@@ -12,9 +12,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8103_0x0101 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0101>, IJT808Analyze | public class JT808_0x8103_0x0101 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0101>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x0101 | |||||
/// </summary> | |||||
public override uint ParamId { get; set; } = 0x0101; | public override uint ParamId { get; set; } = 0x0101; | ||||
/// <summary> | /// <summary> | ||||
/// 数据 长度 | |||||
/// 数据长度 | |||||
/// 2 byte | |||||
/// </summary> | /// </summary> | ||||
public override byte ParamLength { get; set; } = 2; | public override byte ParamLength { get; set; } = 2; | ||||
/// <summary> | /// <summary> | ||||
@@ -48,7 +48,12 @@ namespace JT808.Protocol.MessageBody | |||||
/// bit28-bit0 表示 CAN 总线 ID。 | /// bit28-bit0 表示 CAN 总线 ID。 | ||||
/// </summary> | /// </summary> | ||||
public long BusId { get; set; } | public long BusId { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8103_0x0110 jT808_0x8103_0x0110 = new JT808_0x8103_0x0110(); | JT808_0x8103_0x0110 jT808_0x8103_0x0110 = new JT808_0x8103_0x0110(); | ||||
@@ -71,7 +76,12 @@ namespace JT808.Protocol.MessageBody | |||||
writer.WriteNumber($"[{ jT808_0x8103_0x0110.BusId.ReadNumber()}]CAN 总线 ID", jT808_0x8103_0x0110.BusId); | writer.WriteNumber($"[{ jT808_0x8103_0x0110.BusId.ReadNumber()}]CAN 总线 ID", jT808_0x8103_0x0110.BusId); | ||||
writer.WriteEndObject(); | writer.WriteEndObject(); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x8103_0x0110 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8103_0x0110 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8103_0x0110 jT808_0x8103_0x0110 = new JT808_0x8103_0x0110(); | JT808_0x8103_0x0110 jT808_0x8103_0x0110 = new JT808_0x8103_0x0110(); | ||||
@@ -85,7 +95,12 @@ namespace JT808.Protocol.MessageBody | |||||
jT808_0x8103_0x0110.BusId = temp & 0x01FFFFFF; | jT808_0x8103_0x0110.BusId = temp & 0x01FFFFFF; | ||||
return jT808_0x8103_0x0110; | return jT808_0x8103_0x0110; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0x0110 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0x0110 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteUInt32(value.ParamId); | writer.WriteUInt32(value.ParamId); | ||||
@@ -18,7 +18,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8600 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8600>, IJT808Analyze, IJT808_2019_Version | public class JT808_0x8600 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8600>, IJT808Analyze, IJT808_2019_Version | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x8600 | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x8600; | public override ushort MsgId { get; } = 0x8600; | ||||
/// <summary> | |||||
/// 设置圆形区域 | |||||
/// </summary> | |||||
public override string Description => "设置圆形区域"; | public override string Description => "设置圆形区域"; | ||||
/// <summary> | /// <summary> | ||||
/// 设置属性 | /// 设置属性 | ||||
@@ -33,7 +39,12 @@ namespace JT808.Protocol.MessageBody | |||||
/// 区域项 | /// 区域项 | ||||
/// </summary> | /// </summary> | ||||
public List<JT808CircleAreaProperty> AreaItems { get; set; } | public List<JT808CircleAreaProperty> AreaItems { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x8600 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8600 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8600 jT808_0X8600 = new JT808_0x8600(); | JT808_0x8600 jT808_0X8600 = new JT808_0x8600(); | ||||
@@ -74,7 +85,12 @@ namespace JT808.Protocol.MessageBody | |||||
} | } | ||||
return jT808_0X8600; | return jT808_0X8600; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8600 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8600 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteByte(value.SettingAreaProperty); | writer.WriteByte(value.SettingAreaProperty); | ||||
@@ -126,7 +142,12 @@ namespace JT808.Protocol.MessageBody | |||||
} | } | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8600 value = new JT808_0x8600(); | JT808_0x8600 value = new JT808_0x8600(); | ||||
@@ -13,7 +13,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8601 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8601>, IJT808Analyze | public class JT808_0x8601 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8601>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x8601 | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x8601; | public override ushort MsgId { get; } = 0x8601; | ||||
/// <summary> | |||||
/// 删除圆形区域 | |||||
/// </summary> | |||||
public override string Description => "删除圆形区域"; | public override string Description => "删除圆形区域"; | ||||
/// <summary> | /// <summary> | ||||
/// 区域数 | /// 区域数 | ||||
@@ -24,7 +30,12 @@ namespace JT808.Protocol.MessageBody | |||||
/// 区域ID集合 | /// 区域ID集合 | ||||
/// </summary> | /// </summary> | ||||
public List<uint> AreaIds { get; set; } | public List<uint> AreaIds { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x8601 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8601 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8601 jT808_0X8601 = new JT808_0x8601(); | JT808_0x8601 jT808_0X8601 = new JT808_0x8601(); | ||||
@@ -36,7 +47,12 @@ namespace JT808.Protocol.MessageBody | |||||
} | } | ||||
return jT808_0X8601; | return jT808_0X8601; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8601 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8601 value, IJT808Config config) | ||||
{ | { | ||||
if (value.AreaIds != null) | if (value.AreaIds != null) | ||||
@@ -48,7 +64,12 @@ namespace JT808.Protocol.MessageBody | |||||
} | } | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8601 value = new JT808_0x8601(); | JT808_0x8601 value = new JT808_0x8601(); | ||||
@@ -17,7 +17,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8602 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8602>, IJT808Analyze, IJT808_2019_Version | public class JT808_0x8602 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8602>, IJT808Analyze, IJT808_2019_Version | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x8602 | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x8602; | public override ushort MsgId { get; } = 0x8602; | ||||
/// <summary> | |||||
/// 设置矩形区域 | |||||
/// </summary> | |||||
public override string Description => "设置矩形区域"; | public override string Description => "设置矩形区域"; | ||||
/// <summary> | /// <summary> | ||||
/// 设置属性 | /// 设置属性 | ||||
@@ -32,7 +38,12 @@ namespace JT808.Protocol.MessageBody | |||||
/// 区域项 | /// 区域项 | ||||
/// </summary> | /// </summary> | ||||
public List<JT808RectangleAreaProperty> AreaItems { get; set; } | public List<JT808RectangleAreaProperty> AreaItems { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x8602 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8602 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8602 jT808_0X8602 = new JT808_0x8602(); | JT808_0x8602 jT808_0X8602 = new JT808_0x8602(); | ||||
@@ -74,7 +85,12 @@ namespace JT808.Protocol.MessageBody | |||||
} | } | ||||
return jT808_0X8602; | return jT808_0X8602; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8602 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8602 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteByte(value.SettingAreaProperty); | writer.WriteByte(value.SettingAreaProperty); | ||||
@@ -127,7 +143,12 @@ namespace JT808.Protocol.MessageBody | |||||
} | } | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8602 value = new JT808_0x8602(); | JT808_0x8602 value = new JT808_0x8602(); | ||||
@@ -13,7 +13,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8603 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8603>, IJT808Analyze | public class JT808_0x8603 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8603>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x8603; | public override ushort MsgId { get; } = 0x8603; | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
public override string Description => "删除矩形区域"; | public override string Description => "删除矩形区域"; | ||||
/// <summary> | /// <summary> | ||||
/// 区域数 | /// 区域数 | ||||
@@ -24,7 +30,12 @@ namespace JT808.Protocol.MessageBody | |||||
/// 区域ID集合 | /// 区域ID集合 | ||||
/// </summary> | /// </summary> | ||||
public List<uint> AreaIds { get; set; } | public List<uint> AreaIds { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x8603 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8603 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8603 jT808_0X8603 = new JT808_0x8603(); | JT808_0x8603 jT808_0X8603 = new JT808_0x8603(); | ||||
@@ -36,7 +47,12 @@ namespace JT808.Protocol.MessageBody | |||||
} | } | ||||
return jT808_0X8603; | return jT808_0X8603; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8603 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8603 value, IJT808Config config) | ||||
{ | { | ||||
if (value.AreaIds != null) | if (value.AreaIds != null) | ||||
@@ -48,7 +64,12 @@ namespace JT808.Protocol.MessageBody | |||||
} | } | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8603 value = new JT808_0x8603(); | JT808_0x8603 value = new JT808_0x8603(); | ||||
@@ -17,7 +17,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8604 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8604>, IJT808Analyze, IJT808_2019_Version | public class JT808_0x8604 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8604>, IJT808Analyze, IJT808_2019_Version | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x8604 | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x8604; | public override ushort MsgId { get; } = 0x8604; | ||||
/// <summary> | |||||
/// 设置多边形区域 | |||||
/// </summary> | |||||
public override string Description => "设置多边形区域"; | public override string Description => "设置多边形区域"; | ||||
/// <summary> | /// <summary> | ||||
/// 区域 ID | /// 区域 ID | ||||
@@ -71,7 +77,12 @@ namespace JT808.Protocol.MessageBody | |||||
/// 2019版本 | /// 2019版本 | ||||
/// </summary> | /// </summary> | ||||
public string AreaName { get; set; } | public string AreaName { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x8604 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8604 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8604 jT808_0X8604 = new JT808_0x8604(); | JT808_0x8604 jT808_0X8604 = new JT808_0x8604(); | ||||
@@ -110,7 +121,12 @@ namespace JT808.Protocol.MessageBody | |||||
} | } | ||||
return jT808_0X8604; | return jT808_0X8604; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8604 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8604 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteUInt32(value.AreaId); | writer.WriteUInt32(value.AreaId); | ||||
@@ -160,7 +176,12 @@ namespace JT808.Protocol.MessageBody | |||||
writer.WriteUInt16Return((ushort)(writer.GetCurrentPosition() - AreaNameLengthPosition - 2), AreaNameLengthPosition); | writer.WriteUInt16Return((ushort)(writer.GetCurrentPosition() - AreaNameLengthPosition - 2), AreaNameLengthPosition); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8604 value = new JT808_0x8604(); | JT808_0x8604 value = new JT808_0x8604(); | ||||
@@ -13,7 +13,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8605 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8605>, IJT808Analyze | public class JT808_0x8605 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8605>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x8605 | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x8605; | public override ushort MsgId { get; } = 0x8605; | ||||
/// <summary> | |||||
/// 删除多边形区域 | |||||
/// </summary> | |||||
public override string Description => "删除多边形区域"; | public override string Description => "删除多边形区域"; | ||||
/// <summary> | /// <summary> | ||||
/// 区域数 | /// 区域数 | ||||
@@ -24,6 +30,12 @@ namespace JT808.Protocol.MessageBody | |||||
/// 区域ID集合 | /// 区域ID集合 | ||||
/// </summary> | /// </summary> | ||||
public List<uint> AreaIds { get; set; } | public List<uint> AreaIds { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x8605 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8605 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8605 jT808_0X8605 = new JT808_0x8605(); | JT808_0x8605 jT808_0X8605 = new JT808_0x8605(); | ||||
@@ -35,7 +47,12 @@ namespace JT808.Protocol.MessageBody | |||||
} | } | ||||
return jT808_0X8605; | return jT808_0X8605; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8605 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8605 value, IJT808Config config) | ||||
{ | { | ||||
if (value.AreaIds != null) | if (value.AreaIds != null) | ||||
@@ -47,7 +64,12 @@ namespace JT808.Protocol.MessageBody | |||||
} | } | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8605 value = new JT808_0x8605(); | JT808_0x8605 value = new JT808_0x8605(); | ||||
@@ -17,7 +17,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8606 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8606>, IJT808Analyze, IJT808_2019_Version | public class JT808_0x8606 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8606>, IJT808Analyze, IJT808_2019_Version | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x8606 | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x8606; | public override ushort MsgId { get; } = 0x8606; | ||||
/// <summary> | |||||
/// 设置路线 | |||||
/// </summary> | |||||
public override string Description => "设置路线"; | public override string Description => "设置路线"; | ||||
/// <summary> | /// <summary> | ||||
/// 路线 ID | /// 路线 ID | ||||
@@ -54,7 +60,12 @@ namespace JT808.Protocol.MessageBody | |||||
/// 路线名称 | /// 路线名称 | ||||
/// </summary> | /// </summary> | ||||
public string RouteName { get; set; } | public string RouteName { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x8606 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8606 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8606 jT808_0X8606 = new JT808_0x8606(); | JT808_0x8606 jT808_0X8606 = new JT808_0x8606(); | ||||
@@ -102,7 +113,12 @@ namespace JT808.Protocol.MessageBody | |||||
} | } | ||||
return jT808_0X8606; | return jT808_0X8606; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8606 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8606 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteUInt32(value.RouteId); | writer.WriteUInt32(value.RouteId); | ||||
@@ -161,7 +177,12 @@ namespace JT808.Protocol.MessageBody | |||||
writer.WriteUInt16Return((ushort)(writer.GetCurrentPosition() - RouteNameLengthPosition - 2), RouteNameLengthPosition); | writer.WriteUInt16Return((ushort)(writer.GetCurrentPosition() - RouteNameLengthPosition - 2), RouteNameLengthPosition); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8606 value = new JT808_0x8606(); | JT808_0x8606 value = new JT808_0x8606(); | ||||
@@ -13,7 +13,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8607 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8607>, IJT808Analyze | public class JT808_0x8607 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8607>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x8607 | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x8607; | public override ushort MsgId { get; } = 0x8607; | ||||
/// <summary> | |||||
/// 删除路线 | |||||
/// </summary> | |||||
public override string Description => "删除路线"; | public override string Description => "删除路线"; | ||||
/// <summary> | /// <summary> | ||||
/// 区域数 | /// 区域数 | ||||
@@ -24,7 +30,12 @@ namespace JT808.Protocol.MessageBody | |||||
/// 区域ID集合 | /// 区域ID集合 | ||||
/// </summary> | /// </summary> | ||||
public List<uint> AreaIds { get; set; } | public List<uint> AreaIds { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x8607 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8607 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8607 jT808_0X8607 = new JT808_0x8607(); | JT808_0x8607 jT808_0X8607 = new JT808_0x8607(); | ||||
@@ -36,7 +47,12 @@ namespace JT808.Protocol.MessageBody | |||||
} | } | ||||
return jT808_0X8607; | return jT808_0X8607; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8607 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8607 value, IJT808Config config) | ||||
{ | { | ||||
if (value.AreaIds != null) | if (value.AreaIds != null) | ||||
@@ -48,7 +64,12 @@ namespace JT808.Protocol.MessageBody | |||||
} | } | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8607 value = new JT808_0x8607(); | JT808_0x8607 value = new JT808_0x8607(); | ||||
@@ -14,7 +14,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8608 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8608>, IJT808Analyze, IJT808_2019_Version | public class JT808_0x8608 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8608>, IJT808Analyze, IJT808_2019_Version | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x8608 | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x8608; | public override ushort MsgId { get; } = 0x8608; | ||||
/// <summary> | |||||
/// 查询区域或线路数据 | |||||
/// </summary> | |||||
public override string Description => "查询区域或线路数据"; | public override string Description => "查询区域或线路数据"; | ||||
/// <summary> | /// <summary> | ||||
/// 查询类型 | /// 查询类型 | ||||
@@ -30,7 +36,12 @@ namespace JT808.Protocol.MessageBody | |||||
/// 查询的区域或线路的ID | /// 查询的区域或线路的ID | ||||
/// </summary> | /// </summary> | ||||
public List<uint> Ids { get; set; } | public List<uint> Ids { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x8608 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8608 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8608 value = new JT808_0x8608(); | JT808_0x8608 value = new JT808_0x8608(); | ||||
@@ -46,7 +57,12 @@ namespace JT808.Protocol.MessageBody | |||||
} | } | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8608 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8608 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteByte(value.QueryType); | writer.WriteByte(value.QueryType); | ||||
@@ -63,7 +79,12 @@ namespace JT808.Protocol.MessageBody | |||||
writer.WriteUInt32(0); | writer.WriteUInt32(0); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8608 value = new JT808_0x8608(); | JT808_0x8608 value = new JT808_0x8608(); | ||||
@@ -10,18 +10,33 @@ using System.Text.Json; | |||||
namespace JT808.Protocol.MessageBody | namespace JT808.Protocol.MessageBody | ||||
{ | { | ||||
/// <summary> | |||||
/// 行驶记录数据采集命令 | |||||
/// </summary> | |||||
public class JT808_0x8700 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8700>, IJT808_2019_Version, IJT808Analyze | public class JT808_0x8700 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8700>, IJT808_2019_Version, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x8700 | |||||
/// </summary> | |||||
public override ushort MsgId => 0x8700; | public override ushort MsgId => 0x8700; | ||||
/// <summary> | |||||
/// 行驶记录数据采集命令 | |||||
/// </summary> | |||||
public override string Description => "行驶记录数据采集命令"; | public override string Description => "行驶记录数据采集命令"; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// 命令Id | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId { get; set; } | public byte CommandId { get; set; } | ||||
/// <summary> | |||||
/// 行车记录仪下行数据包 | |||||
/// </summary> | |||||
public JT808CarDVRDownPackage JT808CarDVRDownPackage { get; set; } | public JT808CarDVRDownPackage JT808CarDVRDownPackage { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8700 value = new JT808_0x8700(); | JT808_0x8700 value = new JT808_0x8700(); | ||||
@@ -33,7 +48,12 @@ namespace JT808.Protocol.MessageBody | |||||
writer.WriteEndObject(); | writer.WriteEndObject(); | ||||
writer.WriteEndObject(); | writer.WriteEndObject(); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x8700 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8700 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8700 value = new JT808_0x8700(); | JT808_0x8700 value = new JT808_0x8700(); | ||||
@@ -41,7 +61,12 @@ namespace JT808.Protocol.MessageBody | |||||
value.JT808CarDVRDownPackage = JT808CarDVRSerializer.JT808CarDVRDownPackage.Deserialize(ref reader, config); | value.JT808CarDVRDownPackage = JT808CarDVRSerializer.JT808CarDVRDownPackage.Deserialize(ref reader, config); | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8700 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8700 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteByte(value.CommandId); | writer.WriteByte(value.CommandId); | ||||
@@ -15,16 +15,28 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8701: JT808Bodies, IJT808MessagePackFormatter<JT808_0x8701>, IJT808_2019_Version, IJT808Analyze | public class JT808_0x8701: JT808Bodies, IJT808MessagePackFormatter<JT808_0x8701>, IJT808_2019_Version, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x8701 | |||||
/// </summary> | |||||
public override ushort MsgId => 0x8701; | public override ushort MsgId => 0x8701; | ||||
/// <summary> | |||||
/// 行驶记录参数下传命令 | |||||
/// </summary> | |||||
public override string Description => "行驶记录参数下传命令"; | public override string Description => "行驶记录参数下传命令"; | ||||
/// <summary> | /// <summary> | ||||
/// | |||||
/// 命令Id | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId { get; set; } | public byte CommandId { get; set; } | ||||
/// <summary> | |||||
/// 行驶记录参数下传命令包 | |||||
/// </summary> | |||||
public JT808CarDVRDownPackage JT808CarDVRDownPackage { get; set; } | public JT808CarDVRDownPackage JT808CarDVRDownPackage { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8701 value = new JT808_0x8701(); | JT808_0x8701 value = new JT808_0x8701(); | ||||
@@ -36,7 +48,12 @@ namespace JT808.Protocol.MessageBody | |||||
writer.WriteEndObject(); | writer.WriteEndObject(); | ||||
writer.WriteEndObject(); | writer.WriteEndObject(); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x8701 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8701 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8701 value = new JT808_0x8701(); | JT808_0x8701 value = new JT808_0x8701(); | ||||
@@ -44,7 +61,12 @@ namespace JT808.Protocol.MessageBody | |||||
value.JT808CarDVRDownPackage = JT808CarDVRSerializer.JT808CarDVRDownPackage.Deserialize(ref reader, config); | value.JT808CarDVRDownPackage = JT808CarDVRSerializer.JT808CarDVRDownPackage.Deserialize(ref reader, config); | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8701 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8701 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteByte(value.CommandId); | writer.WriteByte(value.CommandId); | ||||
@@ -5,7 +5,13 @@ | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8702 : JT808Bodies | public class JT808_0x8702 : JT808Bodies | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x8702 | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x8702; | public override ushort MsgId { get; } = 0x8702; | ||||
/// <summary> | |||||
/// 上报驾驶员身份信息请求 | |||||
/// </summary> | |||||
public override string Description => "上报驾驶员身份信息请求"; | public override string Description => "上报驾驶员身份信息请求"; | ||||
/// <summary> | /// <summary> | ||||
/// 跳过数据体序列化 | /// 跳过数据体序列化 | ||||
@@ -13,7 +13,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8800 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8800>, IJT808Analyze | public class JT808_0x8800 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8800>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x8800 | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x8800; | public override ushort MsgId { get; } = 0x8800; | ||||
/// <summary> | |||||
/// 多媒体数据上传应答 | |||||
/// </summary> | |||||
public override string Description => "多媒体数据上传应答"; | public override string Description => "多媒体数据上传应答"; | ||||
/// <summary> | /// <summary> | ||||
/// 多媒体ID | /// 多媒体ID | ||||
@@ -28,7 +34,12 @@ namespace JT808.Protocol.MessageBody | |||||
/// 重传包序号顺序排列,如“包 ID1 包 ID2......包 IDn”。 | /// 重传包序号顺序排列,如“包 ID1 包 ID2......包 IDn”。 | ||||
/// </summary> | /// </summary> | ||||
public byte[] RetransmitPackageIds { get; set; } | public byte[] RetransmitPackageIds { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x8800 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8800 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8800 jT808_0X8800 = new JT808_0x8800(); | JT808_0x8800 jT808_0X8800 = new JT808_0x8800(); | ||||
@@ -37,14 +48,24 @@ namespace JT808.Protocol.MessageBody | |||||
jT808_0X8800.RetransmitPackageIds = reader.ReadArray(jT808_0X8800.RetransmitPackageCount * 2).ToArray(); | jT808_0X8800.RetransmitPackageIds = reader.ReadArray(jT808_0X8800.RetransmitPackageCount * 2).ToArray(); | ||||
return jT808_0X8800; | return jT808_0X8800; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8800 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8800 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteUInt32(value.MultimediaId); | writer.WriteUInt32(value.MultimediaId); | ||||
writer.WriteByte((byte)(value.RetransmitPackageIds.Length / 2)); | writer.WriteByte((byte)(value.RetransmitPackageIds.Length / 2)); | ||||
writer.WriteArray(value.RetransmitPackageIds); | writer.WriteArray(value.RetransmitPackageIds); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8800 value = new JT808_0x8800(); | JT808_0x8800 value = new JT808_0x8800(); | ||||
@@ -13,7 +13,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8801 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8801>, IJT808Analyze, IJT808_2019_Version | public class JT808_0x8801 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8801>, IJT808Analyze, IJT808_2019_Version | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x8801 | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x8801; | public override ushort MsgId { get; } = 0x8801; | ||||
/// <summary> | |||||
/// 摄像头立即拍摄命令 | |||||
/// </summary> | |||||
public override string Description => "摄像头立即拍摄命令"; | public override string Description => "摄像头立即拍摄命令"; | ||||
/// <summary> | /// <summary> | ||||
/// 通道 ID | /// 通道 ID | ||||
@@ -64,7 +70,12 @@ namespace JT808.Protocol.MessageBody | |||||
/// 0-255 | /// 0-255 | ||||
/// </summary> | /// </summary> | ||||
public byte Chroma { get; set; } | public byte Chroma { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x8801 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8801 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8801 jT808_0X8801 = new JT808_0x8801(); | JT808_0x8801 jT808_0X8801 = new JT808_0x8801(); | ||||
@@ -80,7 +91,12 @@ namespace JT808.Protocol.MessageBody | |||||
jT808_0X8801.Chroma = reader.ReadByte(); | jT808_0X8801.Chroma = reader.ReadByte(); | ||||
return jT808_0X8801; | return jT808_0X8801; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8801 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8801 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteByte(value.ChannelId); | writer.WriteByte(value.ChannelId); | ||||
@@ -94,7 +110,12 @@ namespace JT808.Protocol.MessageBody | |||||
writer.WriteByte(value.Saturability); | writer.WriteByte(value.Saturability); | ||||
writer.WriteByte(value.Chroma); | writer.WriteByte(value.Chroma); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8801 value = new JT808_0x8801(); | JT808_0x8801 value = new JT808_0x8801(); | ||||
@@ -14,7 +14,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8802 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8802>, IJT808Analyze | public class JT808_0x8802 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8802>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x8802 | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x8802; | public override ushort MsgId { get; } = 0x8802; | ||||
/// <summary> | |||||
/// 存储多媒体数据检索 | |||||
/// </summary> | |||||
public override string Description => "存储多媒体数据检索"; | public override string Description => "存储多媒体数据检索"; | ||||
/// <summary> | /// <summary> | ||||
/// 多媒体类型 | /// 多媒体类型 | ||||
@@ -41,7 +47,12 @@ namespace JT808.Protocol.MessageBody | |||||
/// YY-MM-DD-hh-mm-ss | /// YY-MM-DD-hh-mm-ss | ||||
/// </summary> | /// </summary> | ||||
public DateTime EndTime { get; set; } | public DateTime EndTime { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x8802 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8802 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8802 jT808_0X8802 = new JT808_0x8802(); | JT808_0x8802 jT808_0X8802 = new JT808_0x8802(); | ||||
@@ -52,7 +63,12 @@ namespace JT808.Protocol.MessageBody | |||||
jT808_0X8802.EndTime = reader.ReadDateTime6(); | jT808_0X8802.EndTime = reader.ReadDateTime6(); | ||||
return jT808_0X8802; | return jT808_0X8802; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8802 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8802 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteByte(value.MultimediaType); | writer.WriteByte(value.MultimediaType); | ||||
@@ -61,7 +77,12 @@ namespace JT808.Protocol.MessageBody | |||||
writer.WriteDateTime6(value.StartTime); | writer.WriteDateTime6(value.StartTime); | ||||
writer.WriteDateTime6(value.EndTime); | writer.WriteDateTime6(value.EndTime); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8802 value = new JT808_0x8802(); | JT808_0x8802 value = new JT808_0x8802(); | ||||
@@ -14,7 +14,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8803 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8803>, IJT808Analyze | public class JT808_0x8803 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8803>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x8803 | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x8803; | public override ushort MsgId { get; } = 0x8803; | ||||
/// <summary> | |||||
/// 存储多媒体数据上传命令 | |||||
/// </summary> | |||||
public override string Description => "存储多媒体数据上传命令"; | public override string Description => "存储多媒体数据上传命令"; | ||||
/// <summary> | /// <summary> | ||||
/// 多媒体类型 | /// 多媒体类型 | ||||
@@ -47,7 +53,12 @@ namespace JT808.Protocol.MessageBody | |||||
/// <see cref="JT808.Protocol.Enums.JT808MultimediaDeleted"/> | /// <see cref="JT808.Protocol.Enums.JT808MultimediaDeleted"/> | ||||
/// </summary> | /// </summary> | ||||
public byte MultimediaDeleted { get; set; } | public byte MultimediaDeleted { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x8803 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8803 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8803 jT808_0X8803 = new JT808_0x8803(); | JT808_0x8803 jT808_0X8803 = new JT808_0x8803(); | ||||
@@ -59,7 +70,12 @@ namespace JT808.Protocol.MessageBody | |||||
jT808_0X8803.MultimediaDeleted = reader.ReadByte(); | jT808_0X8803.MultimediaDeleted = reader.ReadByte(); | ||||
return jT808_0X8803; | return jT808_0X8803; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8803 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8803 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteByte(value.MultimediaType); | writer.WriteByte(value.MultimediaType); | ||||
@@ -69,7 +85,12 @@ namespace JT808.Protocol.MessageBody | |||||
writer.WriteDateTime6(value.EndTime); | writer.WriteDateTime6(value.EndTime); | ||||
writer.WriteByte(value.MultimediaDeleted); | writer.WriteByte(value.MultimediaDeleted); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8803 value = new JT808_0x8803(); | JT808_0x8803 value = new JT808_0x8803(); | ||||
@@ -12,7 +12,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8804 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8804>, IJT808Analyze | public class JT808_0x8804 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8804>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x8804 | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x8804; | public override ushort MsgId { get; } = 0x8804; | ||||
/// <summary> | |||||
/// 录音开始命令 | |||||
/// </summary> | |||||
public override string Description => "录音开始命令"; | public override string Description => "录音开始命令"; | ||||
/// <summary> | /// <summary> | ||||
/// 录音命令 | /// 录音命令 | ||||
@@ -33,7 +39,12 @@ namespace JT808.Protocol.MessageBody | |||||
/// 0:8K;1:11K;2:23K;3:32K;其他保留 | /// 0:8K;1:11K;2:23K;3:32K;其他保留 | ||||
/// </summary> | /// </summary> | ||||
public byte AudioSampleRate { get; set; } | public byte AudioSampleRate { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x8804 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8804 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8804 jT808_0X8804 = new JT808_0x8804(); | JT808_0x8804 jT808_0X8804 = new JT808_0x8804(); | ||||
@@ -43,6 +54,12 @@ namespace JT808.Protocol.MessageBody | |||||
jT808_0X8804.AudioSampleRate = reader.ReadByte(); | jT808_0X8804.AudioSampleRate = reader.ReadByte(); | ||||
return jT808_0X8804; | return jT808_0X8804; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8804 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8804 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteByte((byte)value.RecordCmd); | writer.WriteByte((byte)value.RecordCmd); | ||||
@@ -50,7 +67,12 @@ namespace JT808.Protocol.MessageBody | |||||
writer.WriteByte((byte)value.RecordSave); | writer.WriteByte((byte)value.RecordSave); | ||||
writer.WriteByte(value.AudioSampleRate); | writer.WriteByte(value.AudioSampleRate); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8804 value = new JT808_0x8804(); | JT808_0x8804 value = new JT808_0x8804(); | ||||
@@ -12,7 +12,14 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8805 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8805>, IJT808Analyze, IJT808_2019_Version | public class JT808_0x8805 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8805>, IJT808Analyze, IJT808_2019_Version | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x8805 | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x8805; | public override ushort MsgId { get; } = 0x8805; | ||||
/// <summary> | |||||
/// 单条存储多媒体数据检索上传命令 | |||||
/// </summary> | |||||
public override string Description => "单条存储多媒体数据检索上传命令"; | public override string Description => "单条存储多媒体数据检索上传命令"; | ||||
/// <summary> | /// <summary> | ||||
/// 多媒体ID | /// 多媒体ID | ||||
@@ -23,7 +30,12 @@ namespace JT808.Protocol.MessageBody | |||||
/// <see cref="JT808.Protocol.Enums.JT808MultimediaDeleted"/> | /// <see cref="JT808.Protocol.Enums.JT808MultimediaDeleted"/> | ||||
/// </summary> | /// </summary> | ||||
public byte MultimediaDeleted { get; set; } | public byte MultimediaDeleted { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x8805 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8805 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8805 jT808_0X8805 = new JT808_0x8805(); | JT808_0x8805 jT808_0X8805 = new JT808_0x8805(); | ||||
@@ -31,13 +43,23 @@ namespace JT808.Protocol.MessageBody | |||||
jT808_0X8805.MultimediaDeleted = reader.ReadByte(); | jT808_0X8805.MultimediaDeleted = reader.ReadByte(); | ||||
return jT808_0X8805; | return jT808_0X8805; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8805 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8805 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteUInt32(value.MultimediaId); | writer.WriteUInt32(value.MultimediaId); | ||||
writer.WriteByte(value.MultimediaDeleted); | writer.WriteByte(value.MultimediaDeleted); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8805 value = new JT808_0x8805(); | JT808_0x8805 value = new JT808_0x8805(); | ||||
@@ -11,7 +11,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8900 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8900>, IJT808Analyze, IJT808_2019_Version | public class JT808_0x8900 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8900>, IJT808Analyze, IJT808_2019_Version | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x8900 | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x8900; | public override ushort MsgId { get; } = 0x8900; | ||||
/// <summary> | |||||
/// 数据下行透传 | |||||
/// </summary> | |||||
public override string Description => "数据下行透传"; | public override string Description => "数据下行透传"; | ||||
/// <summary> | /// <summary> | ||||
/// 透传消息类型 | /// 透传消息类型 | ||||
@@ -28,7 +34,12 @@ namespace JT808.Protocol.MessageBody | |||||
/// 透传消息内容 | /// 透传消息内容 | ||||
/// </summary> | /// </summary> | ||||
public JT808_0x8900_BodyBase JT808_0X8900_BodyBase { get; set; } | public JT808_0x8900_BodyBase JT808_0X8900_BodyBase { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x8900 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8900 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8900 value = new JT808_0x8900(); | JT808_0x8900 value = new JT808_0x8900(); | ||||
@@ -43,13 +54,23 @@ namespace JT808.Protocol.MessageBody | |||||
} | } | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8900 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8900 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteByte(value.PassthroughType); | writer.WriteByte(value.PassthroughType); | ||||
JT808MessagePackFormatterResolverExtensions.JT808DynamicSerialize(value.JT808_0X8900_BodyBase, ref writer, value.JT808_0X8900_BodyBase, config); | JT808MessagePackFormatterResolverExtensions.JT808DynamicSerialize(value.JT808_0X8900_BodyBase, ref writer, value.JT808_0X8900_BodyBase, config); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8900 value = new JT808_0x8900(); | JT808_0x8900 value = new JT808_0x8900(); | ||||
@@ -13,7 +13,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8A00 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8A00>, IJT808Analyze | public class JT808_0x8A00 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8A00>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x8A00 | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x8A00; | public override ushort MsgId { get; } = 0x8A00; | ||||
/// <summary> | |||||
/// 平台RSA公钥 | |||||
/// </summary> | |||||
public override string Description => "平台RSA公钥"; | public override string Description => "平台RSA公钥"; | ||||
/// <summary> | /// <summary> | ||||
/// e | /// e | ||||
@@ -25,7 +31,12 @@ namespace JT808.Protocol.MessageBody | |||||
/// RSA 公钥{e,n}中的 n | /// RSA 公钥{e,n}中的 n | ||||
/// </summary> | /// </summary> | ||||
public byte[] N { get; set; } | public byte[] N { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x8A00 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8A00 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8A00 jT808_0X8A00 = new JT808_0x8A00(); | JT808_0x8A00 jT808_0X8A00 = new JT808_0x8A00(); | ||||
@@ -33,7 +44,12 @@ namespace JT808.Protocol.MessageBody | |||||
jT808_0X8A00.N = reader.ReadArray(128).ToArray(); | jT808_0X8A00.N = reader.ReadArray(128).ToArray(); | ||||
return jT808_0X8A00; | return jT808_0X8A00; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8A00 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8A00 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteUInt32(value.E); | writer.WriteUInt32(value.E); | ||||
@@ -43,7 +59,12 @@ namespace JT808.Protocol.MessageBody | |||||
} | } | ||||
writer.WriteArray(value.N); | writer.WriteArray(value.N); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8A00 jT808_0X8A00 = new JT808_0x8A00(); | JT808_0x8A00 jT808_0X8A00 = new JT808_0x8A00(); | ||||