Browse Source

使用自定义异常

tags/v2.2.0
yedajiang44 4 years ago
parent
commit
f728bea276
2 changed files with 4 additions and 2 deletions
  1. +1
    -0
      src/JT809.Protocol/Enums/JT809ErrorCode.cs
  2. +3
    -2
      src/JT809.Protocol/SubMessageBody/JT809_0x1300_0x1303.cs

+ 1
- 0
src/JT809.Protocol/Enums/JT809ErrorCode.cs View File

@@ -17,5 +17,6 @@ namespace JT809.Protocol.Enums
GetAttributeError=1009, GetAttributeError=1009,
ReaderRemainContentLengthError = 1010, ReaderRemainContentLengthError = 1010,
NotGlobalRegisterFormatterAssembly=1011, NotGlobalRegisterFormatterAssembly=1011,
IllegalArgument=1012
} }
} }

+ 3
- 2
src/JT809.Protocol/SubMessageBody/JT809_0x1300_0x1303.cs View File

@@ -6,6 +6,7 @@ using System;
using JT809.Protocol.Interfaces; using JT809.Protocol.Interfaces;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text.Json; using System.Text.Json;
using JT809.Protocol.Exceptions;


namespace JT809.Protocol.SubMessageBody namespace JT809.Protocol.SubMessageBody
{ {
@@ -64,14 +65,14 @@ namespace JT809.Protocol.SubMessageBody
value.SerialCount = reader.ReadByte(); value.SerialCount = reader.ReadByte();
value.BeginMessageNumber = reader.ReadUInt32(); value.BeginMessageNumber = reader.ReadUInt32();
value.EndMessageNumber = reader.ReadUInt32(); value.EndMessageNumber = reader.ReadUInt32();
if (value.SerialCount != value.EndMessageNumber - value.BeginMessageNumber + 1) throw new AggregateException($"序列号间隔[{value.BeginMessageNumber}-{value.EndMessageNumber}]与重传消息总数:{value.SerialCount}不符");
if (value.SerialCount != value.EndMessageNumber - value.BeginMessageNumber + 1) throw new JT809Exception(JT809ErrorCode.IllegalArgument, $"序列号间隔[{value.BeginMessageNumber}-{value.EndMessageNumber}]与重传消息总数:{value.SerialCount}不符");
value.Time = reader.ReadUTCDateTime(); value.Time = reader.ReadUTCDateTime();
return value; return value;
} }


public void Serialize(ref JT809MessagePackWriter writer, JT809_0x1300_0x1303 value, IJT809Config config) public void Serialize(ref JT809MessagePackWriter writer, JT809_0x1300_0x1303 value, IJT809Config config)
{ {
if (value.EndMessageNumber - value.BeginMessageNumber >= byte.MaxValue) throw new AggregateException("序列号间隔不能大于255");
if (value.EndMessageNumber - value.BeginMessageNumber >= byte.MaxValue) throw new JT809Exception(JT809ErrorCode.IllegalArgument, "序列号间隔不能大于255");
value.SerialCount = (byte)(value.EndMessageNumber - value.BeginMessageNumber + 1); value.SerialCount = (byte)(value.EndMessageNumber - value.BeginMessageNumber + 1);
writer.WriteUInt16(RetranDataType); writer.WriteUInt16(RetranDataType);
writer.WriteByte(value.SerialCount); writer.WriteByte(value.SerialCount);


Loading…
Cancel
Save