瀏覽代碼

Merge branch 'master' of https://github.com/SmallChi/JTActiveSafety

# Conflicts:
#	README.md
tags/v1.0.1
waterliu99 5 年之前
父節點
當前提交
56a73466fc
共有 28 個檔案被更改,包括 27 行新增999 行删除
  1. +1
    -1
      .travis.yml
  2. +8
    -1
      README.md
  3. 二進制
      doc/附件:道路运输车辆主动安全智能防控系统通讯协议规范.pdf
  4. +0
    -59
      src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_0x0200_0x64_Formatter.cs
  5. +0
    -57
      src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_0x0200_0x65_Formatter.cs
  6. +0
    -73
      src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_0x0200_0x66_Formatter.cs
  7. +0
    -49
      src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_0x0200_0x67_Formatter.cs
  8. +0
    -58
      src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_0x1210_Formatter.cs
  9. +0
    -32
      src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_0x1211_Formatter.cs
  10. +0
    -32
      src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_0x1212_Formatter.cs
  11. +0
    -117
      src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_0x8103_0xF364_Formatter.cs
  12. +0
    -95
      src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_0x8103_0xF365_Formatter.cs
  13. +0
    -49
      src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_0x8103_0xF366_Formatter.cs
  14. +0
    -30
      src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_0x8103_0xF367_Formatter.cs
  15. +0
    -38
      src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_0x9208_Formatter.cs
  16. +0
    -57
      src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_0x9212_Formatter.cs
  17. +0
    -37
      src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_AlarmIdentificationProperty_Formatter.cs
  18. +0
    -56
      src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_JTActiveSafety_0x0900_Formatter.cs
  19. +0
    -27
      src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_JTActiveSafety_0x0900_USB_0xF7_Formatter.cs
  20. +0
    -58
      src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_JTActiveSafety_0x0900_USB_0xF8_Formatter.cs
  21. +0
    -39
      src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_JTActiveSafety_0x8900_Formatter.cs
  22. +5
    -30
      src/JT808.Protocol.Extensions.JTActiveSafety/JT808.Protocol.Extensions.JTActiveSafety.csproj
  23. +2
    -0
      src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x1210.cs
  24. +1
    -0
      src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x1211.cs
  25. +1
    -0
      src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x1212.cs
  26. +1
    -0
      src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x9208.cs
  27. +1
    -0
      src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x9212.cs
  28. +7
    -4
      src/JTActiveSafety.Protocol.Test/JTActiveSafety.Protocol.Test.csproj

+ 1
- 1
.travis.yml 查看文件

@@ -1,6 +1,6 @@
language: csharp
solution: JTActiveSafety.sln
dotnet: 2.2.101
dotnet: 3.1.100
os: linux
mono: none
dist: trusty2


+ 8
- 1
README.md 查看文件

@@ -9,6 +9,13 @@ JTActiveSafety协议、道路运输车辆主动安全智能防控系统-主动

## 基于JT808扩展的JTActiveSafety消息协议

## NuGet安装

| Package Name | Version | Downloads |
| --------------------- | -------------------------------------------------- | --------------------------------------------------- |
| Install-Package JT808 | ![JT808](https://img.shields.io/nuget/v/JT808.svg) | ![JT808](https://img.shields.io/nuget/dt/JT808.svg) |
| Install-Package JT808.Protocol.Extensions.JTActiveSafety| ![JT808.Protocol.Extensions.JTActiveSafety](https://img.shields.io/nuget/v/JT808.Protocol.Extensions.JTActiveSafety.svg) | ![JT808](https://img.shields.io/nuget/dt/JT808.Protocol.Extensions.JTActiveSafety.svg) |

### JT808扩展协议消息对照表

| 序号 | 消息ID | 完成情况 | 测试情况 | 消息体名称 |
@@ -37,4 +44,4 @@ JTActiveSafety协议、道路运输车辆主动安全智能防控系统-主动
IServiceCollection serviceDescriptors1 = new ServiceCollection();
serviceDescriptors1.AddJT808Configure()
.AddJTActiveSafetyConfigure();
```
```

二進制
doc/附件:道路运输车辆主动安全智能防控系统通讯协议规范.pdf 查看文件


+ 0
- 59
src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_0x0200_0x64_Formatter.cs 查看文件

@@ -1,59 +0,0 @@
using JT808.Protocol.Extensions.JTActiveSafety.MessageBody;
using JT808.Protocol.Extensions.JTActiveSafety.Metadata;
using JT808.Protocol.Formatters;
using JT808.Protocol.MessagePack;
using System;
using System.Collections.Generic;
using System.Text;

namespace JT808.Protocol.Extensions.JTActiveSafety.Formatters
{
public class JT808_0x0200_0x64_Formatter : IJT808MessagePackFormatter<JT808_0x0200_0x64>
{
public JT808_0x0200_0x64 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x0200_0x64 jT808_0X0200_0X64 = new JT808_0x0200_0x64();
jT808_0X0200_0X64.AttachInfoId = reader.ReadByte();
jT808_0X0200_0X64.AttachInfoLength = reader.ReadByte();
jT808_0X0200_0X64.AlarmId = reader.ReadUInt32();
jT808_0X0200_0X64.FlagState = reader.ReadByte();
jT808_0X0200_0X64.AlarmOrEventType = reader.ReadByte();
jT808_0X0200_0X64.AlarmLevel = reader.ReadByte();
jT808_0X0200_0X64.VehicleSpeed = reader.ReadByte();
jT808_0X0200_0X64.CarOrPedestrianDistanceAhead = reader.ReadByte();
jT808_0X0200_0X64.DeviateType = reader.ReadByte();
jT808_0X0200_0X64.RoadSignIdentificationType = reader.ReadByte();
jT808_0X0200_0X64.RoadSignIdentificationData = reader.ReadByte();
jT808_0X0200_0X64.Speed = reader.ReadByte();
jT808_0X0200_0X64.Altitude = reader.ReadUInt16();
jT808_0X0200_0X64.Latitude = (int)reader.ReadUInt32();
jT808_0X0200_0X64.Longitude = (int)reader.ReadUInt32();
jT808_0X0200_0X64.AlarmTime = reader.ReadDateTime6();
jT808_0X0200_0X64.VehicleState = reader.ReadUInt16();
jT808_0X0200_0X64.AlarmIdentification = JT808_AlarmIdentificationProperty_Formatter.Instance.Deserialize(ref reader, config);
return jT808_0X0200_0X64;
}

public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x64 value, IJT808Config config)
{
writer.WriteByte(value.AttachInfoId);
writer.WriteByte(value.AttachInfoLength);
writer.WriteUInt32(value.AlarmId);
writer.WriteByte(value.FlagState);
writer.WriteByte(value.AlarmOrEventType);
writer.WriteByte(value.AlarmLevel);
writer.WriteByte(value.VehicleSpeed);
writer.WriteByte(value.CarOrPedestrianDistanceAhead);
writer.WriteByte(value.DeviateType);
writer.WriteByte(value.RoadSignIdentificationType);
writer.WriteByte(value.RoadSignIdentificationData);
writer.WriteByte(value.Speed);
writer.WriteUInt16(value.Altitude);
writer.WriteUInt32((uint)value.Latitude);
writer.WriteUInt32((uint)value.Longitude);
writer.WriteDateTime6(value.AlarmTime);
writer.WriteUInt16(value.VehicleState);
JT808_AlarmIdentificationProperty_Formatter.Instance.Serialize(ref writer, value.AlarmIdentification, config);
}
}
}

+ 0
- 57
src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_0x0200_0x65_Formatter.cs 查看文件

@@ -1,57 +0,0 @@
using JT808.Protocol.Extensions.JTActiveSafety.MessageBody;
using JT808.Protocol.Extensions.JTActiveSafety.Metadata;
using JT808.Protocol.Formatters;
using JT808.Protocol.MessagePack;
using System;
using System.Collections.Generic;
using System.Text;

namespace JT808.Protocol.Extensions.JTActiveSafety.Formatters
{
public class JT808_0x0200_0x65_Formatter : IJT808MessagePackFormatter<JT808_0x0200_0x65>
{
public JT808_0x0200_0x65 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x0200_0x65 jT808_0X0200_0X65 = new JT808_0x0200_0x65();
jT808_0X0200_0X65.AttachInfoId = reader.ReadByte();
jT808_0X0200_0X65.AttachInfoLength = reader.ReadByte();
jT808_0X0200_0X65.AlarmId = reader.ReadUInt32();
jT808_0X0200_0X65.FlagState = reader.ReadByte();
jT808_0X0200_0X65.AlarmOrEventType = reader.ReadByte();
jT808_0X0200_0X65.AlarmLevel = reader.ReadByte();
jT808_0X0200_0X65.Fatigue = reader.ReadByte();
jT808_0X0200_0X65.Retain = reader.ReadArray(4).ToArray();
jT808_0X0200_0X65.Speed = reader.ReadByte();
jT808_0X0200_0X65.Altitude = reader.ReadUInt16();
jT808_0X0200_0X65.Latitude = (int)reader.ReadUInt32();
jT808_0X0200_0X65.Longitude = (int)reader.ReadUInt32();
jT808_0X0200_0X65.AlarmTime = reader.ReadDateTime6();
jT808_0X0200_0X65.VehicleState = reader.ReadUInt16();
jT808_0X0200_0X65.AlarmIdentification = JT808_AlarmIdentificationProperty_Formatter.Instance.Deserialize(ref reader, config);
return jT808_0X0200_0X65;
}

public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x65 value, IJT808Config config)
{
writer.WriteByte(value.AttachInfoId);
writer.WriteByte(value.AttachInfoLength);
writer.WriteUInt32(value.AlarmId);
writer.WriteByte(value.FlagState);
writer.WriteByte(value.AlarmOrEventType);
writer.WriteByte(value.AlarmLevel);
writer.WriteByte(value.Fatigue);
if (value.Retain.Length != 4)
{
throw new ArgumentOutOfRangeException($"{nameof(JT808_0x0200_0x65.Retain)} length==4");
}
writer.WriteArray(value.Retain);
writer.WriteByte(value.Speed);
writer.WriteUInt16(value.Altitude);
writer.WriteUInt32((uint)value.Latitude);
writer.WriteUInt32((uint)value.Longitude);
writer.WriteDateTime6(value.AlarmTime);
writer.WriteUInt16(value.VehicleState);
JT808_AlarmIdentificationProperty_Formatter.Instance.Serialize(ref writer, value.AlarmIdentification, config);
}
}
}

+ 0
- 73
src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_0x0200_0x66_Formatter.cs 查看文件

@@ -1,73 +0,0 @@
using JT808.Protocol.Extensions.JTActiveSafety.MessageBody;
using JT808.Protocol.Extensions.JTActiveSafety.Metadata;
using JT808.Protocol.Formatters;
using JT808.Protocol.MessagePack;
using System;
using System.Collections.Generic;
using System.Text;

namespace JT808.Protocol.Extensions.JTActiveSafety.Formatters
{
public class JT808_0x0200_0x66_Formatter : IJT808MessagePackFormatter<JT808_0x0200_0x66>
{
public JT808_0x0200_0x66 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x0200_0x66 jT808_0X0200_0X66 = new JT808_0x0200_0x66();
jT808_0X0200_0X66.AttachInfoId = reader.ReadByte();
jT808_0X0200_0X66.AttachInfoLength = reader.ReadByte();
jT808_0X0200_0X66.AlarmId = reader.ReadUInt32();
jT808_0X0200_0X66.FlagState = reader.ReadByte();
jT808_0X0200_0X66.Speed = reader.ReadByte();
jT808_0X0200_0X66.Altitude = reader.ReadUInt16();
jT808_0X0200_0X66.Latitude = (int)reader.ReadUInt32();
jT808_0X0200_0X66.Longitude = (int)reader.ReadUInt32();
jT808_0X0200_0X66.AlarmTime = reader.ReadDateTime6();
jT808_0X0200_0X66.VehicleState = reader.ReadUInt16();
jT808_0X0200_0X66.AlarmIdentification = JT808_AlarmIdentificationProperty_Formatter.Instance.Deserialize(ref reader, config);
jT808_0X0200_0X66.AlarmOrEventCount = reader.ReadByte();
if (jT808_0X0200_0X66.AlarmOrEventCount > 0)
{
jT808_0X0200_0X66.AlarmOrEvents = new List<AlarmOrEventProperty>();
for(int i=0;i< jT808_0X0200_0X66.AlarmOrEventCount; i++)
{
AlarmOrEventProperty alarmOrEventProperty = new AlarmOrEventProperty();
alarmOrEventProperty.TirePressureAlarmPosition = reader.ReadByte();
alarmOrEventProperty.AlarmOrEventType = reader.ReadUInt16();
alarmOrEventProperty.TirePressure = reader.ReadUInt16();
alarmOrEventProperty.TireTemperature = reader.ReadUInt16();
alarmOrEventProperty.BatteryLevel = reader.ReadUInt16();
jT808_0X0200_0X66.AlarmOrEvents.Add(alarmOrEventProperty);
}
}
return jT808_0X0200_0X66;
}

public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x66 value, IJT808Config config)
{
writer.WriteByte(value.AttachInfoId);
writer.Skip(1, out int AttachInfoLengthPosition);
writer.WriteUInt32(value.AlarmId);
writer.WriteByte(value.FlagState);
writer.WriteByte(value.Speed);
writer.WriteUInt16(value.Altitude);
writer.WriteUInt32((uint)value.Latitude);
writer.WriteUInt32((uint)value.Longitude);
writer.WriteDateTime6(value.AlarmTime);
writer.WriteUInt16(value.VehicleState);
JT808_AlarmIdentificationProperty_Formatter.Instance.Serialize(ref writer, value.AlarmIdentification, config);
if (value.AlarmOrEvents.Count > 0)
{
writer.WriteByte((byte)value.AlarmOrEvents.Count);
foreach(var item in value.AlarmOrEvents)
{
writer.WriteByte(item.TirePressureAlarmPosition);
writer.WriteUInt16(item.AlarmOrEventType);
writer.WriteUInt16(item.TirePressure);
writer.WriteUInt16(item.TireTemperature);
writer.WriteUInt16(item.BatteryLevel);
}
}
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - AttachInfoLengthPosition - 1), AttachInfoLengthPosition);
}
}
}

+ 0
- 49
src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_0x0200_0x67_Formatter.cs 查看文件

@@ -1,49 +0,0 @@
using JT808.Protocol.Extensions.JTActiveSafety.MessageBody;
using JT808.Protocol.Extensions.JTActiveSafety.Metadata;
using JT808.Protocol.Formatters;
using JT808.Protocol.MessagePack;
using System;
using System.Collections.Generic;
using System.Text;

namespace JT808.Protocol.Extensions.JTActiveSafety.Formatters
{
public class JT808_0x0200_0x67_Formatter : IJT808MessagePackFormatter<JT808_0x0200_0x67>
{
public JT808_0x0200_0x67 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x0200_0x67 jT808_0X0200_0X67 = new JT808_0x0200_0x67();
jT808_0X0200_0X67.AttachInfoId = reader.ReadByte();
jT808_0X0200_0X67.AttachInfoLength = reader.ReadByte();
jT808_0X0200_0X67.AlarmId = reader.ReadUInt32();
jT808_0X0200_0X67.FlagState = reader.ReadByte();
jT808_0X0200_0X67.AlarmOrEventType = reader.ReadByte();
jT808_0X0200_0X67.AlarmLevel = reader.ReadByte();
jT808_0X0200_0X67.Speed = reader.ReadByte();
jT808_0X0200_0X67.Altitude = reader.ReadUInt16();
jT808_0X0200_0X67.Latitude = (int)reader.ReadUInt32();
jT808_0X0200_0X67.Longitude = (int)reader.ReadUInt32();
jT808_0X0200_0X67.AlarmTime = reader.ReadDateTime6();
jT808_0X0200_0X67.VehicleState = reader.ReadUInt16();
jT808_0X0200_0X67.AlarmIdentification = JT808_AlarmIdentificationProperty_Formatter.Instance.Deserialize(ref reader, config);
return jT808_0X0200_0X67;
}

public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x67 value, IJT808Config config)
{
writer.WriteByte(value.AttachInfoId);
writer.WriteByte(value.AttachInfoLength);
writer.WriteUInt32(value.AlarmId);
writer.WriteByte(value.FlagState);
writer.WriteByte(value.AlarmOrEventType);
writer.WriteByte(value.AlarmLevel);
writer.WriteByte(value.Speed);
writer.WriteUInt16(value.Altitude);
writer.WriteUInt32((uint)value.Latitude);
writer.WriteUInt32((uint)value.Longitude);
writer.WriteDateTime6(value.AlarmTime);
writer.WriteUInt16(value.VehicleState);
JT808_AlarmIdentificationProperty_Formatter.Instance.Serialize(ref writer, value.AlarmIdentification, config);
}
}
}

+ 0
- 58
src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_0x1210_Formatter.cs 查看文件

@@ -1,58 +0,0 @@
using JT808.Protocol.Extensions.JTActiveSafety.MessageBody;
using JT808.Protocol.Extensions.JTActiveSafety.Metadata;
using JT808.Protocol.Formatters;
using JT808.Protocol.MessagePack;
using System;
using System.Collections.Generic;
using System.Text;

namespace JT808.Protocol.Extensions.JTActiveSafety.Formatters
{
public class JT808_0x1210_Formatter : IJT808MessagePackFormatter<JT808_0x1210>
{
public JT808_0x1210 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x1210 jT808_0X1210 = new JT808_0x1210();
jT808_0X1210.TerminalID = reader.ReadString(7);
jT808_0X1210.AlarmIdentification = JT808_AlarmIdentificationProperty_Formatter.Instance.Deserialize(ref reader, config);
jT808_0X1210.AlarmId = reader.ReadString(32);
jT808_0X1210.InfoType = reader.ReadByte();
jT808_0X1210.AttachCount = reader.ReadByte();
if (jT808_0X1210.AttachCount > 0)
{
jT808_0X1210.AttachInfos = new List<AttachProperty>();
for(int i=0;i< jT808_0X1210.AttachCount; i++)
{
AttachProperty attachProperty = new AttachProperty();
attachProperty.FileNameLength= reader.ReadByte();
attachProperty.FileName= reader.ReadString(attachProperty.FileNameLength);
attachProperty.FileSize= reader.ReadUInt32();
jT808_0X1210.AttachInfos.Add(attachProperty);
}
}
return jT808_0X1210;
}

public void Serialize(ref JT808MessagePackWriter writer, JT808_0x1210 value, IJT808Config config)
{
writer.WriteString(value.TerminalID.PadRight(7,'0'));
JT808_AlarmIdentificationProperty_Formatter.Instance.Serialize(ref writer, value.AlarmIdentification, config);
writer.WriteString(value.AlarmId);
writer.WriteByte(value.InfoType);
if(value.AttachInfos!=null && value.AttachInfos.Count > 0)
{
foreach(var item in value.AttachInfos)
{
writer.Skip(1, out int FileNameLengthPosition);
writer.WriteString(item.FileName);
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - FileNameLengthPosition - 1), FileNameLengthPosition);
writer.WriteUInt32(item.FileSize);
}
}
else
{
writer.WriteByte(0);
}
}
}
}

+ 0
- 32
src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_0x1211_Formatter.cs 查看文件

@@ -1,32 +0,0 @@
using JT808.Protocol.Extensions.JTActiveSafety.MessageBody;
using JT808.Protocol.Extensions.JTActiveSafety.Metadata;
using JT808.Protocol.Formatters;
using JT808.Protocol.MessagePack;
using System;
using System.Collections.Generic;
using System.Text;

namespace JT808.Protocol.Extensions.JTActiveSafety.Formatters
{
public class JT808_0x1211_Formatter : IJT808MessagePackFormatter<JT808_0x1211>
{
public JT808_0x1211 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x1211 jT808_0X1211 = new JT808_0x1211();
jT808_0X1211.FileNameLength= reader.ReadByte();
jT808_0X1211.FileName= reader.ReadString(jT808_0X1211.FileNameLength);
jT808_0X1211.FileType = reader.ReadByte();
jT808_0X1211.FileSize= reader.ReadUInt32();
return jT808_0X1211;
}

public void Serialize(ref JT808MessagePackWriter writer, JT808_0x1211 value, IJT808Config config)
{
writer.Skip(1, out int FileNameLengthPosition);
writer.WriteString(value.FileName);
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - FileNameLengthPosition - 1), FileNameLengthPosition);
writer.WriteByte(value.FileType);
writer.WriteUInt32(value.FileSize);
}
}
}

+ 0
- 32
src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_0x1212_Formatter.cs 查看文件

@@ -1,32 +0,0 @@
using JT808.Protocol.Extensions.JTActiveSafety.MessageBody;
using JT808.Protocol.Extensions.JTActiveSafety.Metadata;
using JT808.Protocol.Formatters;
using JT808.Protocol.MessagePack;
using System;
using System.Collections.Generic;
using System.Text;

namespace JT808.Protocol.Extensions.JTActiveSafety.Formatters
{
public class JT808_0x1212_Formatter : IJT808MessagePackFormatter<JT808_0x1212>
{
public JT808_0x1212 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x1212 jT808_0X1212 = new JT808_0x1212();
jT808_0X1212.FileNameLength= reader.ReadByte();
jT808_0X1212.FileName= reader.ReadString(jT808_0X1212.FileNameLength);
jT808_0X1212.FileType = reader.ReadByte();
jT808_0X1212.FileSize= reader.ReadUInt32();
return jT808_0X1212;
}

public void Serialize(ref JT808MessagePackWriter writer, JT808_0x1212 value, IJT808Config config)
{
writer.Skip(1, out int FileNameLengthPosition);
writer.WriteString(value.FileName);
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - FileNameLengthPosition - 1), FileNameLengthPosition);
writer.WriteByte(value.FileType);
writer.WriteUInt32(value.FileSize);
}
}
}

+ 0
- 117
src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_0x8103_0xF364_Formatter.cs 查看文件

@@ -1,117 +0,0 @@
using JT808.Protocol.Extensions.JTActiveSafety.MessageBody;
using JT808.Protocol.Formatters;
using JT808.Protocol.MessagePack;
using System;
using System.Collections.Generic;
using System.Text;

namespace JT808.Protocol.Extensions.JTActiveSafety.Formatters
{
public class JT808_0x8103_0xF364_Formatter : IJT808MessagePackFormatter<JT808_0x8103_0xF364>
{
public JT808_0x8103_0xF364 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x8103_0xF364 jT808_0X8103_0XF364 = new JT808_0x8103_0xF364();
jT808_0X8103_0XF364.ParamId = reader.ReadUInt32();
jT808_0X8103_0XF364.ParamLength = reader.ReadByte();
jT808_0X8103_0XF364.AlarmJudgeSpeedThreshold= reader.ReadByte();
jT808_0X8103_0XF364.WarningVolume = reader.ReadByte();
jT808_0X8103_0XF364.ActivePhotographyStrategy = reader.ReadByte();
jT808_0X8103_0XF364.ActivelyTimePhotoInterval = reader.ReadUInt16();
jT808_0X8103_0XF364.ActiveDistancePhotographyDistanceInterval = reader.ReadUInt16();
jT808_0X8103_0XF364.SingleInitiativePhotos = reader.ReadByte();
jT808_0X8103_0XF364.SingleInitiativePhotosInterval = reader.ReadByte();
jT808_0X8103_0XF364.PhotoResolution = reader.ReadByte();
jT808_0X8103_0XF364.VideoRecordingResolution = reader.ReadByte();
jT808_0X8103_0XF364.AlarmEnable = reader.ReadUInt32();
jT808_0X8103_0XF364.EventEnable = reader.ReadUInt32();
jT808_0X8103_0XF364.Placeholder1 = reader.ReadByte();
jT808_0X8103_0XF364.DistanceThresholdObstacleAlarm = reader.ReadByte();
jT808_0X8103_0XF364.HierarchicalSpeedThresholdObstacleAlarm = reader.ReadByte();
jT808_0X8103_0XF364.VideoRecordingTimeBeforeAndAfterObstacleAlarm = reader.ReadByte();
jT808_0X8103_0XF364.BarrierAlarmPhotographs = reader.ReadByte();
jT808_0X8103_0XF364.ObstacleAlarmInterval = reader.ReadByte();
jT808_0X8103_0XF364.FrequentChannelChangeAlarmJudgmentTimePeriod = reader.ReadByte();
jT808_0X8103_0XF364.FrequentAlarmJudgmentNumberChannelChange = reader.ReadByte();
jT808_0X8103_0XF364.HierarchicalSpeedThresholdFrequentChannelChangeAlarm = reader.ReadByte();
jT808_0X8103_0XF364.VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm = reader.ReadByte();
jT808_0X8103_0XF364.FrequentChannelChangeAlarmPhotos = reader.ReadByte();
jT808_0X8103_0XF364.FrequentLaneChangeAlarmInterval = reader.ReadByte();
jT808_0X8103_0XF364.GradedSpeedThresholdLaneDeviationAlarm = reader.ReadByte();
jT808_0X8103_0XF364.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm = reader.ReadByte();
jT808_0X8103_0XF364.LaneDepartureAlarmPhoto = reader.ReadByte();
jT808_0X8103_0XF364.LaneDepartureAlarmPhotoInterval = reader.ReadByte();
jT808_0X8103_0XF364.ForwardCollisionWarningTimeThreshold = reader.ReadByte();
jT808_0X8103_0XF364.HierarchicalSpeedThresholdForwardCollisionWarning = reader.ReadByte();
jT808_0X8103_0XF364.VideoRecordingTimeBeforeAndAfterForwardCollisionAlarm = reader.ReadByte();
jT808_0X8103_0XF364.ForwardCollisionAlarmPhotographs = reader.ReadByte();
jT808_0X8103_0XF364.ForwardCollisionAlarmInterval = reader.ReadByte();
jT808_0X8103_0XF364.PedestrianCollisionAlarmTimeThreshold = reader.ReadByte();
jT808_0X8103_0XF364.PedestrianCollisionAlarmEnablingSpeedThreshold = reader.ReadByte();
jT808_0X8103_0XF364.VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm = reader.ReadByte();
jT808_0X8103_0XF364.PedestrianCollisionAlarmPhotos = reader.ReadByte();
jT808_0X8103_0XF364.PedestrianCollisionAlarmInterval = reader.ReadByte();
jT808_0X8103_0XF364.VehicleDistanceMonitoringAlarmDistanceThreshold = reader.ReadByte();
jT808_0X8103_0XF364.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold = reader.ReadByte();
jT808_0X8103_0XF364.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity = reader.ReadByte();
jT808_0X8103_0XF364.AlarmPhotoVehicleCloseDistance = reader.ReadByte();
jT808_0X8103_0XF364.AlarmPhotoVehicleCloseDistanceInterval = reader.ReadByte();
jT808_0X8103_0XF364.RoadSignRecognitionPhotographs = reader.ReadByte();
jT808_0X8103_0XF364.RoadSignRecognitionPhotographsInterval = reader.ReadByte();
jT808_0X8103_0XF364.Placeholder2 = reader.ReadArray(4).ToArray();
return jT808_0X8103_0XF364;
}

public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0xF364 value, IJT808Config config)
{
writer.WriteUInt32(value.ParamId);
writer.Skip(1,out int ParamLengthPosition);
writer.WriteByte(value.AlarmJudgeSpeedThreshold);
writer.WriteByte(value.WarningVolume);
writer.WriteByte(value.ActivePhotographyStrategy);
writer.WriteUInt16(value.ActivelyTimePhotoInterval);
writer.WriteUInt16(value.ActiveDistancePhotographyDistanceInterval);
writer.WriteByte(value.SingleInitiativePhotos);
writer.WriteByte(value.SingleInitiativePhotosInterval);
writer.WriteByte(value.PhotoResolution);
writer.WriteByte(value.VideoRecordingResolution);
writer.WriteUInt32(value.AlarmEnable);
writer.WriteUInt32(value.EventEnable);
writer.WriteByte(value.Placeholder1);
writer.WriteByte(value.DistanceThresholdObstacleAlarm);
writer.WriteByte(value.HierarchicalSpeedThresholdObstacleAlarm);
writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterObstacleAlarm);
writer.WriteByte(value.BarrierAlarmPhotographs);
writer.WriteByte(value.ObstacleAlarmInterval);
writer.WriteByte(value.FrequentChannelChangeAlarmJudgmentTimePeriod);
writer.WriteByte(value.FrequentAlarmJudgmentNumberChannelChange);
writer.WriteByte(value.HierarchicalSpeedThresholdFrequentChannelChangeAlarm);
writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm);
writer.WriteByte(value.FrequentChannelChangeAlarmPhotos);
writer.WriteByte(value.FrequentLaneChangeAlarmInterval);
writer.WriteByte(value.GradedSpeedThresholdLaneDeviationAlarm);
writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm);
writer.WriteByte(value.LaneDepartureAlarmPhoto);
writer.WriteByte(value.LaneDepartureAlarmPhotoInterval);
writer.WriteByte(value.ForwardCollisionWarningTimeThreshold);
writer.WriteByte(value.HierarchicalSpeedThresholdForwardCollisionWarning);
writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterForwardCollisionAlarm);
writer.WriteByte(value.ForwardCollisionAlarmPhotographs);
writer.WriteByte(value.ForwardCollisionAlarmInterval);
writer.WriteByte(value.PedestrianCollisionAlarmTimeThreshold);
writer.WriteByte(value.PedestrianCollisionAlarmEnablingSpeedThreshold);
writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm);
writer.WriteByte(value.PedestrianCollisionAlarmPhotos);
writer.WriteByte(value.PedestrianCollisionAlarmInterval);
writer.WriteByte(value.VehicleDistanceMonitoringAlarmDistanceThreshold);
writer.WriteByte(value.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold);
writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity);
writer.WriteByte(value.AlarmPhotoVehicleCloseDistance);
writer.WriteByte(value.AlarmPhotoVehicleCloseDistanceInterval);
writer.WriteByte(value.RoadSignRecognitionPhotographs);
writer.WriteByte(value.RoadSignRecognitionPhotographsInterval);
writer.WriteArray(value.Placeholder2);
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - ParamLengthPosition - 1), ParamLengthPosition);
}
}
}

+ 0
- 95
src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_0x8103_0xF365_Formatter.cs 查看文件

@@ -1,95 +0,0 @@
using JT808.Protocol.Extensions.JTActiveSafety.MessageBody;
using JT808.Protocol.Formatters;
using JT808.Protocol.MessagePack;
using System;
using System.Collections.Generic;
using System.Text;

namespace JT808.Protocol.Extensions.JTActiveSafety.Formatters
{
public class JT808_0x8103_0xF365_Formatter : IJT808MessagePackFormatter<JT808_0x8103_0xF365>
{
public JT808_0x8103_0xF365 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x8103_0xF365 jT808_0X8103_0XF365 = new JT808_0x8103_0xF365();
jT808_0X8103_0XF365.ParamId = reader.ReadUInt32();
jT808_0X8103_0XF365.ParamLength = reader.ReadByte();
jT808_0X8103_0XF365.AlarmJudgeSpeedThreshold = reader.ReadByte();
jT808_0X8103_0XF365.WarningVolume = reader.ReadByte();
jT808_0X8103_0XF365.ActivePhotographyStrategy = reader.ReadByte();
jT808_0X8103_0XF365.ActivelyTimePhotoInterval = reader.ReadUInt16();
jT808_0X8103_0XF365.ActiveDistancePhotographyDistanceInterval = reader.ReadUInt16();
jT808_0X8103_0XF365.SingleInitiativePhotos = reader.ReadByte();
jT808_0X8103_0XF365.SingleInitiativePhotosInterval = reader.ReadByte();
jT808_0X8103_0XF365.PhotoResolution = reader.ReadByte();
jT808_0X8103_0XF365.VideoRecordingResolution = reader.ReadByte();
jT808_0X8103_0XF365.AlarmEnable = reader.ReadUInt32();
jT808_0X8103_0XF365.EventEnable = reader.ReadUInt32();
jT808_0X8103_0XF365.TimeIntervalSmokingAlarmJudgment = reader.ReadUInt16();
jT808_0X8103_0XF365.CallAlarmDetermineTimeInterval = reader.ReadUInt16();
jT808_0X8103_0XF365.Reserve = reader.ReadArray(3).ToArray();
jT808_0X8103_0XF365.GradedSpeedThresholdFatigueDrivingAlarm = reader.ReadByte();
jT808_0X8103_0XF365.VideoRecordingTimeBeforeAndAfterFatigueDrivingAlarm = reader.ReadByte();
jT808_0X8103_0XF365.FatigueDrivingAlarmPhotograph = reader.ReadByte();
jT808_0X8103_0XF365.FatigueDrivingAlarmPhotographInterval = reader.ReadByte();
jT808_0X8103_0XF365.ClassifiedSpeedThresholdCallAlarm = reader.ReadByte();
jT808_0X8103_0XF365.VideoRecordingTimeBeforeAndAfterCallAlarm = reader.ReadByte();
jT808_0X8103_0XF365.CallAlarmTakePicturesDriverFacialFeatures = reader.ReadByte();
jT808_0X8103_0XF365.CallAlarmTakePicturesDriverFacialFeaturesInterval = reader.ReadByte();
jT808_0X8103_0XF365.ClassifiedSpeedThresholdSmokingAlarm = reader.ReadByte();
jT808_0X8103_0XF365.VideoRecordingTimeBeforeAndAfterSmokingAlarm = reader.ReadByte();
jT808_0X8103_0XF365.SmokingAlarmPhotographsDriverFaceCharacteristics = reader.ReadByte();
jT808_0X8103_0XF365.SmokingAlarmPhotographsDriverFaceCharacteristicsInterval = reader.ReadByte();
jT808_0X8103_0XF365.ClassifiedSpeedThresholdDistractedDrivingAlarm = reader.ReadByte();
jT808_0X8103_0XF365.DistractedDrivingAlarmPhotography = reader.ReadByte();
jT808_0X8103_0XF365.DistractedDrivingAlarmPhotographyInterval = reader.ReadByte();
jT808_0X8103_0XF365.VideoRecordingTimeAbnormalDrivingBehavior = reader.ReadByte();
jT808_0X8103_0XF365.PhotographsAbnormalDrivingBehavior = reader.ReadByte();
jT808_0X8103_0XF365.PictureIntervalAbnormalDrivingBehavior = reader.ReadByte();
jT808_0X8103_0XF365.DriverIdentificationTrigger = reader.ReadByte();
jT808_0X8103_0XF365.Retain = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray();
return jT808_0X8103_0XF365;
}

public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0xF365 value, IJT808Config config)
{
writer.WriteUInt32(value.ParamId);
writer.Skip(1, out int ParamLengthPosition);
writer.WriteByte(value.AlarmJudgeSpeedThreshold);
writer.WriteByte(value.WarningVolume);
writer.WriteByte(value.ActivePhotographyStrategy);
writer.WriteUInt16(value.ActivelyTimePhotoInterval);
writer.WriteUInt16(value.ActiveDistancePhotographyDistanceInterval);
writer.WriteByte(value.SingleInitiativePhotos);
writer.WriteByte(value.SingleInitiativePhotosInterval);
writer.WriteByte(value.PhotoResolution);
writer.WriteByte(value.VideoRecordingResolution);
writer.WriteUInt32(value.AlarmEnable);
writer.WriteUInt32(value.EventEnable);
writer.WriteUInt16(value.TimeIntervalSmokingAlarmJudgment);
writer.WriteUInt16(value.CallAlarmDetermineTimeInterval);
writer.WriteArray(value.Reserve);
writer.WriteByte(value.GradedSpeedThresholdFatigueDrivingAlarm);
writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterFatigueDrivingAlarm);
writer.WriteByte(value.FatigueDrivingAlarmPhotograph);
writer.WriteByte(value.FatigueDrivingAlarmPhotographInterval);
writer.WriteByte(value.ClassifiedSpeedThresholdCallAlarm);
writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterCallAlarm);
writer.WriteByte(value.CallAlarmTakePicturesDriverFacialFeatures);
writer.WriteByte(value.CallAlarmTakePicturesDriverFacialFeaturesInterval);
writer.WriteByte(value.ClassifiedSpeedThresholdSmokingAlarm);
writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterSmokingAlarm);
writer.WriteByte(value.SmokingAlarmPhotographsDriverFaceCharacteristics);
writer.WriteByte(value.SmokingAlarmPhotographsDriverFaceCharacteristicsInterval);
writer.WriteByte(value.ClassifiedSpeedThresholdDistractedDrivingAlarm);
writer.WriteByte(value.DistractedDrivingAlarmPhotography);
writer.WriteByte(value.DistractedDrivingAlarmPhotographyInterval);
writer.WriteByte(value.VideoRecordingTimeAbnormalDrivingBehavior);
writer.WriteByte(value.PhotographsAbnormalDrivingBehavior);
writer.WriteByte(value.PictureIntervalAbnormalDrivingBehavior);
writer.WriteByte(value.DriverIdentificationTrigger);
writer.WriteArray(value.Retain);
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - ParamLengthPosition - 1), ParamLengthPosition);
}
}
}

+ 0
- 49
src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_0x8103_0xF366_Formatter.cs 查看文件

@@ -1,49 +0,0 @@
using JT808.Protocol.Extensions.JTActiveSafety.MessageBody;
using JT808.Protocol.Formatters;
using JT808.Protocol.MessagePack;
using System;
using System.Collections.Generic;
using System.Text;

namespace JT808.Protocol.Extensions.JTActiveSafety.Formatters
{
public class JT808_0x8103_0xF366_Formatter : IJT808MessagePackFormatter<JT808_0x8103_0xF366>
{
public JT808_0x8103_0xF366 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x8103_0xF366 jT808_0X8103_0XF366 = new JT808_0x8103_0xF366();
jT808_0X8103_0XF366.ParamId = reader.ReadUInt32();
jT808_0X8103_0XF366.ParamLength = reader.ReadByte();
jT808_0X8103_0XF366.TyreSpecificationType= reader.ReadString(12);
jT808_0X8103_0XF366.TyrePressureUnit = reader.ReadUInt16();
jT808_0X8103_0XF366.NormalFetalPressure = reader.ReadUInt16();
jT808_0X8103_0XF366.ThresholdUnbalancedTirePressure = reader.ReadUInt16();
jT808_0X8103_0XF366.SlowLeakageThreshold = reader.ReadUInt16();
jT808_0X8103_0XF366.LowVoltageThreshold = reader.ReadUInt16();
jT808_0X8103_0XF366.HighVoltageThreshold = reader.ReadUInt16();
jT808_0X8103_0XF366.HighTemperatureThreshold = reader.ReadUInt16();
jT808_0X8103_0XF366.VoltageThreshold = reader.ReadUInt16();
jT808_0X8103_0XF366.TimedReportingInterval = reader.ReadUInt16();
jT808_0X8103_0XF366.Retain = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray();
return jT808_0X8103_0XF366;
}

public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0xF366 value, IJT808Config config)
{
writer.WriteUInt32(value.ParamId);
writer.Skip(1, out int ParamLengthPosition);
writer.WriteString(value.TyreSpecificationType);
writer.WriteUInt16(value.TyrePressureUnit);
writer.WriteUInt16(value.NormalFetalPressure);
writer.WriteUInt16(value.ThresholdUnbalancedTirePressure);
writer.WriteUInt16(value.SlowLeakageThreshold);
writer.WriteUInt16(value.LowVoltageThreshold);
writer.WriteUInt16(value.HighVoltageThreshold);
writer.WriteUInt16(value.HighTemperatureThreshold);
writer.WriteUInt16(value.VoltageThreshold);
writer.WriteUInt16(value.TimedReportingInterval);
writer.WriteArray(value.Retain);
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - ParamLengthPosition - 1), ParamLengthPosition);
}
}
}

+ 0
- 30
src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_0x8103_0xF367_Formatter.cs 查看文件

@@ -1,30 +0,0 @@
using JT808.Protocol.Extensions.JTActiveSafety.MessageBody;
using JT808.Protocol.Formatters;
using JT808.Protocol.MessagePack;
using System;
using System.Collections.Generic;
using System.Text;

namespace JT808.Protocol.Extensions.JTActiveSafety.Formatters
{
public class JT808_0x8103_0xF367_Formatter : IJT808MessagePackFormatter<JT808_0x8103_0xF367>
{
public JT808_0x8103_0xF367 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x8103_0xF367 jT808_0X8103_0XF367 = new JT808_0x8103_0xF367();
jT808_0X8103_0XF367.ParamId = reader.ReadUInt32();
jT808_0X8103_0XF367.ParamLength = reader.ReadByte();
jT808_0X8103_0XF367.RearApproachAlarmTimeThreshold = reader.ReadByte();
jT808_0X8103_0XF367.LateralRearApproachAlarmTimeThreshold = reader.ReadByte();
return jT808_0X8103_0XF367;
}

public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0xF367 value, IJT808Config config)
{
writer.WriteUInt32(value.ParamId);
writer.WriteByte(2);
writer.WriteByte(value.RearApproachAlarmTimeThreshold);
writer.WriteByte(value.LateralRearApproachAlarmTimeThreshold);
}
}
}

+ 0
- 38
src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_0x9208_Formatter.cs 查看文件

@@ -1,38 +0,0 @@
using JT808.Protocol.Extensions.JTActiveSafety.MessageBody;
using JT808.Protocol.Extensions.JTActiveSafety.Metadata;
using JT808.Protocol.Formatters;
using JT808.Protocol.MessagePack;
using System;
using System.Collections.Generic;
using System.Text;

namespace JT808.Protocol.Extensions.JTActiveSafety.Formatters
{
public class JT808_0x9208_Formatter : IJT808MessagePackFormatter<JT808_0x9208>
{
public JT808_0x9208 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x9208 jT808_0X9208 = new JT808_0x9208();
jT808_0X9208.AttachmentServerIPLength = reader.ReadByte();
jT808_0X9208.AttachmentServerIP = reader.ReadString(jT808_0X9208.AttachmentServerIPLength);
jT808_0X9208.AttachmentServerIPTcpPort = reader.ReadUInt16();
jT808_0X9208.AttachmentServerIPUdpPort = reader.ReadUInt16();
jT808_0X9208.AlarmIdentification = JT808_AlarmIdentificationProperty_Formatter.Instance.Deserialize(ref reader, config);
jT808_0X9208.AlarmId = reader.ReadString(32);
jT808_0X9208.Retain = reader.ReadArray(16).ToArray();
return jT808_0X9208;
}

public void Serialize(ref JT808MessagePackWriter writer, JT808_0x9208 value, IJT808Config config)
{
writer.Skip(1, out int AttachmentServerIPLengthPosition);
writer.WriteString(value.AttachmentServerIP);
writer.WriteByteReturn((byte)(writer.GetCurrentPosition()- AttachmentServerIPLengthPosition-1), AttachmentServerIPLengthPosition);
writer.WriteUInt16(value.AttachmentServerIPTcpPort);
writer.WriteUInt16(value.AttachmentServerIPUdpPort);
JT808_AlarmIdentificationProperty_Formatter.Instance.Serialize(ref writer, value.AlarmIdentification, config);
writer.WriteString(value.AlarmId);
writer.WriteArray(value.Retain);
}
}
}

+ 0
- 57
src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_0x9212_Formatter.cs 查看文件

@@ -1,57 +0,0 @@
using JT808.Protocol.Extensions.JTActiveSafety.MessageBody;
using JT808.Protocol.Extensions.JTActiveSafety.Metadata;
using JT808.Protocol.Formatters;
using JT808.Protocol.MessagePack;
using System;
using System.Collections.Generic;
using System.Text;

namespace JT808.Protocol.Extensions.JTActiveSafety.Formatters
{
public class JT808_0x9212_Formatter : IJT808MessagePackFormatter<JT808_0x9212>
{
public JT808_0x9212 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x9212 jT808_0X9212 = new JT808_0x9212();
jT808_0X9212.FileNameLength = reader.ReadByte();
jT808_0X9212.FileName = reader.ReadString(jT808_0X9212.FileNameLength);
jT808_0X9212.FileType = reader.ReadByte();
jT808_0X9212.UploadResult = reader.ReadByte();
jT808_0X9212.DataPackageCount= reader.ReadByte();
if (jT808_0X9212.DataPackageCount > 0)
{
jT808_0X9212.DataPackages = new List<DataPackageProperty>();
for(int i=0;i< jT808_0X9212.DataPackageCount; i++)
{
DataPackageProperty dataPackageProperty = new DataPackageProperty();
dataPackageProperty.Offset = reader.ReadUInt32();
dataPackageProperty.Length = reader.ReadUInt32();
jT808_0X9212.DataPackages.Add(dataPackageProperty);
}
}
return jT808_0X9212;
}

public void Serialize(ref JT808MessagePackWriter writer, JT808_0x9212 value, IJT808Config config)
{
writer.Skip(1, out int FileNameLengthPosition);
writer.WriteString(value.FileName);
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - FileNameLengthPosition - 1), FileNameLengthPosition);
writer.WriteByte(value.FileType);
writer.WriteByte(value.UploadResult);
if(value.DataPackages!=null && value.DataPackages.Count > 0)
{
writer.WriteByte((byte)value.DataPackages.Count);
foreach (var item in value.DataPackages)
{
writer.WriteUInt32(item.Offset);
writer.WriteUInt32(item.Length);
}
}
else
{
writer.WriteByte(0);
}
}
}
}

+ 0
- 37
src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_AlarmIdentificationProperty_Formatter.cs 查看文件

@@ -1,37 +0,0 @@
using JT808.Protocol.Extensions.JTActiveSafety.Metadata;
using JT808.Protocol.Formatters;
using JT808.Protocol.MessagePack;
using System;
using System.Collections.Generic;
using System.Text;

namespace JT808.Protocol.Extensions.JTActiveSafety.Formatters
{
public class JT808_AlarmIdentificationProperty_Formatter : IJT808MessagePackFormatter<AlarmIdentificationProperty>
{
public readonly static JT808_AlarmIdentificationProperty_Formatter Instance = new JT808_AlarmIdentificationProperty_Formatter();
public AlarmIdentificationProperty Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
AlarmIdentificationProperty alarmIdentification = new AlarmIdentificationProperty();
alarmIdentification.TerminalID = reader.ReadString(7);
alarmIdentification.Time = reader.ReadDateTime6();
alarmIdentification.SN = reader.ReadByte();
alarmIdentification.AttachCount = reader.ReadByte();
alarmIdentification.Retain = reader.ReadByte();
return alarmIdentification;
}

public void Serialize(ref JT808MessagePackWriter writer, AlarmIdentificationProperty value, IJT808Config config)
{
if (value == null)
{
throw new NullReferenceException($"{nameof(AlarmIdentificationProperty)}不为空");
}
writer.WriteString(value.TerminalID);
writer.WriteDateTime6(value.Time);
writer.WriteByte(value.SN);
writer.WriteByte(value.AttachCount);
writer.WriteByte(value.Retain);
}
}
}

+ 0
- 56
src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_JTActiveSafety_0x0900_Formatter.cs 查看文件

@@ -1,56 +0,0 @@
using JT808.Protocol.Extensions.JTActiveSafety.Enums;
using JT808.Protocol.Extensions.JTActiveSafety.MessageBody;
using JT808.Protocol.Formatters;
using JT808.Protocol.MessagePack;
using System;
using System.Collections.Generic;
using System.Text;

namespace JT808.Protocol.Extensions.JTActiveSafety.Formatters
{
public class JT808_JTActiveSafety_0x0900_Formatter : IJT808MessagePackFormatter<JT808_JTActiveSafety_0x0900>
{
public JT808_JTActiveSafety_0x0900 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_JTActiveSafety_0x0900 jT808_JTActiveSafety_0X0900 = new JT808_JTActiveSafety_0x0900();
jT808_JTActiveSafety_0X0900.USBMessageCount = reader.ReadByte();
if (jT808_JTActiveSafety_0X0900.USBMessageCount > 0)
{
jT808_JTActiveSafety_0X0900.USBMessages = new List<JT808_JTActiveSafety_0x0900_USBMessage>();
for (int i = 0; i < jT808_JTActiveSafety_0X0900.USBMessageCount; i++)
{
JT808_JTActiveSafety_0x0900_USBMessage jT808_JTActiveSafety_0X0900_USBMessage = new JT808_JTActiveSafety_0x0900_USBMessage();
jT808_JTActiveSafety_0X0900_USBMessage.USBID= reader.ReadByte();
jT808_JTActiveSafety_0X0900_USBMessage.MessageLength = reader.ReadByte();
jT808_JTActiveSafety_0X0900_USBMessage.MessageContent = reader.ReadArray(jT808_JTActiveSafety_0X0900_USBMessage.MessageLength).ToArray();
jT808_JTActiveSafety_0X0900.USBMessages.Add(jT808_JTActiveSafety_0X0900_USBMessage);
}
}
return jT808_JTActiveSafety_0X0900;
}

public void Serialize(ref JT808MessagePackWriter writer, JT808_JTActiveSafety_0x0900 value, IJT808Config config)
{
if(value.USBMessages!=null && value.USBMessages.Count>0)
{
writer.WriteByte((byte)value.USBMessages.Count);
foreach(var item in value.USBMessages)
{
writer.WriteByte(item.USBID);
if(item.MessageContent!=null&& item.MessageContent.Length > 0)
{
writer.WriteByte((byte)item.MessageContent.Length);
writer.WriteArray(item.MessageContent);
}
else if (item.MessageContentObejct != null)
{
writer.Skip(1,out int MessageContentLengthPosition);
object obj = config.GetMessagePackFormatterByType(item.MessageContentObejct.GetType());
JT808MessagePackFormatterResolverExtensions.JT808DynamicSerialize(obj, ref writer, item.MessageContentObejct, config);
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - MessageContentLengthPosition - 1), MessageContentLengthPosition);
}
}
}
}
}
}

+ 0
- 27
src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_JTActiveSafety_0x0900_USB_0xF7_Formatter.cs 查看文件

@@ -1,27 +0,0 @@
using JT808.Protocol.Extensions.JTActiveSafety.MessageBody;
using JT808.Protocol.Formatters;
using JT808.Protocol.MessagePack;
using System;
using System.Collections.Generic;
using System.Text;

namespace JT808.Protocol.Extensions.JTActiveSafety.Formatters
{
public class JT808_JTActiveSafety_0x0900_USB_0xF7_Formatter : IJT808MessagePackFormatter<JT808_JTActiveSafety_0x0900_USB_0xF7>
{
public readonly static JT808_JTActiveSafety_0x0900_USB_0xF7_Formatter Instance = new JT808_JTActiveSafety_0x0900_USB_0xF7_Formatter();
public JT808_JTActiveSafety_0x0900_USB_0xF7 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_JTActiveSafety_0x0900_USB_0xF7 jT808_JTActiveSafety_0X0900_USB_0XF7 = new JT808_JTActiveSafety_0x0900_USB_0xF7();
jT808_JTActiveSafety_0X0900_USB_0XF7.WorkingCondition = reader.ReadByte();
jT808_JTActiveSafety_0X0900_USB_0XF7.AlarmStatus = reader.ReadUInt32();
return jT808_JTActiveSafety_0X0900_USB_0XF7;
}

public void Serialize(ref JT808MessagePackWriter writer, JT808_JTActiveSafety_0x0900_USB_0xF7 value, IJT808Config config)
{
writer.WriteByte(value.WorkingCondition);
writer.WriteUInt32(value.AlarmStatus);
}
}
}

+ 0
- 58
src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_JTActiveSafety_0x0900_USB_0xF8_Formatter.cs 查看文件

@@ -1,58 +0,0 @@
using JT808.Protocol.Extensions.JTActiveSafety.MessageBody;
using JT808.Protocol.Formatters;
using JT808.Protocol.MessagePack;
using System;
using System.Collections.Generic;
using System.Text;

namespace JT808.Protocol.Extensions.JTActiveSafety.Formatters
{
public class JT808_JTActiveSafety_0x0900_USB_0xF8_Formatter : IJT808MessagePackFormatter<JT808_JTActiveSafety_0x0900_USB_0xF8>
{
public readonly static JT808_JTActiveSafety_0x0900_USB_0xF8_Formatter Instance = new JT808_JTActiveSafety_0x0900_USB_0xF8_Formatter();
public JT808_JTActiveSafety_0x0900_USB_0xF8 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_JTActiveSafety_0x0900_USB_0xF8 jT808_JTActiveSafety_0X0900_USB_0XF8 = new JT808_JTActiveSafety_0x0900_USB_0xF8();
jT808_JTActiveSafety_0X0900_USB_0XF8.CompantNameLength = reader.ReadByte();
jT808_JTActiveSafety_0X0900_USB_0XF8.CompantName = reader.ReadString(jT808_JTActiveSafety_0X0900_USB_0XF8.CompantNameLength);
jT808_JTActiveSafety_0X0900_USB_0XF8.ProductModelLength = reader.ReadByte();
jT808_JTActiveSafety_0X0900_USB_0XF8.ProductModel = reader.ReadString(jT808_JTActiveSafety_0X0900_USB_0XF8.ProductModelLength);
jT808_JTActiveSafety_0X0900_USB_0XF8.HardwareVersionNumberLength = reader.ReadByte();
jT808_JTActiveSafety_0X0900_USB_0XF8.HardwareVersionNumber = reader.ReadString(jT808_JTActiveSafety_0X0900_USB_0XF8.HardwareVersionNumberLength);
jT808_JTActiveSafety_0X0900_USB_0XF8.SoftwareVersionNumberLength = reader.ReadByte();
jT808_JTActiveSafety_0X0900_USB_0XF8.SoftwareVersionNumber = reader.ReadString(jT808_JTActiveSafety_0X0900_USB_0XF8.SoftwareVersionNumberLength);
jT808_JTActiveSafety_0X0900_USB_0XF8.DevicesIDLength = reader.ReadByte();
jT808_JTActiveSafety_0X0900_USB_0XF8.DevicesID = reader.ReadString(jT808_JTActiveSafety_0X0900_USB_0XF8.DevicesIDLength);
jT808_JTActiveSafety_0X0900_USB_0XF8.CustomerCodeLength = reader.ReadByte();
jT808_JTActiveSafety_0X0900_USB_0XF8.CustomerCode = reader.ReadString(jT808_JTActiveSafety_0X0900_USB_0XF8.CustomerCodeLength);
return jT808_JTActiveSafety_0X0900_USB_0XF8;
}

public void Serialize(ref JT808MessagePackWriter writer, JT808_JTActiveSafety_0x0900_USB_0xF8 value, IJT808Config config)
{
writer.Skip(1, out int CompantNameLengthPosition);
writer.WriteString(value.CompantName);
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - CompantNameLengthPosition - 1), CompantNameLengthPosition);

writer.Skip(1, out int ProductModelLengthPosition);
writer.WriteString(value.ProductModel);
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - ProductModelLengthPosition - 1), ProductModelLengthPosition);

writer.Skip(1, out int HardwareVersionNumberLengthPosition);
writer.WriteString(value.HardwareVersionNumber);
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - HardwareVersionNumberLengthPosition - 1), HardwareVersionNumberLengthPosition);

writer.Skip(1, out int SoftwareVersionNumberLengthPosition);
writer.WriteString(value.SoftwareVersionNumber);
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - SoftwareVersionNumberLengthPosition - 1), SoftwareVersionNumberLengthPosition);

writer.Skip(1, out int DevicesIDLengthPosition);
writer.WriteString(value.DevicesID);
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - DevicesIDLengthPosition - 1), DevicesIDLengthPosition);

writer.Skip(1, out int CustomerCodeLengthPosition);
writer.WriteString(value.CustomerCode);
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - CustomerCodeLengthPosition - 1), CustomerCodeLengthPosition);
}
}
}

+ 0
- 39
src/JT808.Protocol.Extensions.JTActiveSafety/Formatters/JT808_JTActiveSafety_0x8900_Formatter.cs 查看文件

@@ -1,39 +0,0 @@
using JT808.Protocol.Extensions.JTActiveSafety.MessageBody;
using JT808.Protocol.Formatters;
using JT808.Protocol.MessagePack;
using System;
using System.Collections.Generic;
using System.Text;

namespace JT808.Protocol.Extensions.JTActiveSafety.Formatters
{
public class JT808_JTActiveSafety_0x8900_Formatter : IJT808MessagePackFormatter<JT808_JTActiveSafety_0x8900>
{
public JT808_JTActiveSafety_0x8900 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_JTActiveSafety_0x8900 jT808_JTActiveSafety_0X8900 = new JT808_JTActiveSafety_0x8900();
jT808_JTActiveSafety_0X8900.USBCount=reader.ReadByte();
if (jT808_JTActiveSafety_0X8900.USBCount > 0)
{
jT808_JTActiveSafety_0X8900.MultipleUSB = new List<byte>();
for(int i=0;i < jT808_JTActiveSafety_0X8900.USBCount; i++)
{
jT808_JTActiveSafety_0X8900.MultipleUSB.Add(reader.ReadByte());
}
}
return jT808_JTActiveSafety_0X8900;
}

public void Serialize(ref JT808MessagePackWriter writer, JT808_JTActiveSafety_0x8900 value, IJT808Config config)
{
if(value.MultipleUSB!=null && value.MultipleUSB.Count > 0)
{
writer.WriteByte((byte)value.MultipleUSB.Count);
foreach(var item in value.MultipleUSB)
{
writer.WriteByte(item);
}
}
}
}
}

+ 5
- 30
src/JT808.Protocol.Extensions.JTActiveSafety/JT808.Protocol.Extensions.JTActiveSafety.csproj 查看文件

@@ -2,44 +2,23 @@

<PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard2.1;</TargetFrameworks>
<LangVersion>7.3</LangVersion>
<LangVersion>8.0</LangVersion>
<Copyright>Copyright 2019.</Copyright>
<Authors>SmallChi(Koike)</Authors>
<PackageId>JT808.Protocol.Extensions.JTActiveSafety</PackageId>
<Product>JT808.Protocol.Extensions.JTActiveSafety</Product>
<Description>基于JT808协议、GB808协议扩展的主动安全消息协议</Description>
<PackageReleaseNotes>基于JT808协议、GB808协议扩展的主动安全消息协议</PackageReleaseNotes>
<Description>基于JT808协议、GB808协议扩展的主动安全消息协议(苏标)</Description>
<PackageReleaseNotes>基于JT808协议、GB808协议扩展的主动安全消息协议(苏标)</PackageReleaseNotes>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<RepositoryUrl>https://github.com/SmallChi/JTActiveSafety</RepositoryUrl>
<PackageProjectUrl>https://github.com/SmallChi/JTActiveSafety</PackageProjectUrl>
<licenseUrl>https://github.com/SmallChi/JTActiveSafety/blob/master/LICENSE</licenseUrl>
<license>https://github.com/SmallChi/JTActiveSafety/blob/master/LICENSE</license>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<Version>2.2.2</Version>
<Version>1.0.0</Version>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
</PropertyGroup>

<ItemGroup>
<Compile Remove="Formatters\JT808_0x0200_0x64_Formatter.cs" />
<Compile Remove="Formatters\JT808_0x0200_0x65_Formatter.cs" />
<Compile Remove="Formatters\JT808_0x0200_0x66_Formatter.cs" />
<Compile Remove="Formatters\JT808_0x0200_0x67_Formatter.cs" />
<Compile Remove="Formatters\JT808_0x1210_Formatter.cs" />
<Compile Remove="Formatters\JT808_0x1211_Formatter.cs" />
<Compile Remove="Formatters\JT808_0x1212_Formatter.cs" />
<Compile Remove="Formatters\JT808_0x8103_0xF364_Formatter.cs" />
<Compile Remove="Formatters\JT808_0x8103_0xF365_Formatter.cs" />
<Compile Remove="Formatters\JT808_0x8103_0xF366_Formatter.cs" />
<Compile Remove="Formatters\JT808_0x8103_0xF367_Formatter.cs" />
<Compile Remove="Formatters\JT808_0x9208_Formatter.cs" />
<Compile Remove="Formatters\JT808_0x9212_Formatter.cs" />
<Compile Remove="Formatters\JT808_AlarmIdentificationProperty_Formatter.cs" />
<Compile Remove="Formatters\JT808_JTActiveSafety_0x0900_Formatter.cs" />
<Compile Remove="Formatters\JT808_JTActiveSafety_0x0900_USB_0xF7_Formatter.cs" />
<Compile Remove="Formatters\JT808_JTActiveSafety_0x0900_USB_0xF8_Formatter.cs" />
<Compile Remove="Formatters\JT808_JTActiveSafety_0x8900_Formatter.cs" />
</ItemGroup>

<ItemGroup>
<None Include="..\..\LICENSE">
<Pack>True</Pack>
@@ -48,11 +27,7 @@
</ItemGroup>

<ItemGroup>
<Folder Include="Formatters\" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="JT808" Version="2.2.2" />
<PackageReference Include="JT808" Version="2.2.5" />
</ItemGroup>




+ 2
- 0
src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x1210.cs 查看文件

@@ -43,6 +43,8 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody

public override ushort MsgId => 0x1210;

public override string Description => "报警附件信息消息";

public JT808_0x1210 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x1210 jT808_0X1210 = new JT808_0x1210();


+ 1
- 0
src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x1211.cs 查看文件

@@ -8,6 +8,7 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
/// </summary>
public class JT808_0x1211 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x1211>
{
public override string Description => "文件信息上传";
/// <summary>
/// 文件名称长度
/// </summary>


+ 1
- 0
src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x1212.cs 查看文件

@@ -8,6 +8,7 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
/// </summary>
public class JT808_0x1212 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x1212>
{
public override string Description => "文件上传完成消息";
/// <summary>
/// 文件名称长度
/// </summary>


+ 1
- 0
src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x9208.cs 查看文件

@@ -10,6 +10,7 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
/// </summary>
public class JT808_0x9208:JT808Bodies, IJT808MessagePackFormatter<JT808_0x9208>
{
public override string Description => "报警附件上传指令";
public byte AttachmentServerIPLength { get; set; }
public string AttachmentServerIP { get; set; }
public ushort AttachmentServerIPTcpPort { get; set; }


+ 1
- 0
src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x9212.cs 查看文件

@@ -10,6 +10,7 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
/// </summary>
public class JT808_0x9212:JT808Bodies, IJT808MessagePackFormatter<JT808_0x9212>
{
public override string Description => "文件上传完成消息应答";
/// <summary>
/// 文件名称长度
/// </summary>


+ 7
- 4
src/JTActiveSafety.Protocol.Test/JTActiveSafety.Protocol.Test.csproj 查看文件

@@ -1,15 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<TargetFramework>netcoreapp3.1</TargetFramework>

<IsPackable>false</IsPackable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.0.1" />
<PackageReference Include="xunit" Version="2.4.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>

</Project>

Loading…
取消
儲存