diff --git a/src/JT808.Protocol/Internal/DefaultMsgSNDistributedImpl.cs b/src/JT808.Protocol/Internal/DefaultMsgSNDistributedImpl.cs index fd91dc1..f978d77 100644 --- a/src/JT808.Protocol/Internal/DefaultMsgSNDistributedImpl.cs +++ b/src/JT808.Protocol/Internal/DefaultMsgSNDistributedImpl.cs @@ -1,21 +1,18 @@ -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Threading; +using System.Collections.Concurrent; using JT808.Protocol.Interfaces; namespace JT808.Protocol.Internal { internal class DefaultMsgSNDistributedImpl : IJT808MsgSNDistributed { - ConcurrentDictionary counterDict; + readonly ConcurrentDictionary counterDict; public DefaultMsgSNDistributedImpl() { counterDict = new ConcurrentDictionary(StringComparer.OrdinalIgnoreCase); } public ushort Increment(string terminalPhoneNo) { - if (counterDict.TryGetValue(terminalPhoneNo, out ushort value)) + if (counterDict.TryGetValue(terminalPhoneNo, out ushort value)) { ushort newValue = ++value; counterDict.TryUpdate(terminalPhoneNo, newValue, value); @@ -23,8 +20,8 @@ namespace JT808.Protocol.Internal } else { - counterDict.TryAdd(terminalPhoneNo, 1); - return 1; + counterDict.TryAdd(terminalPhoneNo, 0); + return 0; } } } diff --git a/src/JT808.Protocol/JT808Header.cs b/src/JT808.Protocol/JT808Header.cs index 354c310..aa9cb93 100644 --- a/src/JT808.Protocol/JT808Header.cs +++ b/src/JT808.Protocol/JT808Header.cs @@ -26,14 +26,14 @@ namespace JT808.Protocol /// 根据安装后终端自身的手机号转换。手机号不足 12 位,则在前补充数字,大陆手机号补充数字 0,港澳台则根据其区号进行位数补充 /// (2019版本)手机号不足 20 位,则在前补充数字 0 /// - public string TerminalPhoneNo { get; set; } + public string TerminalPhoneNo { get; set; } /// /// 消息流水号 /// 发送计数器 /// 占用两个字节,为发送信息的序列号,用于接收方检测是否有信息的丢失,上级平台和下级平台接自己发送数据包的个数计数,互不影响。 /// 程序开始运行时等于零,发送第一帧数据时开始计数,到最大数后自动归零 /// - public ushort MsgNum { get; set; } + public ushort MsgNum { get { return ManualMsgNum ?? 0; } set { ManualMsgNum = value; } } /// /// 手动消息流水号(only test) /// 发送计数器 @@ -63,7 +63,7 @@ namespace JT808.Protocol // 2.消息体属性 jT808Header.MessageBodyProperty = new JT808HeaderMessageBodyProperty(reader.ReadUInt16()); if (jT808Header.MessageBodyProperty.VersionFlag) - { + { // 2019 版本 // 3.协议版本号 jT808Header.ProtocolVersion = reader.ReadByte(); diff --git a/src/JT808.Protocol/JT808Package.cs b/src/JT808.Protocol/JT808Package.cs index 8e00c65..b84b5eb 100644 --- a/src/JT808.Protocol/JT808Package.cs +++ b/src/JT808.Protocol/JT808Package.cs @@ -193,8 +193,7 @@ namespace JT808.Protocol else { // 2.4.消息流水号 - if (value.Header.MsgNum <= 0) - value.Header.MsgNum = config.MsgSNDistributed.Increment(value.Header.TerminalPhoneNo); + value.Header.MsgNum = config.MsgSNDistributed.Increment(value.Header.TerminalPhoneNo); writer.WriteUInt16(value.Header.MsgNum); } // 2.5.判断是否分包