@@ -1,6 +1,6 @@ | |||||
language: csharp | language: csharp | ||||
solution: JT808.DotNetty.sln | solution: JT808.DotNetty.sln | ||||
dotnet: 3.0.100 | |||||
dotnet: 3.1.100 | |||||
os: linux | os: linux | ||||
mono: none | mono: none | ||||
dist: trusty2 | dist: trusty2 | ||||
@@ -128,13 +128,11 @@ static async Task Main(string[] args) | |||||
## 举个栗子2 | ## 举个栗子2 | ||||
1.拉取JT808子模块 | |||||
1.打开项目进行还原编译生成 | |||||
2.打开项目进行还原编译生成 | |||||
2.进入JT808.DotNetty.SimpleServer项目下的Debug目录运行服务端 | |||||
3.进入JT808.DotNetty.SimpleServer项目下的Debug目录运行服务端 | |||||
4.进入JT808.DotNetty.SimpleClient项目下的Debug目录运行客户端 | |||||
3.进入JT808.DotNetty.SimpleClient项目下的Debug目录运行客户端 | |||||
如图所示: | 如图所示: | ||||
 |  |
@@ -2,14 +2,14 @@ | |||||
<PropertyGroup> | <PropertyGroup> | ||||
<OutputType>Exe</OutputType> | <OutputType>Exe</OutputType> | ||||
<TargetFramework>netcoreapp3.0</TargetFramework> | |||||
<TargetFramework>netcoreapp3.1</TargetFramework> | |||||
<LangVersion>7.3</LangVersion> | <LangVersion>7.3</LangVersion> | ||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.0" /> | |||||
<PackageReference Include="WebApiClient.Extensions.DependencyInjection" Version="2.0.3" /> | <PackageReference Include="WebApiClient.Extensions.DependencyInjection" Version="2.0.3" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
@@ -33,6 +33,7 @@ namespace JT808.DotNetty.SimpleClient | |||||
services.AddJT808Configure() | services.AddJT808Configure() | ||||
.AddJT808Client(); | .AddJT808Client(); | ||||
services.AddHostedService<UpService>(); | services.AddHostedService<UpService>(); | ||||
services.AddHostedService<Up2019Service>(); | |||||
}); | }); | ||||
await serverHostBuilder.RunConsoleAsync(); | await serverHostBuilder.RunConsoleAsync(); | ||||
} | } | ||||
@@ -0,0 +1,73 @@ | |||||
using JT808.DotNetty.Client; | |||||
using JT808.Protocol.MessageBody; | |||||
using JT808.Protocol.Enums; | |||||
using JT808.Protocol.Extensions; | |||||
using Microsoft.Extensions.Hosting; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using System.Threading; | |||||
using System.Threading.Tasks; | |||||
namespace JT808.DotNetty.SimpleClient.Services | |||||
{ | |||||
public class Up2019Service : IHostedService | |||||
{ | |||||
private readonly IJT808TcpClientFactory jT808TcpClientFactory; | |||||
public Up2019Service(IJT808TcpClientFactory jT808TcpClientFactory) | |||||
{ | |||||
this.jT808TcpClientFactory = jT808TcpClientFactory; | |||||
} | |||||
public Task StartAsync(CancellationToken cancellationToken) | |||||
{ | |||||
string sim = "22222222222"; | |||||
JT808TcpClient client1 = jT808TcpClientFactory.Create(new JT808DeviceConfig(sim, "127.0.0.1", 808, JT808Version.JTT2019)); | |||||
//1.终端注册 | |||||
client1.Send(JT808MsgId.终端注册.Create2019(sim, new JT808_0x0100() | |||||
{ | |||||
PlateNo = "粤A12346", | |||||
PlateColor = 2, | |||||
AreaID = 0, | |||||
CityOrCountyId = 0, | |||||
MakerId = "Koike002", | |||||
TerminalId = "Koike002", | |||||
TerminalModel = "Koike002" | |||||
})); | |||||
//2.终端鉴权 | |||||
client1.Send(JT808MsgId.终端鉴权.Create2019(sim, new JT808_0x0102() | |||||
{ | |||||
Code = "6666", | |||||
IMEI="123456", | |||||
SoftwareVersion="v1.0.0" | |||||
})); | |||||
Task.Run(() => { | |||||
while (true) | |||||
{ | |||||
var i = 0; | |||||
//3.每5秒发一次 | |||||
client1.Send(JT808MsgId.位置信息汇报.Create2019(sim, new JT808_0x0200() | |||||
{ | |||||
Lat = 110000 + i, | |||||
Lng = 100000 + i, | |||||
GPSTime = DateTime.Now, | |||||
Speed = 50, | |||||
Direction = 30, | |||||
AlarmFlag = 5, | |||||
Altitude = 50, | |||||
StatusFlag = 10 | |||||
})); | |||||
i++; | |||||
Thread.Sleep(5000); | |||||
} | |||||
}); | |||||
return Task.CompletedTask; | |||||
} | |||||
public Task StopAsync(CancellationToken cancellationToken) | |||||
{ | |||||
return Task.CompletedTask; | |||||
} | |||||
} | |||||
} |
@@ -1,5 +1,7 @@ | |||||
using JT808.DotNetty.Client; | using JT808.DotNetty.Client; | ||||
using JT808.Protocol.MessageBody; | using JT808.Protocol.MessageBody; | ||||
using JT808.Protocol.Enums; | |||||
using JT808.Protocol.Extensions; | |||||
using Microsoft.Extensions.Hosting; | using Microsoft.Extensions.Hosting; | ||||
using System; | using System; | ||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
@@ -20,9 +22,10 @@ namespace JT808.DotNetty.SimpleClient.Services | |||||
public Task StartAsync(CancellationToken cancellationToken) | public Task StartAsync(CancellationToken cancellationToken) | ||||
{ | { | ||||
JT808TcpClient client1 = jT808TcpClientFactory.Create(new JT808DeviceConfig("12345678910", "127.0.0.1", 808)); | |||||
string sim = "11111111111"; | |||||
JT808TcpClient client1 = jT808TcpClientFactory.Create(new JT808DeviceConfig(sim, "127.0.0.1", 808)); | |||||
//1.终端注册 | //1.终端注册 | ||||
client1.Send(new JT808_0x0100() | |||||
client1.Send(JT808MsgId.终端注册.Create(sim, new JT808_0x0100() | |||||
{ | { | ||||
PlateNo = "粤A12345", | PlateNo = "粤A12345", | ||||
PlateColor = 2, | PlateColor = 2, | ||||
@@ -31,18 +34,18 @@ namespace JT808.DotNetty.SimpleClient.Services | |||||
MakerId = "Koike001", | MakerId = "Koike001", | ||||
TerminalId = "Koike001", | TerminalId = "Koike001", | ||||
TerminalModel = "Koike001" | TerminalModel = "Koike001" | ||||
}); | |||||
})); | |||||
//2.终端鉴权 | //2.终端鉴权 | ||||
client1.Send(new JT808_0x0102() | |||||
client1.Send(JT808MsgId.终端鉴权.Create(sim, new JT808_0x0102() | |||||
{ | { | ||||
Code = "1234" | Code = "1234" | ||||
}); | |||||
})); | |||||
Task.Run(() => { | Task.Run(() => { | ||||
while (true) | while (true) | ||||
{ | { | ||||
var i = 0; | var i = 0; | ||||
//3.每5000秒发一次 | |||||
client1.Send(new JT808_0x0200() | |||||
//3.每5秒发一次 | |||||
client1.Send(JT808MsgId.位置信息汇报.Create(sim, new JT808_0x0200() | |||||
{ | { | ||||
Lat = 110000 + i, | Lat = 110000 + i, | ||||
Lng = 100000 + i, | Lng = 100000 + i, | ||||
@@ -52,7 +55,7 @@ namespace JT808.DotNetty.SimpleClient.Services | |||||
AlarmFlag = 5, | AlarmFlag = 5, | ||||
Altitude = 50, | Altitude = 50, | ||||
StatusFlag = 10 | StatusFlag = 10 | ||||
}); | |||||
})); | |||||
i++; | i++; | ||||
Thread.Sleep(5000); | Thread.Sleep(5000); | ||||
} | } | ||||
@@ -2,7 +2,7 @@ | |||||
<PropertyGroup> | <PropertyGroup> | ||||
<OutputType>Exe</OutputType> | <OutputType>Exe</OutputType> | ||||
<TargetFramework>netcoreapp3.0</TargetFramework> | |||||
<TargetFramework>netcoreapp3.1</TargetFramework> | |||||
<LangVersion>7.3</LangVersion> | <LangVersion>7.3</LangVersion> | ||||
</PropertyGroup> | </PropertyGroup> | ||||
@@ -10,10 +10,10 @@ | |||||
<ProjectReference Include="..\..\src\JT808.DotNetty.Tcp\JT808.DotNetty.Tcp.csproj" /> | <ProjectReference Include="..\..\src\JT808.DotNetty.Tcp\JT808.DotNetty.Tcp.csproj" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.0" /> | |||||
<PackageReference Include="WebApiClient.Extensions.DependencyInjection" Version="2.0.3" /> | <PackageReference Include="WebApiClient.Extensions.DependencyInjection" Version="2.0.3" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
@@ -20,7 +20,7 @@ | |||||
<PackageReleaseNotes>基于DotNetty实现的JT808DotNetty的抽象库</PackageReleaseNotes> | <PackageReleaseNotes>基于DotNetty实现的JT808DotNetty的抽象库</PackageReleaseNotes> | ||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="JT808" Version="2.1.8" /> | |||||
<PackageReference Include="JT808" Version="2.2.1" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<None Include="..\..\LICENSE" Pack="true" PackagePath="" /> | <None Include="..\..\LICENSE" Pack="true" PackagePath="" /> | ||||
@@ -7,10 +7,10 @@ | |||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.0" /> | |||||
<PackageReference Include="NLog.Extensions.Logging" Version="1.6.1" /> | <PackageReference Include="NLog.Extensions.Logging" Version="1.6.1" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
@@ -1,5 +1,7 @@ | |||||
using JT808.DotNetty.CleintBenchmark.Configs; | using JT808.DotNetty.CleintBenchmark.Configs; | ||||
using JT808.DotNetty.Client; | using JT808.DotNetty.Client; | ||||
using JT808.Protocol.Enums; | |||||
using JT808.Protocol.Extensions; | |||||
using JT808.Protocol.MessageBody; | using JT808.Protocol.MessageBody; | ||||
using Microsoft.Extensions.Hosting; | using Microsoft.Extensions.Hosting; | ||||
using Microsoft.Extensions.Logging; | using Microsoft.Extensions.Logging; | ||||
@@ -54,7 +56,7 @@ namespace JT808.DotNetty.CleintBenchmark.Services | |||||
int Lng = new Random(1000).Next(100000, 180000); | int Lng = new Random(1000).Next(100000, 180000); | ||||
while (!cts.IsCancellationRequested) | while (!cts.IsCancellationRequested) | ||||
{ | { | ||||
client.Send(new JT808_0x0200() | |||||
client.Send(JT808MsgId.位置信息汇报.Create(client.DeviceConfig.TerminalPhoneNo,new JT808_0x0200() | |||||
{ | { | ||||
Lat = lat, | Lat = lat, | ||||
Lng = Lng, | Lng = Lng, | ||||
@@ -64,7 +66,7 @@ namespace JT808.DotNetty.CleintBenchmark.Services | |||||
AlarmFlag = 5, | AlarmFlag = 5, | ||||
Altitude = 50, | Altitude = 50, | ||||
StatusFlag = 10 | StatusFlag = 10 | ||||
}); | |||||
})); | |||||
Thread.Sleep(clientBenchmarkOptions.Interval); | Thread.Sleep(clientBenchmarkOptions.Interval); | ||||
} | } | ||||
}, i,cts.Token); | }, i,cts.Token); | ||||
@@ -1,12 +1,10 @@ | |||||
using DotNetty.Buffers; | using DotNetty.Buffers; | ||||
using DotNetty.Codecs; | using DotNetty.Codecs; | ||||
using System.Collections.Generic; | |||||
using JT808.Protocol; | using JT808.Protocol; | ||||
using DotNetty.Transport.Channels; | using DotNetty.Transport.Channels; | ||||
using Microsoft.Extensions.Logging; | using Microsoft.Extensions.Logging; | ||||
using JT808.DotNetty.Client.Metadata; | using JT808.DotNetty.Client.Metadata; | ||||
using JT808.DotNetty.Client.Services; | using JT808.DotNetty.Client.Services; | ||||
using JT808.Protocol.Interfaces; | |||||
namespace JT808.DotNetty.Client.Codecs | namespace JT808.DotNetty.Client.Codecs | ||||
{ | { | ||||
@@ -31,7 +29,7 @@ namespace JT808.DotNetty.Client.Codecs | |||||
{ | { | ||||
try | try | ||||
{ | { | ||||
var sendData = JT808Serializer.Serialize(message.Package, message.MinBufferSize); | |||||
var sendData = JT808Serializer.Serialize(message.Package, minBufferSize:message.MinBufferSize); | |||||
output.WriteBytes(sendData); | output.WriteBytes(sendData); | ||||
jT808SendAtomicCounterService.MsgSuccessIncrement(); | jT808SendAtomicCounterService.MsgSuccessIncrement(); | ||||
} | } | ||||
@@ -1,5 +1,7 @@ | |||||
using DotNetty.Handlers.Timeout; | using DotNetty.Handlers.Timeout; | ||||
using DotNetty.Transport.Channels; | using DotNetty.Transport.Channels; | ||||
using JT808.Protocol.Enums; | |||||
using JT808.Protocol.Extensions; | |||||
using JT808.Protocol.MessageBody; | using JT808.Protocol.MessageBody; | ||||
using Microsoft.Extensions.Logging; | using Microsoft.Extensions.Logging; | ||||
using System; | using System; | ||||
@@ -77,7 +79,14 @@ namespace JT808.DotNetty.Client.Handlers | |||||
{ | { | ||||
string channelId = context.Channel.Id.AsShortText(); | string channelId = context.Channel.Id.AsShortText(); | ||||
logger.LogInformation($"{idleStateEvent.State.ToString()}>>>{channelId}"); | logger.LogInformation($"{idleStateEvent.State.ToString()}>>>{channelId}"); | ||||
jT808TcpClient.Send(new JT808_0x0002()); | |||||
if(jT808TcpClient.DeviceConfig.Version== JT808Version.JTT2019) | |||||
{ | |||||
jT808TcpClient.Send(JT808MsgId.终端心跳.Create2019(jT808TcpClient.DeviceConfig.TerminalPhoneNo,new JT808_0x0002())); | |||||
} | |||||
else | |||||
{ | |||||
jT808TcpClient.Send(JT808MsgId.终端心跳.Create(jT808TcpClient.DeviceConfig.TerminalPhoneNo, new JT808_0x0002())); | |||||
} | |||||
} | } | ||||
} | } | ||||
base.UserEventTriggered(context, evt); | base.UserEventTriggered(context, evt); | ||||
@@ -87,7 +96,6 @@ namespace JT808.DotNetty.Client.Handlers | |||||
{ | { | ||||
string channelId = context.Channel.Id.AsShortText(); | string channelId = context.Channel.Id.AsShortText(); | ||||
logger.LogError(exception,$"{channelId} {exception.Message}" ); | logger.LogError(exception,$"{channelId} {exception.Message}" ); | ||||
context.CloseAsync(); | context.CloseAsync(); | ||||
} | } | ||||
} | } | ||||
@@ -24,11 +24,11 @@ | |||||
<PackageReference Include="DotNetty.Handlers" Version="0.6.0" /> | <PackageReference Include="DotNetty.Handlers" Version="0.6.0" /> | ||||
<PackageReference Include="DotNetty.Transport.Libuv" Version="0.6.0" /> | <PackageReference Include="DotNetty.Transport.Libuv" Version="0.6.0" /> | ||||
<PackageReference Include="DotNetty.Codecs" Version="0.6.0" /> | <PackageReference Include="DotNetty.Codecs" Version="0.6.0" /> | ||||
<PackageReference Include="JT808" Version="2.1.8" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.0.0" /> | |||||
<PackageReference Include="Newtonsoft.Json" Version="12.0.2" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options" Version="3.0.0" /> | |||||
<PackageReference Include="JT808" Version="2.2.1" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.0" /> | |||||
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options" Version="3.1.0" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<None Include="..\..\LICENSE" Pack="true" PackagePath="" /> | <None Include="..\..\LICENSE" Pack="true" PackagePath="" /> | ||||
@@ -1,4 +1,5 @@ | |||||
using JT808.Protocol; | using JT808.Protocol; | ||||
using JT808.Protocol.Enums; | |||||
using JT808.Protocol.Interfaces; | using JT808.Protocol.Interfaces; | ||||
using System; | using System; | ||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
@@ -8,13 +9,15 @@ namespace JT808.DotNetty.Client | |||||
{ | { | ||||
public class JT808DeviceConfig | public class JT808DeviceConfig | ||||
{ | { | ||||
public JT808DeviceConfig(string terminalPhoneNo, string tcpHost,int tcpPort) | |||||
public JT808DeviceConfig(string terminalPhoneNo, string tcpHost,int tcpPort, JT808Version version= JT808Version.JTT2013) | |||||
{ | { | ||||
TerminalPhoneNo = terminalPhoneNo; | TerminalPhoneNo = terminalPhoneNo; | ||||
TcpHost = tcpHost; | TcpHost = tcpHost; | ||||
TcpPort = tcpPort; | TcpPort = tcpPort; | ||||
MsgSNDistributed = new JT808ClientMsgSNDistributedImpl(); | MsgSNDistributed = new JT808ClientMsgSNDistributedImpl(); | ||||
Version = version; | |||||
} | } | ||||
public JT808Version Version { get; private set; } | |||||
public string TerminalPhoneNo { get; private set; } | public string TerminalPhoneNo { get; private set; } | ||||
public string TcpHost { get; private set; } | public string TcpHost { get; private set; } | ||||
public int TcpPort { get; private set; } | public int TcpPort { get; private set; } | ||||
@@ -11,93 +11,13 @@ namespace JT808.DotNetty.Client | |||||
{ | { | ||||
public static class JT808TcpClientExtensions | public static class JT808TcpClientExtensions | ||||
{ | { | ||||
public static void Send(this JT808TcpClient client, JT808Header header, JT808Bodies bodies, int minBufferSize = 1024) | |||||
public static void Send(this JT808TcpClient client, JT808Package package, int minBufferSize = 4096) | |||||
{ | { | ||||
JT808Package package = new JT808Package(); | |||||
package.Header = header; | |||||
package.Bodies = bodies; | |||||
package.Header.TerminalPhoneNo = client.DeviceConfig.TerminalPhoneNo; | package.Header.TerminalPhoneNo = client.DeviceConfig.TerminalPhoneNo; | ||||
package.Header.MsgNum = client.DeviceConfig.MsgSNDistributed.Increment(); | package.Header.MsgNum = client.DeviceConfig.MsgSNDistributed.Increment(); | ||||
JT808ClientRequest request = new JT808ClientRequest(package, minBufferSize); | JT808ClientRequest request = new JT808ClientRequest(package, minBufferSize); | ||||
client.Send(request); | client.Send(request); | ||||
} | } | ||||
/// <summary> | |||||
/// 终端通用应答 | |||||
/// </summary> | |||||
/// <param name="client"></param> | |||||
/// <param name="bodies"></param> | |||||
/// <param name="minBufferSize"></param> | |||||
public static void Send(this JT808TcpClient client, JT808_0x0001 bodies, int minBufferSize = 100) | |||||
{ | |||||
JT808Header header = new JT808Header(); | |||||
header.MsgId = JT808MsgId.终端通用应答.ToUInt16Value(); | |||||
client.Send(header, bodies, minBufferSize); | |||||
} | |||||
/// <summary> | |||||
/// 终端心跳 | |||||
/// </summary> | |||||
/// <param name="client"></param> | |||||
/// <param name="bodies"></param> | |||||
/// <param name="minBufferSize"></param> | |||||
public static void Send(this JT808TcpClient client, JT808_0x0002 bodies, int minBufferSize = 100) | |||||
{ | |||||
JT808Header header = new JT808Header(); | |||||
header.MsgId = JT808MsgId.终端心跳.ToUInt16Value(); | |||||
client.Send(header, bodies, minBufferSize); | |||||
} | |||||
/// <summary> | |||||
/// 终端注销 | |||||
/// </summary> | |||||
/// <param name="client"></param> | |||||
/// <param name="bodies"></param> | |||||
/// <param name="minBufferSize"></param> | |||||
public static void Send(this JT808TcpClient client, JT808_0x0003 bodies, int minBufferSize = 100) | |||||
{ | |||||
JT808Header header = new JT808Header(); | |||||
header.MsgId = JT808MsgId.终端注销.ToUInt16Value(); | |||||
client.Send(header, bodies, minBufferSize); | |||||
} | |||||
/// <summary> | |||||
/// 终端鉴权 | |||||
/// </summary> | |||||
/// <param name="client"></param> | |||||
/// <param name="bodies"></param> | |||||
/// <param name="minBufferSize"></param> | |||||
public static void Send(this JT808TcpClient client, JT808_0x0102 bodies, int minBufferSize = 100) | |||||
{ | |||||
JT808Header header = new JT808Header(); | |||||
header.MsgId = JT808MsgId.终端鉴权.ToUInt16Value(); | |||||
client.Send(header, bodies, minBufferSize); | |||||
} | |||||
/// <summary> | |||||
/// 终端注册 | |||||
/// </summary> | |||||
/// <param name="client"></param> | |||||
/// <param name="bodies"></param> | |||||
/// <param name="minBufferSize"></param> | |||||
public static void Send(this JT808TcpClient client, JT808_0x0100 bodies, int minBufferSize = 100) | |||||
{ | |||||
JT808Header header = new JT808Header(); | |||||
header.MsgId = JT808MsgId.终端注册.ToUInt16Value(); | |||||
client.Send(header, bodies, minBufferSize); | |||||
} | |||||
/// <summary> | |||||
/// 位置信息汇报 | |||||
/// </summary> | |||||
/// <param name="client"></param> | |||||
/// <param name="bodies"></param> | |||||
/// <param name="minBufferSize"></param> | |||||
public static void Send(this JT808TcpClient client, JT808_0x0200 bodies, int minBufferSize = 200) | |||||
{ | |||||
JT808Header header = new JT808Header(); | |||||
header.MsgId = JT808MsgId.位置信息汇报.ToUInt16Value(); | |||||
client.Send(header, bodies, minBufferSize); | |||||
} | |||||
} | } | ||||
} | } |
@@ -31,7 +31,7 @@ namespace JT808.DotNetty.Core.Codecs | |||||
{ | { | ||||
try | try | ||||
{ | { | ||||
var sendData = JT808Serializer.Serialize(message.Package, message.MinBufferSize); | |||||
var sendData = JT808Serializer.Serialize(message.Package, minBufferSize: message.MinBufferSize); | |||||
output.WriteBytes(Unpooled.WrappedBuffer(sendData)); | output.WriteBytes(Unpooled.WrappedBuffer(sendData)); | ||||
} | } | ||||
catch (JT808.Protocol.Exceptions.JT808Exception ex) | catch (JT808.Protocol.Exceptions.JT808Exception ex) | ||||
@@ -15,15 +15,19 @@ namespace JT808.DotNetty.Core.Impls | |||||
internal class JT808MsgReplyConsumerDefaultImpl : IJT808MsgReplyConsumer | internal class JT808MsgReplyConsumerDefaultImpl : IJT808MsgReplyConsumer | ||||
{ | { | ||||
private readonly JT808MsgService JT808MsgService; | private readonly JT808MsgService JT808MsgService; | ||||
private readonly JT808Serializer JT808Serializer; | private readonly JT808Serializer JT808Serializer; | ||||
private Dictionary<ushort, Func<JT808HeaderPackage, byte[]>> HandlerDict; | |||||
private Dictionary<ushort, MsgIdMethodDelegate> HandlerDict; | |||||
private delegate byte[] MsgIdMethodDelegate(JT808HeaderPackage package); | |||||
public JT808MsgReplyConsumerDefaultImpl( | public JT808MsgReplyConsumerDefaultImpl( | ||||
IJT808Config jT808Config, | IJT808Config jT808Config, | ||||
JT808MsgService jT808MsgService) | JT808MsgService jT808MsgService) | ||||
{ | { | ||||
JT808MsgService = jT808MsgService; | JT808MsgService = jT808MsgService; | ||||
this.JT808Serializer = jT808Config.GetSerializer(); | this.JT808Serializer = jT808Config.GetSerializer(); | ||||
HandlerDict = new Dictionary<ushort, Func<JT808HeaderPackage, byte[]>> { | |||||
HandlerDict = new Dictionary<ushort, MsgIdMethodDelegate> { | |||||
{JT808MsgId.终端通用应答.ToUInt16Value(), Msg0x0001}, | {JT808MsgId.终端通用应答.ToUInt16Value(), Msg0x0001}, | ||||
{JT808MsgId.终端鉴权.ToUInt16Value(), Msg0x0102}, | {JT808MsgId.终端鉴权.ToUInt16Value(), Msg0x0102}, | ||||
{JT808MsgId.终端心跳.ToUInt16Value(), Msg0x0002}, | {JT808MsgId.终端心跳.ToUInt16Value(), Msg0x0002}, | ||||
@@ -97,12 +101,24 @@ namespace JT808.DotNetty.Core.Impls | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public byte[] Msg0x0002(JT808HeaderPackage request) | public byte[] Msg0x0002(JT808HeaderPackage request) | ||||
{ | { | ||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
if(request.Version== JT808Version.JTT2019) | |||||
{ | { | ||||
MsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create_平台通用应答_2019(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
{ | |||||
AckMsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
else | |||||
{ | |||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
{ | |||||
AckMsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 终端注销 | /// 终端注销 | ||||
@@ -111,12 +127,24 @@ namespace JT808.DotNetty.Core.Impls | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public byte[] Msg0x0003(JT808HeaderPackage request) | public byte[] Msg0x0003(JT808HeaderPackage request) | ||||
{ | { | ||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
if (request.Version == JT808Version.JTT2019) | |||||
{ | { | ||||
MsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create_平台通用应答_2019(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
{ | |||||
AckMsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
else | |||||
{ | |||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
{ | |||||
AckMsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 终端注册 | /// 终端注册 | ||||
@@ -125,12 +153,24 @@ namespace JT808.DotNetty.Core.Impls | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public byte[] Msg0x0100(JT808HeaderPackage request) | public byte[] Msg0x0100(JT808HeaderPackage request) | ||||
{ | { | ||||
return JT808Serializer.Serialize(JT808MsgId.终端注册应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8100() | |||||
if (request.Version == JT808Version.JTT2019) | |||||
{ | { | ||||
Code = "J" + request.Header.TerminalPhoneNo, | |||||
JT808TerminalRegisterResult = JT808TerminalRegisterResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
return JT808Serializer.Serialize(JT808MsgId.终端注册应答.Create_终端注册应答_2019(request.Header.TerminalPhoneNo, new JT808_0x8100() | |||||
{ | |||||
Code = "J" + request.Header.TerminalPhoneNo, | |||||
JT808TerminalRegisterResult = JT808TerminalRegisterResult.成功, | |||||
AckMsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
else | |||||
{ | |||||
return JT808Serializer.Serialize(JT808MsgId.终端注册应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8100() | |||||
{ | |||||
Code = "J" + request.Header.TerminalPhoneNo, | |||||
JT808TerminalRegisterResult = JT808TerminalRegisterResult.成功, | |||||
AckMsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 终端鉴权 | /// 终端鉴权 | ||||
@@ -139,12 +179,24 @@ namespace JT808.DotNetty.Core.Impls | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public byte[] Msg0x0102(JT808HeaderPackage request) | public byte[] Msg0x0102(JT808HeaderPackage request) | ||||
{ | { | ||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
if (request.Version == JT808Version.JTT2019) | |||||
{ | { | ||||
MsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create_平台通用应答_2019(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
{ | |||||
AckMsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
else | |||||
{ | |||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
{ | |||||
AckMsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 位置信息汇报 | /// 位置信息汇报 | ||||
@@ -153,12 +205,24 @@ namespace JT808.DotNetty.Core.Impls | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public byte[] Msg0x0200(JT808HeaderPackage request) | public byte[] Msg0x0200(JT808HeaderPackage request) | ||||
{ | { | ||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
if (request.Version == JT808Version.JTT2019) | |||||
{ | { | ||||
MsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create_平台通用应答_2019(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
{ | |||||
AckMsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
else | |||||
{ | |||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
{ | |||||
AckMsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 定位数据批量上传 | /// 定位数据批量上传 | ||||
@@ -167,12 +231,24 @@ namespace JT808.DotNetty.Core.Impls | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public byte[] Msg0x0704(JT808HeaderPackage request) | public byte[] Msg0x0704(JT808HeaderPackage request) | ||||
{ | { | ||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
if (request.Version == JT808Version.JTT2019) | |||||
{ | { | ||||
MsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create_平台通用应答_2019(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
{ | |||||
AckMsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
else | |||||
{ | |||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
{ | |||||
AckMsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 数据上行透传 | /// 数据上行透传 | ||||
@@ -181,12 +257,24 @@ namespace JT808.DotNetty.Core.Impls | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public byte[] Msg0x0900(JT808HeaderPackage request) | public byte[] Msg0x0900(JT808HeaderPackage request) | ||||
{ | { | ||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
if (request.Version == JT808Version.JTT2019) | |||||
{ | { | ||||
MsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create_平台通用应答_2019(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
{ | |||||
AckMsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
else | |||||
{ | |||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
{ | |||||
AckMsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -25,10 +25,10 @@ | |||||
<PackageReference Include="DotNetty.Transport.Libuv" Version="0.6.0" /> | <PackageReference Include="DotNetty.Transport.Libuv" Version="0.6.0" /> | ||||
<PackageReference Include="DotNetty.Codecs.Http" Version="0.6.0" /> | <PackageReference Include="DotNetty.Codecs.Http" Version="0.6.0" /> | ||||
<PackageReference Include="DotNetty.Codecs" Version="0.6.0" /> | <PackageReference Include="DotNetty.Codecs" Version="0.6.0" /> | ||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options" Version="3.0.0" /> | |||||
<PackageReference Include="System.Text.Json" Version="4.6.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options" Version="3.1.0" /> | |||||
<PackageReference Include="System.Text.Json" Version="4.7.0" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
@@ -1,23 +0,0 @@ | |||||
using JT808.Protocol; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Reflection; | |||||
namespace JT808.DotNetty.Core.Metadata | |||||
{ | |||||
public class JT808Request | |||||
{ | |||||
public JT808HeaderPackage Package { get; } | |||||
/// <summary> | |||||
/// 用于消息发送 | |||||
/// </summary> | |||||
public byte[] OriginalPackage { get;} | |||||
public JT808Request(JT808HeaderPackage package, byte[] originalPackage) | |||||
{ | |||||
Package = package; | |||||
OriginalPackage = originalPackage; | |||||
} | |||||
} | |||||
} |
@@ -1,31 +0,0 @@ | |||||
using JT808.DotNetty.Core.Interfaces; | |||||
using JT808.Protocol; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Reflection; | |||||
namespace JT808.DotNetty.Core.Metadata | |||||
{ | |||||
public class JT808Response: IJT808Reply | |||||
{ | |||||
public JT808Package Package { get; set; } | |||||
public byte[] HexData { get; set; } | |||||
public int MinBufferSize { get; set; } | |||||
public JT808Response() | |||||
{ | |||||
} | |||||
public JT808Response(JT808Package package, int minBufferSize = 1024) | |||||
{ | |||||
Package = package; | |||||
MinBufferSize = minBufferSize; | |||||
} | |||||
public JT808Response(byte[] hexData) | |||||
{ | |||||
HexData = hexData; | |||||
} | |||||
} | |||||
} |
@@ -20,12 +20,12 @@ | |||||
<PackageReleaseNotes>基于Kafka的JT808消息发布与订阅</PackageReleaseNotes> | <PackageReleaseNotes>基于Kafka的JT808消息发布与订阅</PackageReleaseNotes> | ||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Confluent.Kafka" Version="1.2.1" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.0.0" /> | |||||
<PackageReference Include="Confluent.Kafka" Version="1.3.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.0" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<ProjectReference Include="..\JT808.DotNetty.Abstractions\JT808.DotNetty.Abstractions.csproj" /> | <ProjectReference Include="..\JT808.DotNetty.Abstractions\JT808.DotNetty.Abstractions.csproj" /> | ||||
@@ -2,13 +2,13 @@ | |||||
<PropertyGroup> | <PropertyGroup> | ||||
<OutputType>Exe</OutputType> | <OutputType>Exe</OutputType> | ||||
<TargetFramework>netcoreapp3.0</TargetFramework> | |||||
<TargetFramework>netcoreapp3.1</TargetFramework> | |||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.0" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
@@ -2,13 +2,13 @@ | |||||
<PropertyGroup> | <PropertyGroup> | ||||
<OutputType>Exe</OutputType> | <OutputType>Exe</OutputType> | ||||
<TargetFramework>netcoreapp3.0</TargetFramework> | |||||
<TargetFramework>netcoreapp3.1</TargetFramework> | |||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.0" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
@@ -2,13 +2,13 @@ | |||||
<PropertyGroup> | <PropertyGroup> | ||||
<OutputType>Exe</OutputType> | <OutputType>Exe</OutputType> | ||||
<TargetFramework>netcoreapp3.0</TargetFramework> | |||||
<TargetFramework>netcoreapp3.1</TargetFramework> | |||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.0" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
@@ -2,7 +2,7 @@ | |||||
<PropertyGroup> | <PropertyGroup> | ||||
<OutputType>Exe</OutputType> | <OutputType>Exe</OutputType> | ||||
<TargetFramework>netcoreapp3.0</TargetFramework> | |||||
<TargetFramework>netcoreapp3.1</TargetFramework> | |||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
@@ -2,13 +2,13 @@ | |||||
<PropertyGroup> | <PropertyGroup> | ||||
<OutputType>Exe</OutputType> | <OutputType>Exe</OutputType> | ||||
<TargetFramework>netcoreapp3.0</TargetFramework> | |||||
<TargetFramework>netcoreapp3.1</TargetFramework> | |||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.0" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
@@ -2,13 +2,13 @@ | |||||
<PropertyGroup> | <PropertyGroup> | ||||
<OutputType>Exe</OutputType> | <OutputType>Exe</OutputType> | ||||
<TargetFramework>netcoreapp3.0</TargetFramework> | |||||
<TargetFramework>netcoreapp3.1</TargetFramework> | |||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.0" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
@@ -23,7 +23,7 @@ | |||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.1.0" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<ProjectReference Include="..\..\JT808.DotNetty.Abstractions\JT808.DotNetty.Abstractions.csproj" /> | <ProjectReference Include="..\..\JT808.DotNetty.Abstractions\JT808.DotNetty.Abstractions.csproj" /> | ||||
@@ -22,9 +22,9 @@ | |||||
<PackageLicenseFile>LICENSE</PackageLicenseFile> | <PackageLicenseFile>LICENSE</PackageLicenseFile> | ||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.0" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<None Include="..\..\..\LICENSE" Pack="true" PackagePath="" /> | <None Include="..\..\..\LICENSE" Pack="true" PackagePath="" /> | ||||
@@ -21,9 +21,9 @@ | |||||
<PackageLicenseFile>LICENSE</PackageLicenseFile> | <PackageLicenseFile>LICENSE</PackageLicenseFile> | ||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.0" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<ProjectReference Include="..\..\JT808.DotNetty.Abstractions\JT808.DotNetty.Abstractions.csproj" /> | <ProjectReference Include="..\..\JT808.DotNetty.Abstractions\JT808.DotNetty.Abstractions.csproj" /> | ||||
@@ -11,8 +11,9 @@ namespace JT808.DotNetty.ReplyMessage | |||||
{ | { | ||||
public class JT808DotNettyReplyMessageService | public class JT808DotNettyReplyMessageService | ||||
{ | { | ||||
protected Dictionary<ushort, Func<JT808HeaderPackage, byte[]>> HandlerDict { get; } | |||||
protected Dictionary<ushort, MsgIdMethodDelegate> HandlerDict { get; } | |||||
protected delegate byte[] MsgIdMethodDelegate(JT808HeaderPackage package); | |||||
protected JT808Serializer JT808Serializer { get; } | protected JT808Serializer JT808Serializer { get; } | ||||
protected IJT808MsgReplyProducer JT808MsgReplyProducer { get; } | protected IJT808MsgReplyProducer JT808MsgReplyProducer { get; } | ||||
public JT808DotNettyReplyMessageService( | public JT808DotNettyReplyMessageService( | ||||
@@ -21,7 +22,7 @@ namespace JT808.DotNetty.ReplyMessage | |||||
{ | { | ||||
this.JT808Serializer = jT808Config.GetSerializer(); | this.JT808Serializer = jT808Config.GetSerializer(); | ||||
this.JT808MsgReplyProducer = jT808MsgReplyProducer; | this.JT808MsgReplyProducer = jT808MsgReplyProducer; | ||||
HandlerDict = new Dictionary<ushort, Func<JT808HeaderPackage, byte[]>> { | |||||
HandlerDict = new Dictionary<ushort, MsgIdMethodDelegate> { | |||||
{JT808MsgId.终端通用应答.ToUInt16Value(), Msg0x0001}, | {JT808MsgId.终端通用应答.ToUInt16Value(), Msg0x0001}, | ||||
{JT808MsgId.终端鉴权.ToUInt16Value(), Msg0x0102}, | {JT808MsgId.终端鉴权.ToUInt16Value(), Msg0x0102}, | ||||
{JT808MsgId.终端心跳.ToUInt16Value(), Msg0x0002}, | {JT808MsgId.终端心跳.ToUInt16Value(), Msg0x0002}, | ||||
@@ -59,7 +60,7 @@ namespace JT808.DotNetty.ReplyMessage | |||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x0001(JT808HeaderPackage request) | |||||
public byte[] Msg0x0001(JT808HeaderPackage request) | |||||
{ | { | ||||
return null; | return null; | ||||
} | } | ||||
@@ -68,98 +69,182 @@ namespace JT808.DotNetty.ReplyMessage | |||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x0002(JT808HeaderPackage request) | |||||
public byte[] Msg0x0002(JT808HeaderPackage request) | |||||
{ | { | ||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
if (request.Version == JT808Version.JTT2019) | |||||
{ | { | ||||
MsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create_平台通用应答_2019(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
{ | |||||
AckMsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
else | |||||
{ | |||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
{ | |||||
AckMsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 终端注销 | /// 终端注销 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x0003(JT808HeaderPackage request) | |||||
public byte[] Msg0x0003(JT808HeaderPackage request) | |||||
{ | { | ||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
if (request.Version == JT808Version.JTT2019) | |||||
{ | { | ||||
MsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create_平台通用应答_2019(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
{ | |||||
AckMsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
else | |||||
{ | |||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
{ | |||||
AckMsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 终端注册 | /// 终端注册 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x0100(JT808HeaderPackage request) | |||||
public byte[] Msg0x0100(JT808HeaderPackage request) | |||||
{ | { | ||||
return JT808Serializer.Serialize(JT808MsgId.终端注册应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8100() | |||||
if (request.Version == JT808Version.JTT2019) | |||||
{ | { | ||||
Code = "J" + request.Header.TerminalPhoneNo, | |||||
JT808TerminalRegisterResult = JT808TerminalRegisterResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
return JT808Serializer.Serialize(JT808MsgId.终端注册应答.Create_终端注册应答_2019(request.Header.TerminalPhoneNo, new JT808_0x8100() | |||||
{ | |||||
Code = "J" + request.Header.TerminalPhoneNo, | |||||
JT808TerminalRegisterResult = JT808TerminalRegisterResult.成功, | |||||
AckMsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
else | |||||
{ | |||||
return JT808Serializer.Serialize(JT808MsgId.终端注册应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8100() | |||||
{ | |||||
Code = "J" + request.Header.TerminalPhoneNo, | |||||
JT808TerminalRegisterResult = JT808TerminalRegisterResult.成功, | |||||
AckMsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 终端鉴权 | /// 终端鉴权 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x0102(JT808HeaderPackage request) | |||||
public byte[] Msg0x0102(JT808HeaderPackage request) | |||||
{ | { | ||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
if (request.Version == JT808Version.JTT2019) | |||||
{ | |||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create_平台通用应答_2019(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
{ | |||||
AckMsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
else | |||||
{ | { | ||||
MsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
{ | |||||
AckMsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 位置信息汇报 | /// 位置信息汇报 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x0200(JT808HeaderPackage request) | |||||
public byte[] Msg0x0200(JT808HeaderPackage request) | |||||
{ | { | ||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
if (request.Version == JT808Version.JTT2019) | |||||
{ | |||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create_平台通用应答_2019(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
{ | |||||
AckMsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
else | |||||
{ | { | ||||
MsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
{ | |||||
AckMsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 定位数据批量上传 | /// 定位数据批量上传 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x0704(JT808HeaderPackage request) | |||||
public byte[] Msg0x0704(JT808HeaderPackage request) | |||||
{ | { | ||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
if (request.Version == JT808Version.JTT2019) | |||||
{ | { | ||||
MsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create_平台通用应答_2019(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
{ | |||||
AckMsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
else | |||||
{ | |||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
{ | |||||
AckMsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 数据上行透传 | /// 数据上行透传 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x0900(JT808HeaderPackage request) | |||||
public byte[] Msg0x0900(JT808HeaderPackage request) | |||||
{ | { | ||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
if (request.Version == JT808Version.JTT2019) | |||||
{ | |||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create_平台通用应答_2019(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
{ | |||||
AckMsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
else | |||||
{ | { | ||||
MsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
return JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
{ | |||||
AckMsgId = request.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = request.Header.MsgNum | |||||
})); | |||||
} | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -22,9 +22,9 @@ | |||||
<PackageLicenseFile>LICENSE</PackageLicenseFile> | <PackageLicenseFile>LICENSE</PackageLicenseFile> | ||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.0" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<None Include="..\..\..\LICENSE" Pack="true" PackagePath="" /> | <None Include="..\..\..\LICENSE" Pack="true" PackagePath="" /> | ||||
@@ -21,10 +21,10 @@ | |||||
<PackageLicenseFile>LICENSE</PackageLicenseFile> | <PackageLicenseFile>LICENSE</PackageLicenseFile> | ||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.0.0" /> | |||||
<PackageReference Include="CSRedisCore" Version="3.1.10" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.0" /> | |||||
<PackageReference Include="CSRedisCore" Version="3.2.0" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<ProjectReference Include="..\..\JT808.DotNetty.Abstractions\JT808.DotNetty.Abstractions.csproj" /> | <ProjectReference Include="..\..\JT808.DotNetty.Abstractions\JT808.DotNetty.Abstractions.csproj" /> | ||||
@@ -25,10 +25,10 @@ | |||||
<PackageReference Include="DotNetty.Buffers" Version="0.6.0" /> | <PackageReference Include="DotNetty.Buffers" Version="0.6.0" /> | ||||
<PackageReference Include="DotNetty.Handlers" Version="0.6.0" /> | <PackageReference Include="DotNetty.Handlers" Version="0.6.0" /> | ||||
<PackageReference Include="DotNetty.Transport" Version="0.6.0" /> | <PackageReference Include="DotNetty.Transport" Version="0.6.0" /> | ||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.0.0" /> | |||||
<PackageReference Include="Polly" Version="7.1.1" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.0" /> | |||||
<PackageReference Include="Polly" Version="7.2.0" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<ProjectReference Include="..\..\JT808.DotNetty.Abstractions\JT808.DotNetty.Abstractions.csproj" /> | <ProjectReference Include="..\..\JT808.DotNetty.Abstractions\JT808.DotNetty.Abstractions.csproj" /> | ||||
@@ -47,7 +47,7 @@ namespace JT808.DotNetty.Tcp.Handlers | |||||
//解析到头部,然后根据具体的消息Id通过队列去进行消费 | //解析到头部,然后根据具体的消息Id通过队列去进行消费 | ||||
//要是一定要解析到数据体可以在JT808MsgIdHandlerBase类中根据具体的消息, | //要是一定要解析到数据体可以在JT808MsgIdHandlerBase类中根据具体的消息, | ||||
//解析具体的消息体,具体调用JT808Serializer.Deserialize<T> | //解析具体的消息体,具体调用JT808Serializer.Deserialize<T> | ||||
JT808HeaderPackage jT808HeaderPackage = JT808Serializer.Deserialize<JT808HeaderPackage>(msg); | |||||
JT808HeaderPackage jT808HeaderPackage = JT808Serializer.HeaderDeserialize(msg); | |||||
if (logger.IsEnabled(LogLevel.Trace)) | if (logger.IsEnabled(LogLevel.Trace)) | ||||
{ | { | ||||
logger.LogTrace($"accept package success count=>{jT808AtomicCounterService.MsgSuccessCount.ToString()},accept msg=>{ByteBufferUtil.HexDump(msg)}"); | logger.LogTrace($"accept package success count=>{jT808AtomicCounterService.MsgSuccessCount.ToString()},accept msg=>{ByteBufferUtil.HexDump(msg)}"); | ||||
@@ -19,14 +19,6 @@ | |||||
<Description>基于DotNetty实现的JT808DotNetty的Tcp服务</Description> | <Description>基于DotNetty实现的JT808DotNetty的Tcp服务</Description> | ||||
<PackageReleaseNotes>基于DotNetty实现的JT808DotNetty的Tcp服务</PackageReleaseNotes> | <PackageReleaseNotes>基于DotNetty实现的JT808DotNetty的Tcp服务</PackageReleaseNotes> | ||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | |||||
<PackageReference Include="DotNetty.Buffers" Version="0.6.0" /> | |||||
<PackageReference Include="DotNetty.Codecs" Version="0.6.0" /> | |||||
<PackageReference Include="DotNetty.Handlers" Version="0.6.0" /> | |||||
<PackageReference Include="DotNetty.Transport.Libuv" Version="0.6.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options" Version="3.0.0" /> | |||||
</ItemGroup> | |||||
<ItemGroup> | <ItemGroup> | ||||
<ProjectReference Include="..\JT808.DotNetty.Core\JT808.DotNetty.Core.csproj" /> | <ProjectReference Include="..\JT808.DotNetty.Core\JT808.DotNetty.Core.csproj" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
@@ -1,19 +1,25 @@ | |||||
<Project Sdk="Microsoft.NET.Sdk"> | <Project Sdk="Microsoft.NET.Sdk"> | ||||
<PropertyGroup> | <PropertyGroup> | ||||
<TargetFramework>netcoreapp3.0</TargetFramework> | |||||
<TargetFramework>netcoreapp3.1</TargetFramework> | |||||
<IsPackable>false</IsPackable> | <IsPackable>false</IsPackable> | ||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.3.0" /> | |||||
<PackageReference Include="xunit" Version="2.4.0" /> | |||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" /> | |||||
<PackageReference Include="coverlet.collector" Version="1.0.1" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.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> | |||||
<PackageReference Include="coverlet.collector" Version="1.1.0"> | |||||
<PrivateAssets>all</PrivateAssets> | |||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | |||||
</PackageReference> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
@@ -8,13 +8,13 @@ | |||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Http" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.0.0" /> | |||||
<PackageReference Include="NLog" Version="4.6.7" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Http" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.0" /> | |||||
<PackageReference Include="NLog" Version="4.6.8" /> | |||||
<PackageReference Include="NLog.Extensions.Logging" Version="1.6.1" /> | <PackageReference Include="NLog.Extensions.Logging" Version="1.6.1" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
@@ -1,17 +1,17 @@ | |||||
<Project Sdk="Microsoft.NET.Sdk"> | <Project Sdk="Microsoft.NET.Sdk"> | ||||
<PropertyGroup> | <PropertyGroup> | ||||
<TargetFramework>netcoreapp3.0</TargetFramework> | |||||
<TargetFramework>netcoreapp3.1</TargetFramework> | |||||
<IsPackable>false</IsPackable> | <IsPackable>false</IsPackable> | ||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.0" /> | |||||
<PackageReference Include="xunit" Version="2.4.1" /> | <PackageReference Include="xunit" Version="2.4.1" /> | ||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1"> | <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1"> | ||||
<PrivateAssets>all</PrivateAssets> | <PrivateAssets>all</PrivateAssets> | ||||
@@ -1,15 +1,15 @@ | |||||
<Project Sdk="Microsoft.NET.Sdk"> | <Project Sdk="Microsoft.NET.Sdk"> | ||||
<PropertyGroup> | <PropertyGroup> | ||||
<TargetFramework>netcoreapp3.0</TargetFramework> | |||||
<TargetFramework>netcoreapp3.1</TargetFramework> | |||||
<IsPackable>false</IsPackable> | <IsPackable>false</IsPackable> | ||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.0.1" /> | |||||
<PackageReference Include="MSTest.TestAdapter" Version="1.4.0" /> | |||||
<PackageReference Include="MSTest.TestFramework" Version="1.4.0" /> | |||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" /> | |||||
<PackageReference Include="MSTest.TestAdapter" Version="2.0.0" /> | |||||
<PackageReference Include="MSTest.TestFramework" Version="2.0.0" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
</Project> | </Project> |
@@ -1,19 +1,25 @@ | |||||
<Project Sdk="Microsoft.NET.Sdk"> | <Project Sdk="Microsoft.NET.Sdk"> | ||||
<PropertyGroup> | <PropertyGroup> | ||||
<TargetFramework>netcoreapp3.0</TargetFramework> | |||||
<TargetFramework>netcoreapp3.1</TargetFramework> | |||||
<IsPackable>false</IsPackable> | <IsPackable>false</IsPackable> | ||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.3.0" /> | |||||
<PackageReference Include="xunit" Version="2.4.0" /> | |||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" /> | |||||
<PackageReference Include="coverlet.collector" Version="1.0.1" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.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> | |||||
<PackageReference Include="coverlet.collector" Version="1.1.0"> | |||||
<PrivateAssets>all</PrivateAssets> | |||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | |||||
</PackageReference> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
@@ -1,19 +1,25 @@ | |||||
<Project Sdk="Microsoft.NET.Sdk"> | <Project Sdk="Microsoft.NET.Sdk"> | ||||
<PropertyGroup> | <PropertyGroup> | ||||
<TargetFramework>netcoreapp3.0</TargetFramework> | |||||
<TargetFramework>netcoreapp3.1</TargetFramework> | |||||
<IsPackable>false</IsPackable> | <IsPackable>false</IsPackable> | ||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.3.0" /> | |||||
<PackageReference Include="xunit" Version="2.4.0" /> | |||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" /> | |||||
<PackageReference Include="coverlet.collector" Version="1.0.1" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.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> | |||||
<PackageReference Include="coverlet.collector" Version="1.1.0"> | |||||
<PrivateAssets>all</PrivateAssets> | |||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | |||||
</PackageReference> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
@@ -1,18 +1,24 @@ | |||||
<Project Sdk="Microsoft.NET.Sdk"> | <Project Sdk="Microsoft.NET.Sdk"> | ||||
<PropertyGroup> | <PropertyGroup> | ||||
<TargetFramework>netcoreapp3.0</TargetFramework> | |||||
<TargetFramework>netcoreapp3.1</TargetFramework> | |||||
<IsPackable>false</IsPackable> | <IsPackable>false</IsPackable> | ||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.3.0" /> | |||||
<PackageReference Include="xunit" Version="2.4.0" /> | |||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" /> | |||||
<PackageReference Include="coverlet.collector" Version="1.0.1" /> | |||||
<PackageReference Include="RichardSzalay.MockHttp" Version="5.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.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> | |||||
<PackageReference Include="coverlet.collector" Version="1.1.0"> | |||||
<PrivateAssets>all</PrivateAssets> | |||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | |||||
</PackageReference> | |||||
<PackageReference Include="RichardSzalay.MockHttp" Version="6.0.0" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
@@ -47,7 +47,7 @@ namespace JT808.DotNetty.Udp.Handlers | |||||
//解析到头部,然后根据具体的消息Id通过队列去进行消费 | //解析到头部,然后根据具体的消息Id通过队列去进行消费 | ||||
//要是一定要解析到数据体可以在JT808MsgIdHandlerBase类中根据具体的消息, | //要是一定要解析到数据体可以在JT808MsgIdHandlerBase类中根据具体的消息, | ||||
//解析具体的消息体,具体调用JT808Serializer.Deserialize<T> | //解析具体的消息体,具体调用JT808Serializer.Deserialize<T> | ||||
JT808HeaderPackage jT808HeaderPackage = JT808Serializer.Deserialize<JT808HeaderPackage>(msg.Buffer); | |||||
JT808HeaderPackage jT808HeaderPackage = JT808Serializer.HeaderDeserialize(msg.Buffer); | |||||
if (logger.IsEnabled(LogLevel.Trace)) | if (logger.IsEnabled(LogLevel.Trace)) | ||||
{ | { | ||||
logger.LogTrace($"accept package success count=>{jT808AtomicCounterService.MsgFailCount.ToString()},accept msg=>{ByteBufferUtil.HexDump(msg.Buffer)}"); | logger.LogTrace($"accept package success count=>{jT808AtomicCounterService.MsgFailCount.ToString()},accept msg=>{ByteBufferUtil.HexDump(msg.Buffer)}"); | ||||
@@ -20,15 +20,6 @@ | |||||
<PackageReleaseNotes>基于DotNetty实现的JT808DotNetty的Udp服务</PackageReleaseNotes> | <PackageReleaseNotes>基于DotNetty实现的JT808DotNetty的Udp服务</PackageReleaseNotes> | ||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | |||||
<PackageReference Include="DotNetty.Buffers" Version="0.6.0" /> | |||||
<PackageReference Include="DotNetty.Codecs" Version="0.6.0" /> | |||||
<PackageReference Include="DotNetty.Handlers" Version="0.6.0" /> | |||||
<PackageReference Include="DotNetty.Transport.Libuv" Version="0.6.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options" Version="3.0.0" /> | |||||
</ItemGroup> | |||||
<ItemGroup> | <ItemGroup> | ||||
<ProjectReference Include="..\JT808.DotNetty.Core\JT808.DotNetty.Core.csproj" /> | <ProjectReference Include="..\JT808.DotNetty.Core\JT808.DotNetty.Core.csproj" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
@@ -19,16 +19,6 @@ | |||||
<Description>基于DotNetty实现的JT808DotNetty的WebApi服务</Description> | <Description>基于DotNetty实现的JT808DotNetty的WebApi服务</Description> | ||||
<PackageReleaseNotes>基于DotNetty实现的JT808DotNetty的WebApi服务</PackageReleaseNotes> | <PackageReleaseNotes>基于DotNetty实现的JT808DotNetty的WebApi服务</PackageReleaseNotes> | ||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | |||||
<PackageReference Include="DotNetty.Buffers" Version="0.6.0" /> | |||||
<PackageReference Include="DotNetty.Codecs" Version="0.6.0" /> | |||||
<PackageReference Include="DotNetty.Codecs.Http" Version="0.6.0" /> | |||||
<PackageReference Include="DotNetty.Handlers" Version="0.6.0" /> | |||||
<PackageReference Include="DotNetty.Transport.Libuv" Version="0.6.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.0.0" /> | |||||
</ItemGroup> | |||||
<ItemGroup> | <ItemGroup> | ||||
<ProjectReference Include="..\JT808.DotNetty.Core\JT808.DotNetty.Core.csproj" /> | <ProjectReference Include="..\JT808.DotNetty.Core\JT808.DotNetty.Core.csproj" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
@@ -24,7 +24,7 @@ | |||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="System.Text.Json" Version="4.6.0" /> | |||||
<PackageReference Include="System.Text.Json" Version="4.7.0" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<None Include="..\..\LICENSE" Pack="true" PackagePath="" /> | <None Include="..\..\LICENSE" Pack="true" PackagePath="" /> | ||||
@@ -1,5 +1,5 @@ | |||||
<Project> | <Project> | ||||
<PropertyGroup> | <PropertyGroup> | ||||
<JT808DotNettyPackageVersion>2.2.2</JT808DotNettyPackageVersion> | |||||
<JT808DotNettyPackageVersion>2.3.0</JT808DotNettyPackageVersion> | |||||
</PropertyGroup> | </PropertyGroup> | ||||
</Project> | </Project> |