瀏覽代碼

修改MiniApi(1)

pull/25/head
SmallChi(Koike) 3 年之前
父節點
當前提交
2bbcaf5da2
共有 23 個檔案被更改,包括 219 行新增234 行删除
  1. +2
    -14
      src/JT808.Gateway.Abstractions/JT808.Gateway.Abstractions.csproj
  2. +28
    -28
      src/JT808.Gateway.Abstractions/JT808MessageHandler.cs
  3. +12
    -0
      src/JT808.Gateway.Benchmark/JT808.Gateway.CleintBenchmark/Program.cs
  4. +1
    -1
      src/JT808.Gateway.Benchmark/JT808.Gateway.CleintBenchmark/Services/CleintBenchmarkHostedService.cs
  5. +3
    -16
      src/JT808.Gateway.Client/JT808.Gateway.Client.csproj
  6. +2
    -2
      src/JT808.Gateway.Client/JT808TcpClient.cs
  7. +2
    -15
      src/JT808.Gateway.Kafka/JT808.Gateway.Kafka.csproj
  8. +1
    -15
      src/JT808.Gateway.Services/JT808.Gateway.MsgIdHandler/JT808.Gateway.MsgIdHandler.csproj
  9. +1
    -14
      src/JT808.Gateway.Services/JT808.Gateway.MsgLogging/JT808.Gateway.MsgLogging.csproj
  10. +1
    -14
      src/JT808.Gateway.Services/JT808.Gateway.ReplyMessage/JT808.Gateway.ReplyMessage.csproj
  11. +1
    -14
      src/JT808.Gateway.Services/JT808.Gateway.SessionNotice/JT808.Gateway.SessionNotice.csproj
  12. +1
    -15
      src/JT808.Gateway.Services/JT808.Gateway.Transmit/JT808.Gateway.Transmit.csproj
  13. +1
    -1
      src/JT808.Gateway.Tests/JT808.Gateway.NormalHosting/JT808.Gateway.NormalHosting.csproj
  14. +2
    -2
      src/JT808.Gateway.Tests/JT808.Gateway.NormalHosting/Jobs/UpJob.cs
  15. +56
    -49
      src/JT808.Gateway.Tests/JT808.Gateway.NormalHosting/Program.cs
  16. +2
    -2
      src/JT808.Gateway.Tests/JT808.Gateway.QueueHosting/Jobs/UpJob.cs
  17. +1
    -14
      src/JT808.Gateway.WebApiClientTool/JT808.Gateway.WebApiClientTool.csproj
  18. +1
    -1
      src/JT808.Gateway.sln
  19. +4
    -16
      src/JT808.Gateway/JT808.Gateway.csproj
  20. +12
    -0
      src/JT808.Gateway/JT808.Gateway.xml
  21. +52
    -0
      src/JT808.Gateway/JT808MiniWebApi.cs
  22. +33
    -0
      src/PipelineInfo.props
  23. +0
    -1
      src/Version.props

+ 2
- 14
src/JT808.Gateway.Abstractions/JT808.Gateway.Abstractions.csproj 查看文件

@@ -1,18 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\Version.props" />
<Import Project="..\PipelineInfo.props" />
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netstandard2.1;net6.0;</TargetFrameworks>
<LangVersion>10.0</LangVersion>
<Copyright>Copyright 2019.</Copyright>
<Authors>SmallChi(Koike)</Authors>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<SignAssembly>false</SignAssembly>
<RepositoryUrl>https://github.com/SmallChi/JT808Gateway</RepositoryUrl>
<PackageProjectUrl>https://github.com/SmallChi/JT808Gateway</PackageProjectUrl>
<licenseUrl>https://github.com/SmallChi/JT808Gateway/blob/master/LICENSE</licenseUrl>
<license>https://github.com/SmallChi/JT808Gateway/blob/master/LICENSE</license>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<Description>基于Pipeline实现的JT808Gateway的抽象库</Description> <Description>基于Pipeline实现的JT808Gateway的抽象库</Description>
<PackageReleaseNotes>基于Pipeline实现的JT808Gateway的抽象库</PackageReleaseNotes> <PackageReleaseNotes>基于Pipeline实现的JT808Gateway的抽象库</PackageReleaseNotes>
<PackageId>JT808.Gateway.Abstractions</PackageId> <PackageId>JT808.Gateway.Abstractions</PackageId>
@@ -29,7 +17,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="JT808" Version="2.4.5" />
<PackageReference Include="JT808" Version="2.5.0-preview1" />
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="6.0.0" /> <PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Options" Version="6.0.0" /> <PackageReference Include="Microsoft.Extensions.Options" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="6.0.1" /> <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="6.0.1" />


+ 28
- 28
src/JT808.Gateway.Abstractions/JT808MessageHandler.cs 查看文件

@@ -41,25 +41,25 @@ namespace JT808.Gateway.Abstractions
this.JT808Config = jT808Config; this.JT808Config = jT808Config;
this.JT808Serializer = jT808Config.GetSerializer(); this.JT808Serializer = jT808Config.GetSerializer();
HandlerDict = new Dictionary<ushort, MsgIdMethodDelegate> { HandlerDict = new Dictionary<ushort, MsgIdMethodDelegate> {
{JT808MsgId.终端通用应答.ToUInt16Value(), Msg0x0001},
{JT808MsgId.终端鉴权.ToUInt16Value(), Msg0x0102},
{JT808MsgId.终端心跳.ToUInt16Value(), Msg0x0002},
{JT808MsgId.终端注销.ToUInt16Value(), Msg0x0003},
{JT808MsgId.终端注册.ToUInt16Value(), Msg0x0100},
{JT808MsgId.位置信息汇报.ToUInt16Value(),Msg0x0200 },
{JT808MsgId.定位数据批量上传.ToUInt16Value(),Msg0x0704 },
{JT808MsgId.数据上行透传.ToUInt16Value(),Msg0x0900 },
{JT808MsgId.查询服务器时间请求.ToUInt16Value(),Msg0x0004 },
{JT808MsgId.查询终端参数应答.ToUInt16Value(),Msg0x0104 },
{JT808MsgId.查询终端属性应答.ToUInt16Value(),Msg0x0107 },
{JT808MsgId.终端升级结果通知.ToUInt16Value(),Msg0x0108 },
{JT808MsgId.位置信息查询应答.ToUInt16Value(),Msg0x0201 },
{JT808MsgId.链路检测.ToUInt16Value(),Msg0x8204 },
{JT808MsgId.车辆控制应答.ToUInt16Value(),Msg0x0500 },
{JT808MsgId.摄像头立即拍摄命令.ToUInt16Value(),Msg0x8801 },
{JT808MsgId.多媒体数据上传.ToUInt16Value(),Msg0x0801 },
{JT808MsgId.多媒体事件信息上传.ToUInt16Value(),Msg0x0800 },
{JT808MsgId.CAN总线数据上传.ToUInt16Value(),Msg0x0705 },
{JT808MsgId._0x0001.ToUInt16Value(), Msg0x0001},
{JT808MsgId._0x0102.ToUInt16Value(), Msg0x0102},
{JT808MsgId._0x0002.ToUInt16Value(), Msg0x0002},
{JT808MsgId._0x0003.ToUInt16Value(), Msg0x0003},
{JT808MsgId._0x0100.ToUInt16Value(), Msg0x0100},
{JT808MsgId._0x0200.ToUInt16Value(),Msg0x0200 },
{JT808MsgId._0x0704.ToUInt16Value(),Msg0x0704 },
{JT808MsgId._0x0900.ToUInt16Value(),Msg0x0900 },
{JT808MsgId._0x0004.ToUInt16Value(),Msg0x0004 },
{JT808MsgId._0x0104.ToUInt16Value(),Msg0x0104 },
{JT808MsgId._0x0107.ToUInt16Value(),Msg0x0107 },
{JT808MsgId._0x0108.ToUInt16Value(),Msg0x0108 },
{JT808MsgId._0x0201.ToUInt16Value(),Msg0x0201 },
{JT808MsgId._0x8204.ToUInt16Value(),Msg0x8204 },
{JT808MsgId._0x0500.ToUInt16Value(),Msg0x0500 },
{JT808MsgId._0x8801 .ToUInt16Value(),Msg0x8801 },
{JT808MsgId._0x0801.ToUInt16Value(),Msg0x0801 },
{JT808MsgId._0x0800.ToUInt16Value(),Msg0x0800 },
{JT808MsgId._0x0705.ToUInt16Value(),Msg0x0705 },
}; };
} }


@@ -99,20 +99,20 @@ namespace JT808.Gateway.Abstractions
{ {
if (request.Version == JT808Version.JTT2019) if (request.Version == JT808Version.JTT2019)
{ {
byte[] data = JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create_平台通用应答_2019(request.Header.TerminalPhoneNo, new JT808_0x8001()
byte[] data = JT808Serializer.Serialize(JT808MsgId._0x8001.Create_平台通用应答_2019(request.Header.TerminalPhoneNo, new JT808_0x8001()
{ {
AckMsgId = request.Header.MsgId, AckMsgId = request.Header.MsgId,
JT808PlatformResult = JT808PlatformResult.成功,
JT808PlatformResult = JT808PlatformResult.succeed,
MsgNum = request.Header.MsgNum MsgNum = request.Header.MsgNum
})); }));
return data; return data;
} }
else else
{ {
byte[] data = JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8001()
byte[] data = JT808Serializer.Serialize(JT808MsgId._0x8001.Create(request.Header.TerminalPhoneNo, new JT808_0x8001()
{ {
AckMsgId = request.Header.MsgId, AckMsgId = request.Header.MsgId,
JT808PlatformResult = JT808PlatformResult.成功,
JT808PlatformResult = JT808PlatformResult.succeed,
MsgNum = request.Header.MsgNum MsgNum = request.Header.MsgNum
})); }));
return data; return data;
@@ -135,7 +135,7 @@ namespace JT808.Gateway.Abstractions
/// <returns></returns> /// <returns></returns>
public virtual byte[] Msg0x0004(JT808HeaderPackage request) public virtual byte[] Msg0x0004(JT808HeaderPackage request)
{ {
byte[] data = JT808Serializer.Serialize(JT808MsgId.查询服务器时间应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8004()
byte[] data = JT808Serializer.Serialize(JT808MsgId._0x8004.Create(request.Header.TerminalPhoneNo, new JT808_0x8004()
{ {
Time = DateTime.Now Time = DateTime.Now
})); }));
@@ -168,20 +168,20 @@ namespace JT808.Gateway.Abstractions
{ {
if (request.Version == JT808Version.JTT2019) if (request.Version == JT808Version.JTT2019)
{ {
byte[] data = JT808Serializer.Serialize(JT808MsgId.终端注册应答.Create_终端注册应答_2019(request.Header.TerminalPhoneNo, new JT808_0x8100()
byte[] data = JT808Serializer.Serialize(JT808MsgId._0x8100.Create_终端注册应答_2019(request.Header.TerminalPhoneNo, new JT808_0x8100()
{ {
Code = "J" + request.Header.TerminalPhoneNo, Code = "J" + request.Header.TerminalPhoneNo,
JT808TerminalRegisterResult = JT808TerminalRegisterResult.成功,
JT808TerminalRegisterResult = JT808TerminalRegisterResult.success,
AckMsgNum = request.Header.MsgNum AckMsgNum = request.Header.MsgNum
})); }));
return data; return data;
} }
else else
{ {
byte[] data = JT808Serializer.Serialize(JT808MsgId.终端注册应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8100()
byte[] data = JT808Serializer.Serialize(JT808MsgId._0x8100.Create(request.Header.TerminalPhoneNo, new JT808_0x8100()
{ {
Code = "J" + request.Header.TerminalPhoneNo, Code = "J" + request.Header.TerminalPhoneNo,
JT808TerminalRegisterResult = JT808TerminalRegisterResult.成功,
JT808TerminalRegisterResult = JT808TerminalRegisterResult.success,
AckMsgNum = request.Header.MsgNum AckMsgNum = request.Header.MsgNum
})); }));
return data; return data;


+ 12
- 0
src/JT808.Gateway.Benchmark/JT808.Gateway.CleintBenchmark/Program.cs 查看文件

@@ -19,6 +19,17 @@ namespace JT808.Gateway.CleintBenchmark
{ {
static async Task Main(string[] args) static async Task Main(string[] args)
{ {
//var builder = WebApplication.CreateBuilder(args);
//var app = builder.Build();
//app.MapGet("/weatherforecast", async context =>
//{

//}).WithName("GetWeatherForecast");



var serverHostBuilder = new HostBuilder() var serverHostBuilder = new HostBuilder()
.ConfigureAppConfiguration((hostingContext, config) => .ConfigureAppConfiguration((hostingContext, config) =>
{ {
@@ -29,6 +40,7 @@ namespace JT808.Gateway.CleintBenchmark
{ {
webBuilder.Configure(app => webBuilder.Configure(app =>
{ {
app.UseRouting(); app.UseRouting();
app.UseCors("Domain"); app.UseCors("Domain");
app.UseStaticFiles(); app.UseStaticFiles();


+ 1
- 1
src/JT808.Gateway.Benchmark/JT808.Gateway.CleintBenchmark/Services/CleintBenchmarkHostedService.cs 查看文件

@@ -63,7 +63,7 @@ namespace JT808.Gateway.CleintBenchmark.Services
int Lng = new Random(1000).Next(100000, 180000); int Lng = new Random(1000).Next(100000, 180000);
if (client != null) if (client != null)
{ {
await client.SendAsync(JT808MsgId.位置信息汇报.Create(client.DeviceConfig.TerminalPhoneNo, new JT808_0x0200()
await client.SendAsync(JT808MsgId._0x0200.Create(client.DeviceConfig.TerminalPhoneNo, new JT808_0x0200()
{ {
Lat = lat, Lat = lat,
Lng = Lng, Lng = Lng,


+ 3
- 16
src/JT808.Gateway.Client/JT808.Gateway.Client.csproj 查看文件

@@ -1,20 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">


<Import Project="..\Version.props" />
<Import Project="..\PipelineInfo.props" />
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netstandard2.1;net6.0;</TargetFrameworks>
<LangVersion>10.0</LangVersion>
<Copyright>Copyright 2019.</Copyright>
<Authors>SmallChi(Koike)</Authors>
<RepositoryUrl>https://github.com/SmallChi/JT808Gateway</RepositoryUrl>
<PackageProjectUrl>https://github.com/SmallChi/JT808Gateway</PackageProjectUrl>
<licenseUrl>https://github.com/SmallChi/JT808Gateway/blob/master/LICENSE</licenseUrl>
<license>https://github.com/SmallChi/JT808Gateway/blob/master/LICENSE</license>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<Version>$(JT808GatewayPackageVersion)</Version>
<SignAssembly>false</SignAssembly>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<PackageId>JT808.Gateway.Client</PackageId> <PackageId>JT808.Gateway.Client</PackageId>
<Product>JT808.Gateway.Client</Product> <Product>JT808.Gateway.Client</Product>
<Description>基于pipeline实现的JT808客户端工具</Description> <Description>基于pipeline实现的JT808客户端工具</Description>
@@ -23,9 +10,9 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="JT808" Version="2.4.5" />
<PackageReference Include="JT808" Version="2.5.0-preview1" />
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="6.0.0" /> <PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="6.0.0" />
<PackageReference Include="System.IO.Pipelines" Version="6.0.2" />
<PackageReference Include="System.IO.Pipelines" Version="6.0.3" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="6.0.1" /> <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="6.0.1" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="6.0.0" /> <PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="6.0.0" />
</ItemGroup> </ItemGroup>


+ 2
- 2
src/JT808.Gateway.Client/JT808TcpClient.cs 查看文件

@@ -71,12 +71,12 @@ namespace JT808.Gateway.Client
} }
if(DeviceConfig.Version== Protocol.Enums.JT808Version.JTT2013 || DeviceConfig.Version == Protocol.Enums.JT808Version.JTT2011) if(DeviceConfig.Version== Protocol.Enums.JT808Version.JTT2013 || DeviceConfig.Version == Protocol.Enums.JT808Version.JTT2011)
{ {
var package = JT808.Protocol.Enums.JT808MsgId.终端心跳.Create(DeviceConfig.TerminalPhoneNo);
var package = JT808.Protocol.Enums.JT808MsgId._0x0002.Create(DeviceConfig.TerminalPhoneNo);
await SendAsync(new JT808ClientRequest(package)); await SendAsync(new JT808ClientRequest(package));
} }
else else
{ {
var package = JT808.Protocol.Enums.JT808MsgId.终端心跳.Create2019(DeviceConfig.TerminalPhoneNo);
var package = JT808.Protocol.Enums.JT808MsgId._0x0002.Create2019(DeviceConfig.TerminalPhoneNo);
await SendAsync(new JT808ClientRequest(package)); await SendAsync(new JT808ClientRequest(package));
} }
} }


+ 2
- 15
src/JT808.Gateway.Kafka/JT808.Gateway.Kafka.csproj 查看文件

@@ -1,24 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\Version.props" />
<PropertyGroup>
<TargetFrameworks>netstandard2.1;net6.0;</TargetFrameworks>
<LangVersion>10.0</LangVersion>
<Copyright>Copyright 2019.</Copyright>
<Authors>SmallChi(Koike)</Authors>
<RepositoryUrl>https://github.com/SmallChi/JT808Gateway</RepositoryUrl>
<PackageProjectUrl>https://github.com/SmallChi/JT808Gateway</PackageProjectUrl>
<licenseUrl>https://github.com/SmallChi/JT808Gateway/blob/master/LICENSE</licenseUrl>
<license>https://github.com/SmallChi/JT808Gateway/blob/master/LICENSE</license>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<SignAssembly>false</SignAssembly>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<Import Project="..\PipelineInfo.props" />
<PropertyGroup>
<PackageId>JT808.Gateway.Kafka</PackageId> <PackageId>JT808.Gateway.Kafka</PackageId>
<Product>JT808.Gateway.Kafka</Product> <Product>JT808.Gateway.Kafka</Product>
<Description>基于Kafka的JT808消息发布与订阅</Description> <Description>基于Kafka的JT808消息发布与订阅</Description>
<PackageReleaseNotes>基于Kafka的JT808消息发布与订阅</PackageReleaseNotes> <PackageReleaseNotes>基于Kafka的JT808消息发布与订阅</PackageReleaseNotes>
<DocumentationFile>JT808.Gateway.Kafka.xml</DocumentationFile> <DocumentationFile>JT808.Gateway.Kafka.xml</DocumentationFile>
<Version>$(JT808GatewayPackageVersion)</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Confluent.Kafka" Version="1.8.2" /> <PackageReference Include="Confluent.Kafka" Version="1.8.2" />


+ 1
- 15
src/JT808.Gateway.Services/JT808.Gateway.MsgIdHandler/JT808.Gateway.MsgIdHandler.csproj 查看文件

@@ -1,20 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">

<Import Project="..\..\Version.props" />
<Import Project="..\..\PipelineInfo.props" />
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netstandard2.1;net6.0;</TargetFrameworks>
<LangVersion>9.0</LangVersion>
<Copyright>Copyright 2019.</Copyright>
<Authors>SmallChi(Koike)</Authors>
<RepositoryUrl>https://github.com/SmallChi/JT808Gateway</RepositoryUrl>
<PackageProjectUrl>https://github.com/SmallChi/JT808Gateway</PackageProjectUrl>
<licenseUrl>https://github.com/SmallChi/JT808Gateway/blob/master/LICENSE</licenseUrl>
<license>https://github.com/SmallChi/JT808Gateway/blob/master/LICENSE</license>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<Version>$(JT808GatewayPackageVersion)</Version>
<SignAssembly>false</SignAssembly>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<PackageId>JT808.Gateway.MsgIdHandler</PackageId> <PackageId>JT808.Gateway.MsgIdHandler</PackageId>
<Product>JT808.Gateway.MsgIdHandler</Product> <Product>JT808.Gateway.MsgIdHandler</Product>
<Description>基于JT808消息业务处理程序服务</Description> <Description>基于JT808消息业务处理程序服务</Description>


+ 1
- 14
src/JT808.Gateway.Services/JT808.Gateway.MsgLogging/JT808.Gateway.MsgLogging.csproj 查看文件

@@ -1,20 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">


<Import Project="..\..\Version.props" />
<Import Project="..\..\PipelineInfo.props" />
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netstandard2.1;net6.0;</TargetFrameworks>
<LangVersion>10.0</LangVersion>
<Copyright>Copyright 2019.</Copyright>
<Authors>SmallChi(Koike)</Authors>
<RepositoryUrl>https://github.com/SmallChi/JT808Gateway</RepositoryUrl>
<PackageProjectUrl>https://github.com/SmallChi/JT808Gateway</PackageProjectUrl>
<licenseUrl>https://github.com/SmallChi/JT808Gateway/blob/master/LICENSE</licenseUrl>
<license>https://github.com/SmallChi/JT808Gateway/blob/master/LICENSE</license>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<Version>$(JT808GatewayPackageVersion)</Version>
<SignAssembly>false</SignAssembly>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<PackageId>JT808.Gateway.MsgLogging</PackageId> <PackageId>JT808.Gateway.MsgLogging</PackageId>
<Product>JT808.Gateway.MsgLogging</Product> <Product>JT808.Gateway.MsgLogging</Product>
<Description>基于JT808消息上下行日志服务</Description> <Description>基于JT808消息上下行日志服务</Description>


+ 1
- 14
src/JT808.Gateway.Services/JT808.Gateway.ReplyMessage/JT808.Gateway.ReplyMessage.csproj 查看文件

@@ -1,19 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\Version.props" />
<Import Project="..\..\PipelineInfo.props" />
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netstandard2.1;net6.0;</TargetFrameworks>
<LangVersion>10.0</LangVersion>
<Copyright>Copyright 2019.</Copyright>
<Authors>SmallChi(Koike)</Authors>
<RepositoryUrl>https://github.com/SmallChi/JT808Gateway</RepositoryUrl>
<PackageProjectUrl>https://github.com/SmallChi/JT808Gateway</PackageProjectUrl>
<licenseUrl>https://github.com/SmallChi/JT808Gateway/blob/master/LICENSE</licenseUrl>
<license>https://github.com/SmallChi/JT808Gateway/blob/master/LICENSE</license>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<Version>$(JT808GatewayPackageVersion)</Version>
<SignAssembly>false</SignAssembly>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<PackageId>JT808.Gateway.ReplyMessage</PackageId> <PackageId>JT808.Gateway.ReplyMessage</PackageId>
<Product>JT808.Gateway.ReplyMessage</Product> <Product>JT808.Gateway.ReplyMessage</Product>
<Description>基于JT808消息业务处理程序服务</Description> <Description>基于JT808消息业务处理程序服务</Description>


+ 1
- 14
src/JT808.Gateway.Services/JT808.Gateway.SessionNotice/JT808.Gateway.SessionNotice.csproj 查看文件

@@ -1,20 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">


<Import Project="..\..\Version.props" />
<Import Project="..\..\PipelineInfo.props" />
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netstandard2.1;net6.0;</TargetFrameworks>
<LangVersion>10.0</LangVersion>
<Copyright>Copyright 2019.</Copyright>
<Authors>SmallChi(Koike)</Authors>
<RepositoryUrl>https://github.com/SmallChi/JT808Gateway</RepositoryUrl>
<PackageProjectUrl>https://github.com/SmallChi/JT808Gateway</PackageProjectUrl>
<licenseUrl>https://github.com/SmallChi/JT808Gateway/blob/master/LICENSE</licenseUrl>
<license>https://github.com/SmallChi/JT808Gateway/blob/master/LICENSE</license>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<Version>$(JT808GatewayPackageVersion)</Version>
<SignAssembly>false</SignAssembly>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<PackageId>JT808.Gateway.SessionNotice</PackageId> <PackageId>JT808.Gateway.SessionNotice</PackageId>
<Product>JT808.Gateway.SessionNotice</Product> <Product>JT808.Gateway.SessionNotice</Product>
<Description>基于JT808会话通知服务</Description> <Description>基于JT808会话通知服务</Description>


+ 1
- 15
src/JT808.Gateway.Services/JT808.Gateway.Transmit/JT808.Gateway.Transmit.csproj 查看文件

@@ -1,20 +1,6 @@
 <Project Sdk="Microsoft.NET.Sdk">  <Project Sdk="Microsoft.NET.Sdk">

<Import Project="..\..\Version.props" />
<Import Project="..\..\PipelineInfo.props" />
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netstandard2.1;net6.0;</TargetFrameworks>
<LangVersion>10.0</LangVersion>
<Copyright>Copyright 2019.</Copyright>
<Authors>SmallChi(Koike)</Authors>
<RepositoryUrl>https://github.com/SmallChi/JT808Gateway</RepositoryUrl>
<PackageProjectUrl>https://github.com/SmallChi/JT808Gateway</PackageProjectUrl>
<licenseUrl>https://github.com/SmallChi/JT808Gateway/blob/master/LICENSE</licenseUrl>
<license>https://github.com/SmallChi/JT808Gateway/blob/master/LICENSE</license>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<Version>$(JT808GatewayPackageVersion)</Version>
<SignAssembly>false</SignAssembly>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<PackageId>JT808.Gateway.Transmit</PackageId> <PackageId>JT808.Gateway.Transmit</PackageId>
<Product>JT808.Gateway.Transmit</Product> <Product>JT808.Gateway.Transmit</Product>
<Description>基于JT808实现的数据转发服务</Description> <Description>基于JT808实现的数据转发服务</Description>


+ 1
- 1
src/JT808.Gateway.Tests/JT808.Gateway.NormalHosting/JT808.Gateway.NormalHosting.csproj 查看文件

@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk.Web">


<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>


+ 2
- 2
src/JT808.Gateway.Tests/JT808.Gateway.NormalHosting/Jobs/UpJob.cs 查看文件

@@ -39,7 +39,7 @@ namespace JT808.Gateway.NormalHosting.Jobs
{ {
int lat = new Random(1000).Next(100000, 180000); int lat = new Random(1000).Next(100000, 180000);
int Lng = new Random(1000).Next(100000, 180000); int Lng = new Random(1000).Next(100000, 180000);
await client.SendAsync(JT808MsgId.位置信息汇报.Create(client.DeviceConfig.TerminalPhoneNo, new JT808_0x0200()
await client.SendAsync(JT808MsgId._0x0200.Create(client.DeviceConfig.TerminalPhoneNo, new JT808_0x0200()
{ {
Lat = lat, Lat = lat,
Lng = Lng, Lng = Lng,
@@ -53,7 +53,7 @@ namespace JT808.Gateway.NormalHosting.Jobs


int lat1 = new Random(1000).Next(100000, 180000); int lat1 = new Random(1000).Next(100000, 180000);
int Lng1 = new Random(1000).Next(100000, 180000); int Lng1 = new Random(1000).Next(100000, 180000);
await client1.SendAsync(JT808MsgId.位置信息汇报.Create(client1.DeviceConfig.TerminalPhoneNo, new JT808_0x0200()
await client1.SendAsync(JT808MsgId._0x0200.Create(client1.DeviceConfig.TerminalPhoneNo, new JT808_0x0200()
{ {
Lat = lat1, Lat = lat1,
Lng = Lng1, Lng = Lng1,


+ 56
- 49
src/JT808.Gateway.Tests/JT808.Gateway.NormalHosting/Program.cs 查看文件

@@ -15,62 +15,69 @@ using JT808.Gateway.SessionNotice;
using JT808.Gateway.Client; using JT808.Gateway.Client;
using JT808.Gateway.NormalHosting.Jobs; using JT808.Gateway.NormalHosting.Jobs;
using JT808.Gateway.WebApiClientTool; using JT808.Gateway.WebApiClientTool;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Routing;
using Microsoft.AspNetCore.Server;


namespace JT808.Gateway.NormalHosting namespace JT808.Gateway.NormalHosting
{ {
class Program class Program
{ {
static async Task Main(string[] args)
static void Main(string[] args)
{ {
var serverHostBuilder = new HostBuilder()
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{ hostingContext.HostingEnvironment.EnvironmentName}.json", optional: true, reloadOnChange: true);
})
.ConfigureLogging((context, logging) =>
{
Console.WriteLine($"Environment.OSVersion.Platform:{Environment.OSVersion.Platform.ToString()}");
NLog.LogManager.LoadConfiguration($"Configs/nlog.{Environment.OSVersion.Platform.ToString()}.config");
logging.AddNLog(new NLogProviderOptions { CaptureMessageTemplates = true, CaptureMessageProperties = true });
logging.SetMinimumLevel(LogLevel.Trace);
})
.ConfigureServices((hostContext, services) =>
{
services.AddSingleton<ILoggerFactory, LoggerFactory>();
services.AddSingleton(typeof(ILogger<>), typeof(Logger<>));
//使用内存队列实现会话通知
services.AddSingleton<JT808SessionService>();
services.AddSingleton<IJT808SessionProducer, JT808SessionProducer>();
services.AddSingleton<IJT808SessionConsumer, JT808SessionConsumer>();
//使用内存队列实现应答生产消费
services.AddSingleton<JT808MsgReplyDataService>();
services.AddSingleton<IJT808MsgReplyProducer, JT808MsgReplyProducer>();
services.AddJT808Configure()
//添加客户端工具
.AddClient()
.Builder()
//方式1:客户端webapi调用
.AddWebApiClientTool(hostContext.Configuration)
.AddGateway(hostContext.Configuration)
.AddMessageHandler<JT808CustomMessageHandlerImpl>()
.AddMsgReplyConsumer<JT808MsgReplyConsumer>()
.AddMsgLogging<JT808MsgLogging>()
.AddSessionNotice()
.AddTransmit(hostContext.Configuration)
.AddTcp()
.AddUdp()
.AddHttp();
//方式2:客户端webapi调用
//services.AddJT808WebApiClientTool(hostContext.Configuration);
//httpclient客户端调用
//services.AddHostedService<CallHttpClientJob>();
//客户端测试 依赖AddClient()服务
//services.AddHostedService<UpJob>();
});
var builder = WebApplication.CreateBuilder(args);
builder.Host.ConfigureAppConfiguration((hostingContext, config) =>
{
config.SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{ hostingContext.HostingEnvironment.EnvironmentName}.json", optional: true, reloadOnChange: true);
})
.ConfigureLogging((context, logging) =>
{
Console.WriteLine($"Environment.OSVersion.Platform:{Environment.OSVersion.Platform.ToString()}");
NLog.LogManager.LoadConfiguration($"Configs/nlog.{Environment.OSVersion.Platform.ToString()}.config");
logging.AddNLog(new NLogProviderOptions { CaptureMessageTemplates = true, CaptureMessageProperties = true });
logging.SetMinimumLevel(LogLevel.Trace);
})
.ConfigureServices((hostContext, services) =>
{
services.AddSingleton<ILoggerFactory, LoggerFactory>();
services.AddSingleton(typeof(ILogger<>), typeof(Logger<>));
//使用内存队列实现会话通知
services.AddSingleton<JT808SessionService>();
services.AddSingleton<IJT808SessionProducer, JT808SessionProducer>();
services.AddSingleton<IJT808SessionConsumer, JT808SessionConsumer>();
//使用内存队列实现应答生产消费
services.AddSingleton<JT808MsgReplyDataService>();
services.AddSingleton<IJT808MsgReplyProducer, JT808MsgReplyProducer>();
services.AddJT808Configure()
//添加客户端工具
.AddClient()
.Builder()
//方式1:客户端webapi调用
.AddWebApiClientTool(hostContext.Configuration)
.AddGateway(hostContext.Configuration)
.AddMessageHandler<JT808CustomMessageHandlerImpl>()
.AddMsgReplyConsumer<JT808MsgReplyConsumer>()
.AddMsgLogging<JT808MsgLogging>()
.AddSessionNotice()
.AddTransmit(hostContext.Configuration)
.AddTcp()
.AddUdp()
.AddHttp();
//方式2:客户端webapi调用
//services.AddJT808WebApiClientTool(hostContext.Configuration);
//httpclient客户端调用
//services.AddHostedService<CallHttpClientJob>();
//客户端测试 依赖AddClient()服务
//services.AddHostedService<UpJob>();
});


await serverHostBuilder.RunConsoleAsync();
var app = builder.Build();
app.UseJT808MiniWebApi();

app.Run();
} }
} }
} }

+ 2
- 2
src/JT808.Gateway.Tests/JT808.Gateway.QueueHosting/Jobs/UpJob.cs 查看文件

@@ -39,7 +39,7 @@ namespace JT808.Gateway.QueueHosting.Jobs
{ {
int lat = new Random(1000).Next(100000, 180000); int lat = new Random(1000).Next(100000, 180000);
int Lng = new Random(1000).Next(100000, 180000); int Lng = new Random(1000).Next(100000, 180000);
await client.SendAsync(JT808MsgId.位置信息汇报.Create(client.DeviceConfig.TerminalPhoneNo, new JT808_0x0200()
await client.SendAsync(JT808MsgId._0x0200.Create(client.DeviceConfig.TerminalPhoneNo, new JT808_0x0200()
{ {
Lat = lat, Lat = lat,
Lng = Lng, Lng = Lng,
@@ -52,7 +52,7 @@ namespace JT808.Gateway.QueueHosting.Jobs
})); }));
int lat1 = new Random(1000).Next(100000, 180000); int lat1 = new Random(1000).Next(100000, 180000);
int Lng1 = new Random(1000).Next(100000, 180000); int Lng1 = new Random(1000).Next(100000, 180000);
await client1.SendAsync(JT808MsgId.位置信息汇报.Create(client1.DeviceConfig.TerminalPhoneNo, new JT808_0x0200()
await client1.SendAsync(JT808MsgId._0x0200.Create(client1.DeviceConfig.TerminalPhoneNo, new JT808_0x0200()
{ {
Lat = lat1, Lat = lat1,
Lng = Lng1, Lng = Lng1,


+ 1
- 14
src/JT808.Gateway.WebApiClientTool/JT808.Gateway.WebApiClientTool.csproj 查看文件

@@ -1,19 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\Version.props" />
<Import Project="..\PipelineInfo.props" />
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netstandard2.1;net6.0;</TargetFrameworks>
<LangVersion>9.0</LangVersion>
<Copyright>Copyright 2019.</Copyright>
<Authors>SmallChi(Koike)</Authors>
<RepositoryUrl>https://github.com/SmallChi/JT808Gateway</RepositoryUrl>
<PackageProjectUrl>https://github.com/SmallChi/JT808Gateway</PackageProjectUrl>
<licenseUrl>https://github.com/SmallChi/JT808Gateway/blob/master/LICENSE</licenseUrl>
<license>https://github.com/SmallChi/JT808Gateway/blob/master/LICENSE</license>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<Version>$(JT808GatewayPackageVersion)</Version>
<SignAssembly>false</SignAssembly>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<PackageId>JT808.Gateway.WebApiClientTool</PackageId> <PackageId>JT808.Gateway.WebApiClientTool</PackageId>
<Product>JT808.Gateway.WebApiClientTool</Product> <Product>JT808.Gateway.WebApiClientTool</Product>
<Description>JT808WebApiClient客户端调用工具</Description> <Description>JT808WebApiClient客户端调用工具</Description>


+ 1
- 1
src/JT808.Gateway.sln 查看文件

@@ -41,7 +41,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.Gateway.MsgIdHandler"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{2336747A-28A3-443E-8E23-4B25E3F2D971}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{2336747A-28A3-443E-8E23-4B25E3F2D971}"
ProjectSection(SolutionItems) = preProject ProjectSection(SolutionItems) = preProject
Version.props = Version.props
PipelineInfo.props = PipelineInfo.props
EndProjectSection EndProjectSection
EndProject EndProject
Global Global


+ 4
- 16
src/JT808.Gateway/JT808.Gateway.csproj 查看文件

@@ -1,24 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\Version.props" />
<Project Sdk="Microsoft.NET.Sdk.Web">
<Import Project="..\PipelineInfo.props" />
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netstandard2.1;net6.0;</TargetFrameworks>
<LangVersion>10.0</LangVersion>
<Copyright>Copyright 2019.</Copyright>
<Authors>SmallChi(Koike)</Authors>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<SignAssembly>false</SignAssembly>
<RepositoryUrl>https://github.com/SmallChi/JT808Gateway</RepositoryUrl>
<PackageProjectUrl>https://github.com/SmallChi/JT808Gateway</PackageProjectUrl>
<licenseUrl>https://github.com/SmallChi/JT808Gateway/blob/master/LICENSE</licenseUrl>
<license>https://github.com/SmallChi/JT808Gateway/blob/master/LICENSE</license>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<Description>基于Pipeline实现的JT808Gateway的网络库</Description> <Description>基于Pipeline实现的JT808Gateway的网络库</Description>
<PackageReleaseNotes>基于Pipeline实现的JT808Gateway的网络库</PackageReleaseNotes> <PackageReleaseNotes>基于Pipeline实现的JT808Gateway的网络库</PackageReleaseNotes>
<DocumentationFile>JT808.Gateway.xml</DocumentationFile> <DocumentationFile>JT808.Gateway.xml</DocumentationFile>
<PackageId>JT808.Gateway</PackageId> <PackageId>JT808.Gateway</PackageId>
<Product>JT808.Gateway</Product> <Product>JT808.Gateway</Product>
<Version>$(JT808GatewayPackageVersion)</Version>
<OutputType>Library</OutputType>
</PropertyGroup> </PropertyGroup>


<ItemGroup> <ItemGroup>
@@ -27,7 +15,7 @@
</ItemGroup> </ItemGroup>


<ItemGroup> <ItemGroup>
<PackageReference Include="System.IO.Pipelines" Version="6.0.2" />
<PackageReference Include="System.IO.Pipelines" Version="6.0.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>


+ 12
- 0
src/JT808.Gateway/JT808.Gateway.xml 查看文件

@@ -198,6 +198,18 @@
<param name="config"></param> <param name="config"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="T:JT808.Gateway.JT808MiniWebApi">
<summary>
</summary>
</member>
<member name="M:JT808.Gateway.JT808MiniWebApi.UseJT808MiniWebApi(Microsoft.AspNetCore.Builder.WebApplication)">
<summary>
</summary>
<param name="app"></param>
<returns></returns>
</member>
<member name="T:JT808.Gateway.JT808TcpServer"> <member name="T:JT808.Gateway.JT808TcpServer">
<summary> <summary>
808 tcp服务器 808 tcp服务器


+ 52
- 0
src/JT808.Gateway/JT808MiniWebApi.cs 查看文件

@@ -0,0 +1,52 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Http;
using JT808.Gateway.Abstractions;
using JT808.Gateway.Abstractions.Dtos;
using System.Text.Json;
using Microsoft.Extensions.DependencyInjection;
using JT808.Gateway.Session;
using JT808.Gateway.Services;
using System;

namespace JT808.Gateway
{
/// <summary>
///
/// </summary>
public static class JT808MiniWebApi
{
/// <summary>
///
/// </summary>
/// <param name="app"></param>
/// <returns></returns>
public static void UseJT808MiniWebApi(this WebApplication app)
{
//CreateRoute(JT808GatewayConstants.JT808WebApiRouteTable.UnificationSend, UnificationSend);
//CreateRoute(JT808GatewayConstants.JT808WebApiRouteTable.BlacklistAdd, BlacklistAdd);
//CreateRoute(JT808GatewayConstants.JT808WebApiRouteTable.BlacklistRemove, BlacklistRemove);
//CreateRoute(JT808GatewayConstants.JT808WebApiRouteTable.BlacklistGet, QueryBlacklist);
app.MapPost(JT808GatewayConstants.JT808WebApiRouteTable.UnificationSend,async context =>
{
JT808ResultDto<bool> resultDto = new JT808ResultDto<bool>();
JT808SessionManager SessionManager = context.RequestServices.GetRequiredService<JT808SessionManager>();
JT808BlacklistManager BlacklistManager = context.RequestServices.GetRequiredService<JT808BlacklistManager>();
try
{
JT808UnificationSendRequestDto jT808UnificationSendRequestDto = JsonSerializer.Deserialize<JT808UnificationSendRequestDto>(context.Request.Body);
resultDto.Data = await SessionManager.TrySendByTerminalPhoneNoAsync(jT808UnificationSendRequestDto.TerminalPhoneNo,Convert.FromHexString(jT808UnificationSendRequestDto.HexData));
resultDto.Code = JT808ResultCode.Ok;
}
catch (Exception ex)
{
resultDto.Data = false;
resultDto.Code = JT808ResultCode.Error;
resultDto.Message = ex.StackTrace;
}
await context.Response.WriteAsJsonAsync(resultDto);
});
}
}
}

+ 33
- 0
src/PipelineInfo.props 查看文件

@@ -0,0 +1,33 @@
<Project>
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<LangVersion>10.0</LangVersion>
<Copyright>Copyright 2019.</Copyright>
<Authors>SmallChi(Koike)</Authors>
<RepositoryUrl>https://github.com/SmallChi/JT808Gateway</RepositoryUrl>
<PackageProjectUrl>https://github.com/SmallChi/JT808Gateway</PackageProjectUrl>
<licenseUrl>https://github.com/SmallChi/JT808Gateway/blob/master/LICENSE</licenseUrl>
<license>https://github.com/SmallChi/JT808Gateway/blob/master/LICENSE</license>
<Version>1.1.8-preview1</Version>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<AnalysisLevel>latest</AnalysisLevel>
<EnableNETAnalyzers>true</EnableNETAnalyzers>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<DebugSymbols>true</DebugSymbols>
<DebugType>embedded</DebugType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
<Deterministic>true</Deterministic>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="All"/>
</ItemGroup>
</Project>

+ 0
- 1
src/Version.props 查看文件

@@ -1,6 +1,5 @@
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<JT808DotNettyPackageVersion>2.3.6</JT808DotNettyPackageVersion> <JT808DotNettyPackageVersion>2.3.6</JT808DotNettyPackageVersion>
<JT808GatewayPackageVersion>1.1.7</JT808GatewayPackageVersion>
</PropertyGroup> </PropertyGroup>
</Project> </Project>

Loading…
取消
儲存