@@ -71,4 +71,22 @@ | |||
| 8 | 0x9208 | √ | 取消申请交换指定车辆定位信息应答消息 | | |||
| 9 | 0x9209 | √ | 补发车辆定位信息应答消息 | | |||
| 10 | 0x920A | √ | 上报驾驶员身份识别信息请求消息 | | |||
| 11 | 0x920B | √ | 上报车辆电子运单请求消息 | | |||
| 11 | 0x920B | √ | 上报车辆电子运单请求消息 | | |||
### 平台间信息交互类 | |||
#### 主链路平台间信息交互消息 | |||
|序号|消息ID|完成情况|消息体名称| | |||
|:------:|:------:|:------:|:------:| | |||
| 1 | 0x1300 | √ | 主链路平台间信息交互消息 | | |||
| 2 | 0x1301 | √ | 平台查岗应答消息 | | |||
| 3 | 0x1302 | √ | 下发平台间报文应答消息 | | |||
#### 从链路平台间信息交互消息 | |||
|序号|消息ID|完成情况|消息体名称| | |||
|:------:|:------:|:------:|:------:| | |||
| 1 | 0x9300 | √ | 从链路平台间信息交互消息 | | |||
| 2 | 0x9301 | √ | 平台查岗请求 | | |||
| 3 | 0x9302 | √ | 下发平台间报文请求 | |
@@ -40,6 +40,9 @@ | |||
<Compile Include="JT809Enums\JT809VehicleColorType.cs" /> | |||
<Compile Include="JT809Enums\JT809_0x1002_Result.cs" /> | |||
<Compile Include="JT809Enums\JT809_0x1007_ErrorCode.cs" /> | |||
<Compile Include="JT809Enums\JT809_0x9302_ObjectType.cs" /> | |||
<Compile Include="JT809Enums\JT809_0x9301_ObjectType.cs" /> | |||
<Compile Include="JT809Enums\JT809_0x1301_ObjectType.cs" /> | |||
<Compile Include="JT809Enums\JT809_0x9209_Result.cs" /> | |||
<Compile Include="JT809Enums\JT809_0x9208_Result.cs" /> | |||
<Compile Include="JT809Enums\JT809_0x9207_Result.cs" /> | |||
@@ -137,11 +137,13 @@ namespace JT809.Protocol.JT809Enums | |||
///主链路平台间信息交互消息 | |||
///</summary> | |||
[Description("主链路平台间信息交互消息")] | |||
[JT809BodiesType(typeof(JT809_0x1300))] | |||
UP_PLATFORM_MSG = 0x1300, | |||
///<summary> | |||
///从链路平台间信息交互消息 | |||
///</summary> | |||
[Description("从链路平台间信息交互消息")] | |||
[JT809BodiesType(typeof(JT809_0x9300))] | |||
DOWN_PLATFORM_MSG = 0x9300, | |||
#endregion | |||
#region 车辆报警信息交互类 | |||
@@ -156,6 +158,7 @@ namespace JT809.Protocol.JT809Enums | |||
[Description("从链路报警信息交互消息")] | |||
DOWN_WARN_MSG = 0x9400, | |||
#endregion | |||
#region 车辆监管类 | |||
///<summary> | |||
///主链路车辆监管消息 | |||
@@ -152,11 +152,13 @@ namespace JT809.Protocol.JT809Enums | |||
///平台查岗应答 | |||
///</summary> | |||
[Description("平台查岗应答")] | |||
[JT809BodiesType(typeof(JT809_0x1300_0x1301))] | |||
UP_PLATFORM_MSG_POST_QUERY_ACK = 0x1301, | |||
///<summary> | |||
///下发平台间报文应答 | |||
///</summary> | |||
[Description("下发平台间报文应答")] | |||
[JT809BodiesType(typeof(JT809_0x1300_0x1302))] | |||
UP_PLATFORM_MSG_INFO_ACK = 0x1302, | |||
#endregion | |||
@@ -165,11 +167,13 @@ namespace JT809.Protocol.JT809Enums | |||
///平台查岗请求 | |||
///</summary> | |||
[Description("平台查岗请求")] | |||
[JT809BodiesType(typeof(JT809_0x9300_0x9301))] | |||
DOWN_PLATFORM_MSG_POST_QUERY_REQ = 0x9301, | |||
///<summary> | |||
///下发平台间报文请求 | |||
///</summary> | |||
[Description("下发平台间报文请求")] | |||
[JT809BodiesType(typeof(JT809_0x9300_0x9302))] | |||
DOWN_PLATFORM_MSG_INFO_REQ = 0x9302, | |||
#endregion | |||
@@ -0,0 +1,16 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.JT809Enums | |||
{ | |||
/// <summary> | |||
/// 查岗对象的类型 | |||
/// </summary> | |||
public enum JT809_0x1301_ObjectType:byte | |||
{ | |||
当前连接的下级平台=0x01, | |||
下级平台所属单一业户=0x02, | |||
下级平台所属所有业户=0x03 | |||
} | |||
} |
@@ -0,0 +1,16 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.JT809Enums | |||
{ | |||
/// <summary> | |||
/// 查岗对象的类型 | |||
/// </summary> | |||
public enum JT809_0x9301_ObjectType : byte | |||
{ | |||
当前连接的下级平台=0x01, | |||
下级平台所属单一业户=0x02, | |||
下级平台所属所有业户=0x03 | |||
} | |||
} |
@@ -0,0 +1,23 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.JT809Enums | |||
{ | |||
/// <summary> | |||
/// 查岗对象的类型 | |||
/// </summary> | |||
public enum JT809_0x9302_ObjectType : byte | |||
{ | |||
下级平台所属单一平台 = 0x00, | |||
当前连接的下级平台 = 0x01, | |||
下级平台所属单一业户 = 0x02, | |||
下级平台所属所有业户 = 0x03, | |||
下级平台所属所有平台 = 0x04, | |||
下级平台所属所有平台和业户 = 0x05, | |||
下级平台所属所有政府监管平台_含监控端 = 0x06, | |||
下级平台所属所有企业监控平台 = 0x07, | |||
下级平台所属所有经营性企业监控平台 = 0x08, | |||
下级平台所属所有非经营性企业监控平台 = 0x09, | |||
} | |||
} |
@@ -0,0 +1,60 @@ | |||
using JT809.Protocol.JT809Attributes; | |||
using JT809.Protocol.JT809Enums; | |||
using JT809.Protocol.JT809Exceptions; | |||
using JT809.Protocol.JT809Extensions; | |||
using JT809.Protocol.JT809MessageBody; | |||
using System; | |||
using System.Buffers; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.JT809Formatters.JT809MessageBodyFormatters | |||
{ | |||
public class JT809_0x1300Formatter : IJT809Formatter<JT809_0x1300> | |||
{ | |||
public JT809_0x1300 Deserialize(ReadOnlySpan<byte> bytes, out int readSize) | |||
{ | |||
int offset = 0; | |||
JT809_0x1300 jT809_0X1300 = new JT809_0x1300(); | |||
jT809_0X1300.SubBusinessType = (JT809SubBusinessType)JT809BinaryExtensions.ReadUInt16Little(bytes, ref offset); | |||
jT809_0X1300.DataLength = JT809BinaryExtensions.ReadUInt32Little(bytes, ref offset); | |||
//JT809.Protocol.JT809Enums.JT809BusinessType 映射对应消息特性 | |||
JT809BodiesTypeAttribute jT809SubBodiesTypeAttribute = jT809_0X1300.SubBusinessType.GetAttribute<JT809BodiesTypeAttribute>(); | |||
if (jT809SubBodiesTypeAttribute == null) | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.GetAttributeError, $"JT809BodiesTypeAttribute Not Found>{jT809_0X1300.SubBusinessType.ToString()}"); | |||
} | |||
try | |||
{ | |||
jT809_0X1300.JT809SubBodies = JT809FormatterResolverExtensions.JT809DynamicDeserialize(JT809FormatterExtensions.GetFormatter(jT809SubBodiesTypeAttribute.JT809BodiesType), bytes.Slice(offset, (int)jT809_0X1300.DataLength), out readSize); | |||
} | |||
catch | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{jT809_0X1300.SubBusinessType.ToString()}"); | |||
} | |||
readSize = offset; | |||
return jT809_0X1300; | |||
} | |||
public int Serialize(IMemoryOwner<byte> memoryOwner, int offset, JT809_0x1300 value) | |||
{ | |||
offset += JT809BinaryExtensions.WriteUInt16Little(memoryOwner, offset, (ushort)value.SubBusinessType); | |||
offset += JT809BinaryExtensions.WriteUInt32Little(memoryOwner, offset, value.DataLength); | |||
//JT809.Protocol.JT809Enums.JT809BusinessType 映射对应消息特性 | |||
JT809BodiesTypeAttribute jT809SubBodiesTypeAttribute = value.SubBusinessType.GetAttribute<JT809BodiesTypeAttribute>(); | |||
if (jT809SubBodiesTypeAttribute == null) | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.GetAttributeError, $"JT809BodiesTypeAttribute Not Found>{value.SubBusinessType.ToString()}"); | |||
} | |||
try | |||
{ | |||
offset = JT809FormatterResolverExtensions.JT809DynamicSerialize(JT809FormatterExtensions.GetFormatter(jT809SubBodiesTypeAttribute.JT809BodiesType), memoryOwner, offset, value.JT809SubBodies); | |||
} | |||
catch | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||
} | |||
return offset; | |||
} | |||
} | |||
} |
@@ -0,0 +1,60 @@ | |||
using JT809.Protocol.JT809Attributes; | |||
using JT809.Protocol.JT809Enums; | |||
using JT809.Protocol.JT809Exceptions; | |||
using JT809.Protocol.JT809Extensions; | |||
using JT809.Protocol.JT809MessageBody; | |||
using System; | |||
using System.Buffers; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.JT809Formatters.JT809MessageBodyFormatters | |||
{ | |||
public class JT809_0x9300Formatter : IJT809Formatter<JT809_0x9300> | |||
{ | |||
public JT809_0x9300 Deserialize(ReadOnlySpan<byte> bytes, out int readSize) | |||
{ | |||
int offset = 0; | |||
JT809_0x9300 jT809_0X9300 = new JT809_0x9300(); | |||
jT809_0X9300.SubBusinessType = (JT809SubBusinessType)JT809BinaryExtensions.ReadUInt16Little(bytes, ref offset); | |||
jT809_0X9300.DataLength = JT809BinaryExtensions.ReadUInt32Little(bytes, ref offset); | |||
//JT809.Protocol.JT809Enums.JT809BusinessType 映射对应消息特性 | |||
JT809BodiesTypeAttribute jT809SubBodiesTypeAttribute = jT809_0X9300.SubBusinessType.GetAttribute<JT809BodiesTypeAttribute>(); | |||
if (jT809SubBodiesTypeAttribute == null) | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.GetAttributeError, $"JT809BodiesTypeAttribute Not Found>{jT809_0X9300.SubBusinessType.ToString()}"); | |||
} | |||
try | |||
{ | |||
jT809_0X9300.JT809SubBodies = JT809FormatterResolverExtensions.JT809DynamicDeserialize(JT809FormatterExtensions.GetFormatter(jT809SubBodiesTypeAttribute.JT809BodiesType), bytes.Slice(offset, (int)jT809_0X9300.DataLength), out readSize); | |||
} | |||
catch | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{jT809_0X9300.SubBusinessType.ToString()}"); | |||
} | |||
readSize = offset; | |||
return jT809_0X9300; | |||
} | |||
public int Serialize(IMemoryOwner<byte> memoryOwner, int offset, JT809_0x9300 value) | |||
{ | |||
offset += JT809BinaryExtensions.WriteUInt16Little(memoryOwner, offset, (ushort)value.SubBusinessType); | |||
offset += JT809BinaryExtensions.WriteUInt32Little(memoryOwner, offset, value.DataLength); | |||
//JT809.Protocol.JT809Enums.JT809BusinessType 映射对应消息特性 | |||
JT809BodiesTypeAttribute jT809SubBodiesTypeAttribute = value.SubBusinessType.GetAttribute<JT809BodiesTypeAttribute>(); | |||
if (jT809SubBodiesTypeAttribute == null) | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.GetAttributeError, $"JT809BodiesTypeAttribute Not Found>{value.SubBusinessType.ToString()}"); | |||
} | |||
try | |||
{ | |||
offset = JT809FormatterResolverExtensions.JT809DynamicSerialize(JT809FormatterExtensions.GetFormatter(jT809SubBodiesTypeAttribute.JT809BodiesType), memoryOwner, offset, value.JT809SubBodies); | |||
} | |||
catch | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||
} | |||
return offset; | |||
} | |||
} | |||
} |
@@ -0,0 +1,38 @@ | |||
using JT809.Protocol.JT809Extensions; | |||
using JT809.Protocol.JT809SubMessageBody; | |||
using System; | |||
using System.Buffers; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.JT809Formatters.JT809SubMessageBodyFormatters | |||
{ | |||
public class JT809_0x1300_0x1301Formatter : IJT809Formatter<JT809_0x1300_0x1301> | |||
{ | |||
public JT809_0x1300_0x1301 Deserialize(ReadOnlySpan<byte> bytes, out int readSize) | |||
{ | |||
int offset = 0; | |||
JT809_0x1300_0x1301 jT809_0X1200_0X1301 = new JT809_0x1300_0x1301(); | |||
jT809_0X1200_0X1301.ObjectType = (JT809Enums.JT809_0x1301_ObjectType)JT809BinaryExtensions.ReadByteLittle(bytes, ref offset); | |||
jT809_0X1200_0X1301.ObjectID = JT809BinaryExtensions.ReadStringLittle(bytes, ref offset, 12); | |||
jT809_0X1200_0X1301.InfoID = JT809BinaryExtensions.ReadUInt32Little(bytes, ref offset); | |||
jT809_0X1200_0X1301.InfoLength = JT809BinaryExtensions.ReadUInt32Little(bytes, ref offset); | |||
jT809_0X1200_0X1301.InfoContent = JT809BinaryExtensions.ReadStringLittle(bytes, ref offset, (int)jT809_0X1200_0X1301.InfoLength); | |||
readSize = offset; | |||
return jT809_0X1200_0X1301; | |||
} | |||
public int Serialize(IMemoryOwner<byte> memoryOwner, int offset, JT809_0x1300_0x1301 value) | |||
{ | |||
offset += JT809BinaryExtensions.WriteByteLittle(memoryOwner, offset, (byte)value.ObjectType); | |||
offset += JT809BinaryExtensions.WriteStringPadRightLittle(memoryOwner, offset, value.ObjectID, 12); | |||
offset += JT809BinaryExtensions.WriteUInt32Little(memoryOwner, offset, value.InfoID); | |||
// 先计算内容长度(汉字为两个字节) | |||
offset += 4; | |||
int byteLength = JT809BinaryExtensions.WriteStringLittle(memoryOwner, offset, value.InfoContent); | |||
JT809BinaryExtensions.WriteInt32Little(memoryOwner, offset - 4, byteLength); | |||
offset += byteLength; | |||
return offset; | |||
} | |||
} | |||
} |
@@ -0,0 +1,27 @@ | |||
using JT809.Protocol.JT809Extensions; | |||
using JT809.Protocol.JT809SubMessageBody; | |||
using System; | |||
using System.Buffers; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.JT809Formatters.JT809SubMessageBodyFormatters | |||
{ | |||
public class JT809_0x1300_0x1302Formatter : IJT809Formatter<JT809_0x1300_0x1302> | |||
{ | |||
public JT809_0x1300_0x1302 Deserialize(ReadOnlySpan<byte> bytes, out int readSize) | |||
{ | |||
int offset = 0; | |||
JT809_0x1300_0x1302 jT809_0X1200_0X1302 = new JT809_0x1300_0x1302(); | |||
jT809_0X1200_0X1302.InfoID = JT809BinaryExtensions.ReadUInt32Little(bytes, ref offset); | |||
readSize = offset; | |||
return jT809_0X1200_0X1302; | |||
} | |||
public int Serialize(IMemoryOwner<byte> memoryOwner, int offset, JT809_0x1300_0x1302 value) | |||
{ | |||
offset += JT809BinaryExtensions.WriteUInt32Little(memoryOwner, offset, value.InfoID); | |||
return offset; | |||
} | |||
} | |||
} |
@@ -0,0 +1,38 @@ | |||
using JT809.Protocol.JT809Extensions; | |||
using JT809.Protocol.JT809SubMessageBody; | |||
using System; | |||
using System.Buffers; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.JT809Formatters.JT809SubMessageBodyFormatters | |||
{ | |||
public class JT809_0x9300_0x9301Formatter : IJT809Formatter<JT809_0x9300_0x9301> | |||
{ | |||
public JT809_0x9300_0x9301 Deserialize(ReadOnlySpan<byte> bytes, out int readSize) | |||
{ | |||
int offset = 0; | |||
JT809_0x9300_0x9301 jT809_0X9300_0X9301 = new JT809_0x9300_0x9301(); | |||
jT809_0X9300_0X9301.ObjectType = (JT809Enums.JT809_0x9301_ObjectType)JT809BinaryExtensions.ReadByteLittle(bytes, ref offset); | |||
jT809_0X9300_0X9301.ObjectID = JT809BinaryExtensions.ReadStringLittle(bytes, ref offset, 12); | |||
jT809_0X9300_0X9301.InfoID = JT809BinaryExtensions.ReadUInt32Little(bytes, ref offset); | |||
jT809_0X9300_0X9301.InfoLength = JT809BinaryExtensions.ReadUInt32Little(bytes, ref offset); | |||
jT809_0X9300_0X9301.InfoContent = JT809BinaryExtensions.ReadStringLittle(bytes, ref offset, (int)jT809_0X9300_0X9301.InfoLength); | |||
readSize = offset; | |||
return jT809_0X9300_0X9301; | |||
} | |||
public int Serialize(IMemoryOwner<byte> memoryOwner, int offset, JT809_0x9300_0x9301 value) | |||
{ | |||
offset += JT809BinaryExtensions.WriteByteLittle(memoryOwner, offset, (byte)value.ObjectType); | |||
offset += JT809BinaryExtensions.WriteStringPadRightLittle(memoryOwner, offset, value.ObjectID, 12); | |||
offset += JT809BinaryExtensions.WriteUInt32Little(memoryOwner, offset, value.InfoID); | |||
// 先计算内容长度(汉字为两个字节) | |||
offset += 4; | |||
int byteLength = JT809BinaryExtensions.WriteStringLittle(memoryOwner, offset, value.InfoContent); | |||
JT809BinaryExtensions.WriteInt32Little(memoryOwner, offset - 4, byteLength); | |||
offset += byteLength; | |||
return offset; | |||
} | |||
} | |||
} |
@@ -0,0 +1,38 @@ | |||
using JT809.Protocol.JT809Extensions; | |||
using JT809.Protocol.JT809SubMessageBody; | |||
using System; | |||
using System.Buffers; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.JT809Formatters.JT809SubMessageBodyFormatters | |||
{ | |||
public class JT809_0x9300_0x9302Formatter : IJT809Formatter<JT809_0x9300_0x9302> | |||
{ | |||
public JT809_0x9300_0x9302 Deserialize(ReadOnlySpan<byte> bytes, out int readSize) | |||
{ | |||
int offset = 0; | |||
JT809_0x9300_0x9302 jT809_0X9300_0X9302 = new JT809_0x9300_0x9302(); | |||
jT809_0X9300_0X9302.ObjectType = (JT809Enums.JT809_0x9302_ObjectType)JT809BinaryExtensions.ReadByteLittle(bytes, ref offset); | |||
jT809_0X9300_0X9302.ObjectID = JT809BinaryExtensions.ReadStringLittle(bytes, ref offset, 12); | |||
jT809_0X9300_0X9302.InfoID = JT809BinaryExtensions.ReadUInt32Little(bytes, ref offset); | |||
jT809_0X9300_0X9302.InfoLength = JT809BinaryExtensions.ReadUInt32Little(bytes, ref offset); | |||
jT809_0X9300_0X9302.InfoContent = JT809BinaryExtensions.ReadStringLittle(bytes, ref offset, (int)jT809_0X9300_0X9302.InfoLength); | |||
readSize = offset; | |||
return jT809_0X9300_0X9302; | |||
} | |||
public int Serialize(IMemoryOwner<byte> memoryOwner, int offset, JT809_0x9300_0x9302 value) | |||
{ | |||
offset += JT809BinaryExtensions.WriteByteLittle(memoryOwner, offset, (byte)value.ObjectType); | |||
offset += JT809BinaryExtensions.WriteStringPadRightLittle(memoryOwner, offset, value.ObjectID, 12); | |||
offset += JT809BinaryExtensions.WriteUInt32Little(memoryOwner, offset, value.InfoID); | |||
// 先计算内容长度(汉字为两个字节) | |||
offset += 4; | |||
int byteLength = JT809BinaryExtensions.WriteStringLittle(memoryOwner, offset, value.InfoContent); | |||
JT809BinaryExtensions.WriteInt32Little(memoryOwner, offset - 4, byteLength); | |||
offset += byteLength; | |||
return offset; | |||
} | |||
} | |||
} |
@@ -0,0 +1,30 @@ | |||
using JT809.Protocol.JT809Enums; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.JT809MessageBody | |||
{ | |||
/// <summary> | |||
/// 主链路平台间信息交互消息 | |||
/// <para>链路类型:主链路</para> | |||
/// <para>消息方向:下级平台往上级平台</para> | |||
/// <para>业务数据类型标识:UP_PLATFORM_MSG</para> | |||
/// <para>描述:下级平台向上级平台发送平台间交互信息</para> | |||
/// </summary> | |||
public class JT809_0x1300:JT809Bodies | |||
{ | |||
/// <summary> | |||
/// 子业务类型标识 | |||
/// </summary> | |||
public JT809SubBusinessType SubBusinessType { get; set; } | |||
/// <summary> | |||
/// 后续数据长度 | |||
/// </summary> | |||
public uint DataLength { get; set; } | |||
/// <summary> | |||
/// 子业务数据体 | |||
/// </summary> | |||
public JT809SubBodies JT809SubBodies { get; set; } | |||
} | |||
} |
@@ -0,0 +1,33 @@ | |||
using JT809.Protocol.JT809Attributes; | |||
using JT809.Protocol.JT809Enums; | |||
using JT809.Protocol.JT809Formatters.JT809MessageBodyFormatters; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.JT809MessageBody | |||
{ | |||
/// <summary> | |||
/// 从链路平台间信息交互业务 | |||
/// <para>链路类型:从链路</para> | |||
/// <para>消息方向:上级平台往下级平台</para> | |||
/// <para>业务数据类型标识:DOWN_PLATFORM_MSG</para> | |||
/// <para>描述:上级平台向下级平台发送平台问交互信息</para> | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809_0x9300Formatter))] | |||
public class JT809_0x9300:JT809Bodies | |||
{ | |||
/// <summary> | |||
/// 子业务类型标识 | |||
/// </summary> | |||
public JT809SubBusinessType SubBusinessType { get; set; } | |||
/// <summary> | |||
/// 后续数据长度 | |||
/// </summary> | |||
public uint DataLength { get; set; } | |||
/// <summary> | |||
/// 子业务数据体 | |||
/// </summary> | |||
public JT809SubBodies JT809SubBodies { get; set; } | |||
} | |||
} |
@@ -0,0 +1,39 @@ | |||
using JT809.Protocol.JT809Attributes; | |||
using JT809.Protocol.JT809Enums; | |||
using JT809.Protocol.JT809Formatters.JT809SubMessageBodyFormatters; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.JT809SubMessageBody | |||
{ | |||
/// <summary> | |||
/// 平台查岗应答消息 | |||
/// <para>子业务类型标识:UP_PLATFORM_MSG_POST_QUERY_ACK</para> | |||
/// <para>描述:下级平台应答上级平台发送的不定期平台查岗消息</para> | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809_0x1300_0x1301Formatter))] | |||
public class JT809_0x1300_0x1301:JT809SubBodies | |||
{ | |||
/// <summary> | |||
/// 查岗对象的类型 | |||
/// </summary> | |||
public JT809_0x1301_ObjectType ObjectType { get; set; } | |||
/// <summary> | |||
/// 查岗对象的ID | |||
/// </summary> | |||
public string ObjectID { get; set; } | |||
/// <summary> | |||
/// 信息ID | |||
/// </summary> | |||
public uint InfoID { get; set; } | |||
/// <summary> | |||
/// 数据长度 | |||
/// </summary> | |||
public uint InfoLength { get; set; } | |||
/// <summary> | |||
/// 应答内容 | |||
/// </summary> | |||
public string InfoContent { get; set; } | |||
} | |||
} |
@@ -0,0 +1,22 @@ | |||
using JT809.Protocol.JT809Attributes; | |||
using JT809.Protocol.JT809Formatters.JT809SubMessageBodyFormatters; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.JT809SubMessageBody | |||
{ | |||
/// <summary> | |||
/// 下发平台间报文应答消息 | |||
/// <para>子业务类型标识:UP_PLATFORM_MSG_INFO_ACK</para> | |||
/// <para>描述:下级平台收到上级平台发送的下发平台间报文请求消息后,发送应答消息</para> | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809_0x1300_0x1302Formatter))] | |||
public class JT809_0x1300_0x1302:JT809SubBodies | |||
{ | |||
/// <summary> | |||
/// 信息ID | |||
/// </summary> | |||
public uint InfoID { get; set; } | |||
} | |||
} |
@@ -0,0 +1,39 @@ | |||
using JT809.Protocol.JT809Attributes; | |||
using JT809.Protocol.JT809Enums; | |||
using JT809.Protocol.JT809Formatters.JT809SubMessageBodyFormatters; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.JT809SubMessageBody | |||
{ | |||
/// <summary> | |||
/// 平台查岗请求 | |||
/// <para>子业务类型标识:DOWN_PLATFORM-MSG_POST_QUERY_REQ</para> | |||
/// <para>描述:上级平台不定期向下级平台发送平台查岗信息</para> | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809_0x9300_0x9301Formatter))] | |||
public class JT809_0x9300_0x9301:JT809SubBodies | |||
{ | |||
/// <summary> | |||
/// 查岗对象的类型 | |||
/// </summary> | |||
public JT809_0x9301_ObjectType ObjectType { get; set; } | |||
/// <summary> | |||
/// 查岗对象的ID | |||
/// </summary> | |||
public string ObjectID { get; set; } | |||
/// <summary> | |||
/// 信息ID | |||
/// </summary> | |||
public uint InfoID { get; set; } | |||
/// <summary> | |||
/// 数据长度 | |||
/// </summary> | |||
public uint InfoLength { get; set; } | |||
/// <summary> | |||
/// 应答内容 | |||
/// </summary> | |||
public string InfoContent { get; set; } | |||
} | |||
} |
@@ -0,0 +1,39 @@ | |||
using JT809.Protocol.JT809Attributes; | |||
using JT809.Protocol.JT809Enums; | |||
using JT809.Protocol.JT809Formatters.JT809SubMessageBodyFormatters; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT809.Protocol.JT809SubMessageBody | |||
{ | |||
/// <summary> | |||
/// 下发平台间报文请求 | |||
/// <para>子业务类型标识:DOWN_PLATFORM_MSG_INFO_REQ</para> | |||
/// <para>描述:上级平台不定期向下级平台下发平台间报文</para> | |||
/// </summary> | |||
[JT809Formatter(typeof(JT809_0x9300_0x9302Formatter))] | |||
public class JT809_0x9300_0x9302:JT809SubBodies | |||
{ | |||
/// <summary> | |||
/// 查岗对象的类型 | |||
/// </summary> | |||
public JT809_0x9302_ObjectType ObjectType { get; set; } | |||
/// <summary> | |||
/// 查岗对象的ID | |||
/// </summary> | |||
public string ObjectID { get; set; } | |||
/// <summary> | |||
/// 信息ID | |||
/// </summary> | |||
public uint InfoID { get; set; } | |||
/// <summary> | |||
/// 数据长度 | |||
/// </summary> | |||
public uint InfoLength { get; set; } | |||
/// <summary> | |||
/// 应答内容 | |||
/// </summary> | |||
public string InfoContent { get; set; } | |||
} | |||
} |