@@ -17,7 +17,7 @@ | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<ProjectReference Include="..\JTTools\JTTools.csproj" /> | |||||
<ProjectReference Include="..\JTTools.Bak\JTTools.csproj" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
</Project> | </Project> |
@@ -21,8 +21,8 @@ namespace JTTools.Test | |||||
public JTToolsControllerTest() | public JTToolsControllerTest() | ||||
{ | { | ||||
serviceDescriptors.AddJT808Configure() | |||||
.AddJT1078Configure(); | |||||
serviceDescriptors.AddJT808Configure(); | |||||
//.AddJT1078Configure(); | |||||
serviceDescriptors.AddJT809Configure() | serviceDescriptors.AddJT809Configure() | ||||
.AddJT1078Configure(); | .AddJT1078Configure(); | ||||
serviceDescriptors.AddSingleton<JTToolsController>(); | serviceDescriptors.AddSingleton<JTToolsController>(); | ||||
@@ -51,5 +51,15 @@ namespace JTTools.Test | |||||
Assert.Equal("ÔÁSEB408²â", jT809_0X1200.VehicleNo); | Assert.Equal("ÔÁSEB408²â", jT809_0X1200.VehicleNo); | ||||
Assert.Equal(JT809VehicleColorType.»ÆÉ«, jT809_0X1200.VehicleColor); | Assert.Equal(JT809VehicleColorType.»ÆÉ«, jT809_0X1200.VehicleColor); | ||||
} | } | ||||
[Fact] | |||||
public void Parse808Test1() | |||||
{ | |||||
var result=jTToolsController.Parse808(new JT809RequestDto() | |||||
{ | |||||
IsEncrypt=true, | |||||
HexData= "7E 02 00 00 57 00 00 00 00 77 77 62 F7 00 08 00 00 00 04 00 03 01 66 53 A7 06 A2 55 F8 00 9E 00 00 00 00 20 03 31 07 00 35 01 04 00 00 00 00 03 02 00 00 21 08 00 00 00 A0 00 05 6F 67 25 04 00 00 00 00 2B 04 00 00 00 00 30 01 03 31 01 0C 16 04 00 00 0B FE 17 01 02 18 04 01 1D 00 00 14 04 00 00 00 02 8A 7E" | |||||
}); | |||||
} | |||||
} | } | ||||
} | } |
@@ -26,15 +26,21 @@ namespace JTTools.Controllers | |||||
private readonly IJT809Config jT809Config; | private readonly IJT809Config jT809Config; | ||||
private readonly IJT808Config jT808Config; | private readonly IJT808Config jT808Config; | ||||
private readonly JT808Serializer jT808Serializer; | private readonly JT808Serializer jT808Serializer; | ||||
private readonly JT808Serializer jT808_JTAS_Serializer; | |||||
private readonly JT808Serializer jT808_JT1078Serializer; | |||||
private readonly JT809Serializer jT809Serializer; | private readonly JT809Serializer jT809Serializer; | ||||
public JTToolsController( | public JTToolsController( | ||||
JT808_JTActiveSafety_Config jT808_JTActiveSafety_Config, | |||||
JT808_JT1078_Config jT808_JT1078_Config, | |||||
IJT809Config jT809Config, | IJT809Config jT809Config, | ||||
IJT808Config jT808Config) | IJT808Config jT808Config) | ||||
{ | { | ||||
this.jT809Config = jT809Config; | this.jT809Config = jT809Config; | ||||
this.jT808Config = jT808Config; | this.jT808Config = jT808Config; | ||||
jT808Serializer = jT808Config.GetSerializer(); | jT808Serializer = jT808Config.GetSerializer(); | ||||
jT808_JTAS_Serializer = jT808_JTActiveSafety_Config.GetSerializer(); | |||||
jT808_JT1078Serializer = jT808_JT1078_Config.GetSerializer(); | |||||
jT809Serializer = jT809Config.GetSerializer(); | jT809Serializer = jT809Config.GetSerializer(); | ||||
} | } | ||||
@@ -46,7 +52,8 @@ namespace JTTools.Controllers | |||||
try | try | ||||
{ | { | ||||
jTResultDto.Code = 200; | jTResultDto.Code = 200; | ||||
jTResultDto.Data =jT808Serializer.Deserialize(parameter.HexData.ToHexBytes()); | |||||
var a = parameter.HexData.ToHexBytes(); | |||||
jTResultDto.Data =jT808Serializer.Deserialize(a); | |||||
} | } | ||||
catch(JT808Exception ex) | catch(JT808Exception ex) | ||||
{ | { | ||||
@@ -84,6 +91,52 @@ namespace JTTools.Controllers | |||||
return jTResultDto; | return jTResultDto; | ||||
} | } | ||||
[Route("Analyze808ExtJTAS")] | |||||
[HttpPost] | |||||
public ActionResult<JTResultDto> Analyze808ExtJTAS([FromBody]JTRequestDto parameter) | |||||
{ | |||||
JTResultDto jTResultDto = new JTResultDto(); | |||||
try | |||||
{ | |||||
jTResultDto.Code = 200; | |||||
jTResultDto.Data = jT808_JTAS_Serializer.Analyze(parameter.HexData.ToHexBytes()); | |||||
} | |||||
catch (JT808Exception ex) | |||||
{ | |||||
jTResultDto.Code = 500; | |||||
jTResultDto.Message = $"{ex.ErrorCode}-{ex.Message}"; | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
jTResultDto.Code = 500; | |||||
jTResultDto.Message = ex.Message; | |||||
} | |||||
return jTResultDto; | |||||
} | |||||
[Route("Analyze808ExtJT1078")] | |||||
[HttpPost] | |||||
public ActionResult<JTResultDto> Analyze808ExtJT1078([FromBody]JTRequestDto parameter) | |||||
{ | |||||
JTResultDto jTResultDto = new JTResultDto(); | |||||
try | |||||
{ | |||||
jTResultDto.Code = 200; | |||||
jTResultDto.Data = jT808_JT1078Serializer.Analyze(parameter.HexData.ToHexBytes()); | |||||
} | |||||
catch (JT808Exception ex) | |||||
{ | |||||
jTResultDto.Code = 500; | |||||
jTResultDto.Message = $"{ex.ErrorCode}-{ex.Message}"; | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
jTResultDto.Code = 500; | |||||
jTResultDto.Message = ex.Message; | |||||
} | |||||
return jTResultDto; | |||||
} | |||||
[Route("Parse809")] | [Route("Parse809")] | ||||
[HttpPost] | [HttpPost] | ||||
public ActionResult<JTResultDto> Parse809([FromBody]JT809RequestDto parameter) | public ActionResult<JTResultDto> Parse809([FromBody]JT809RequestDto parameter) | ||||
@@ -13,8 +13,8 @@ | |||||
<!--<PackageReference Include="JT1078" Version="1.0.0" />--> | <!--<PackageReference Include="JT1078" Version="1.0.0" />--> | ||||
<PackageReference Include="JT1078" Version="1.0.2" /> | <PackageReference Include="JT1078" Version="1.0.2" /> | ||||
<PackageReference Include="JT808" Version="2.2.9" /> | <PackageReference Include="JT808" Version="2.2.9" /> | ||||
<PackageReference Include="JT808.Protocol.Extensions.JT1078" Version="2.2.7" /> | |||||
<PackageReference Include="JT808.Protocol.Extensions.JTActiveSafety" Version="1.0.2" /> | |||||
<PackageReference Include="JT808.Protocol.Extensions.JT1078" Version="2.2.8" /> | |||||
<PackageReference Include="JT808.Protocol.Extensions.JTActiveSafety" Version="1.0.3" /> | |||||
<PackageReference Include="JT809" Version="2.1.3" /> | <PackageReference Include="JT809" Version="2.1.3" /> | ||||
<PackageReference Include="JT809.Protocol.Extensions.JT1078" Version="2.1.3" /> | <PackageReference Include="JT809.Protocol.Extensions.JT1078" Version="2.1.3" /> | ||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.3" /> | <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.3" /> | ||||
@@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Builder; | |||||
using Microsoft.AspNetCore.Mvc; | using Microsoft.AspNetCore.Mvc; | ||||
using Microsoft.Extensions.DependencyInjection; | using Microsoft.Extensions.DependencyInjection; | ||||
using JT808.Protocol; | using JT808.Protocol; | ||||
using JT808.Protocol.Interfaces; | |||||
using JT809.Protocol; | using JT809.Protocol; | ||||
using JT808.Protocol.Extensions.JT1078; | using JT808.Protocol.Extensions.JT1078; | ||||
using JT808.Protocol.Extensions.JTActiveSafety; | using JT808.Protocol.Extensions.JTActiveSafety; | ||||
@@ -27,8 +28,6 @@ namespace JTTools | |||||
{ | { | ||||
webBuilder.ConfigureServices((hostingContext, services) => | webBuilder.ConfigureServices((hostingContext, services) => | ||||
{ | { | ||||
services.AddRazorPages(); | |||||
services.AddServerSideBlazor(); | |||||
services.AddControllers() | services.AddControllers() | ||||
//Microsoft.AspNetCore.Mvc.NewtonsoftJson | //Microsoft.AspNetCore.Mvc.NewtonsoftJson | ||||
.AddNewtonsoftJson(jsonOptions => | .AddNewtonsoftJson(jsonOptions => | ||||
@@ -79,16 +78,16 @@ namespace JTTools | |||||
app.UseEndpoints(endpoints => | app.UseEndpoints(endpoints => | ||||
{ | { | ||||
endpoints.MapControllers(); | endpoints.MapControllers(); | ||||
endpoints.MapBlazorHub(); | |||||
endpoints.MapFallbackToPage("/_Host"); | |||||
}); | }); | ||||
}); | }); | ||||
}) | }) | ||||
.ConfigureServices(services => | .ConfigureServices(services => | ||||
{ | { | ||||
services.AddJT808Configure() | |||||
.AddJT1078Configure() | |||||
.AddJTActiveSafetyConfigure(); | |||||
services.AddJT808Configure(); | |||||
services.AddJT808Configure(new JT808_JTActiveSafety_Config()) | |||||
.AddJTActiveSafetyConfigure(); | |||||
services.AddJT808Configure(new JT808_JT1078_Config()) | |||||
.AddJT1078Configure(); | |||||
services.AddJT809Configure() | services.AddJT809Configure() | ||||
.AddJT1078Configure(); | .AddJT1078Configure(); | ||||
}) | }) | ||||
@@ -96,4 +95,14 @@ namespace JTTools | |||||
.Run(); | .Run(); | ||||
} | } | ||||
} | } | ||||
public class JT808_JTActiveSafety_Config : GlobalConfigBase | |||||
{ | |||||
public override string ConfigId { get; protected set; } = "JT808_JTActiveSafety_Config"; | |||||
} | |||||
public class JT808_JT1078_Config : GlobalConfigBase | |||||
{ | |||||
public override string ConfigId { get; protected set; } = "JT808_JT1078_Config"; | |||||
} | |||||
} | } |
@@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 | |||||
# Visual Studio Version 16 | # Visual Studio Version 16 | ||||
VisualStudioVersion = 16.0.29123.88 | VisualStudioVersion = 16.0.29123.88 | ||||
MinimumVisualStudioVersion = 10.0.40219.1 | MinimumVisualStudioVersion = 10.0.40219.1 | ||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JTTools", "JTTools\JTTools.csproj", "{BBDC3FB3-B267-4BFB-803E-71287D361300}" | |||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JTTools", "JTTools\JTTools.csproj", "{295AB139-27E0-45AE-8E95-A3D0F1E4161F}" | |||||
EndProject | EndProject | ||||
Global | Global | ||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||
@@ -11,10 +11,10 @@ Global | |||||
Release|Any CPU = Release|Any CPU | Release|Any CPU = Release|Any CPU | ||||
EndGlobalSection | EndGlobalSection | ||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution | GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||||
{BBDC3FB3-B267-4BFB-803E-71287D361300}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
{BBDC3FB3-B267-4BFB-803E-71287D361300}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
{BBDC3FB3-B267-4BFB-803E-71287D361300}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
{BBDC3FB3-B267-4BFB-803E-71287D361300}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
{295AB139-27E0-45AE-8E95-A3D0F1E4161F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
{295AB139-27E0-45AE-8E95-A3D0F1E4161F}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
{295AB139-27E0-45AE-8E95-A3D0F1E4161F}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
{295AB139-27E0-45AE-8E95-A3D0F1E4161F}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
EndGlobalSection | EndGlobalSection | ||||
GlobalSection(SolutionProperties) = preSolution | GlobalSection(SolutionProperties) = preSolution | ||||
HideSolutionNode = FALSE | HideSolutionNode = FALSE | ||||
@@ -1,15 +0,0 @@ | |||||
using System; | |||||
namespace JTTools.Data | |||||
{ | |||||
public class WeatherForecast | |||||
{ | |||||
public DateTime Date { get; set; } | |||||
public int TemperatureC { get; set; } | |||||
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); | |||||
public string Summary { get; set; } | |||||
} | |||||
} |
@@ -1,25 +0,0 @@ | |||||
using System; | |||||
using System.Linq; | |||||
using System.Threading.Tasks; | |||||
namespace JTTools.Data | |||||
{ | |||||
public class WeatherForecastService | |||||
{ | |||||
private static readonly string[] Summaries = new[] | |||||
{ | |||||
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" | |||||
}; | |||||
public Task<WeatherForecast[]> GetForecastAsync(DateTime startDate) | |||||
{ | |||||
var rng = new Random(); | |||||
return Task.FromResult(Enumerable.Range(1, 5).Select(index => new WeatherForecast | |||||
{ | |||||
Date = startDate.AddDays(index), | |||||
TemperatureC = rng.Next(-20, 55), | |||||
Summary = Summaries[rng.Next(Summaries.Length)] | |||||
}).ToArray()); | |||||
} | |||||
} | |||||
} |
@@ -1,16 +0,0 @@ | |||||
@page "/counter" | |||||
<h1>Counter</h1> | |||||
<p>Current count: @currentCount</p> | |||||
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button> | |||||
@code { | |||||
private int currentCount = 0; | |||||
private void IncrementCount() | |||||
{ | |||||
currentCount++; | |||||
} | |||||
} |
@@ -1,46 +0,0 @@ | |||||
@page "/fetchdata" | |||||
@using JTTools.Data | |||||
@inject WeatherForecastService ForecastService | |||||
<h1>Weather forecast</h1> | |||||
<p>This component demonstrates fetching data from a service.</p> | |||||
@if (forecasts == null) | |||||
{ | |||||
<p><em>Loading...</em></p> | |||||
} | |||||
else | |||||
{ | |||||
<table class="table"> | |||||
<thead> | |||||
<tr> | |||||
<th>Date</th> | |||||
<th>Temp. (C)</th> | |||||
<th>Temp. (F)</th> | |||||
<th>Summary</th> | |||||
</tr> | |||||
</thead> | |||||
<tbody> | |||||
@foreach (var forecast in forecasts) | |||||
{ | |||||
<tr> | |||||
<td>@forecast.Date.ToShortDateString()</td> | |||||
<td>@forecast.TemperatureC</td> | |||||
<td>@forecast.TemperatureF</td> | |||||
<td>@forecast.Summary</td> | |||||
</tr> | |||||
} | |||||
</tbody> | |||||
</table> | |||||
} | |||||
@code { | |||||
private WeatherForecast[] forecasts; | |||||
protected override async Task OnInitializedAsync() | |||||
{ | |||||
forecasts = await ForecastService.GetForecastAsync(DateTime.Now); | |||||
} | |||||
} |
@@ -0,0 +1,30 @@ | |||||
@page "/jt1078" | |||||
@using JT1078.Protocol; | |||||
@using JT1078.Protocol.Extensions; | |||||
@using Newtonsoft.Json; | |||||
<h3>JT1078Parse</h3> | |||||
<p>Hex: @HexData</p> | |||||
<button class="btn btn-primary" @onclick="Query">解析</button> | |||||
<div class="right"> | |||||
@Json | |||||
</div> | |||||
@code { | |||||
private string HexData = "30 31 63 64 81 E2 10 88 01 12 34 56 78 10 01 10 00 00 01 6B B3 92 CA 7C 02 80 00 28 00 2E 00 00 00 01 61 E1 A2 BF 00 98 CF C0 EE 1E 17 28 34 07 78 8E 39 A4 03 FD DB D1 D5 46 BF B0 63 01 3F 59 AC 34 C9 7A 02 1A B9 6A 28 A4 2C 08"; | |||||
private string Json; | |||||
private void Query() | |||||
{ | |||||
var data = HexData.ToHexBytes(); | |||||
Json = JsonConvert.SerializeObject(JT1078Serializer.Deserialize(data)); | |||||
} | |||||
} |
@@ -0,0 +1,48 @@ | |||||
@page "/jt19056analyze" | |||||
@using JT808.Protocol; | |||||
@using JT808.Protocol.Extensions; | |||||
@using Newtonsoft.Json; | |||||
@inject IJT808Config Config | |||||
<h3>jt808analyze</h3> | |||||
<p>Up Hex: @UpHexData</p> | |||||
<p>Down Hex: @DownHexData</p> | |||||
<button class="btn btn-primary" @onclick="UpQuery">上行分析</button> | |||||
<button class="btn btn-primary" @onclick="DownQuery">下行分析</button> | |||||
<div class="right"> | |||||
@UpJson | |||||
<br /> | |||||
@DownJson | |||||
</div> | |||||
@code { | |||||
private JT808CarDVRSerializer Serializer; | |||||
private string UpHexData = "7E 02 00 00 26 12 34 56 78 90 12 00 7D 02 00 00 00 01 00 00 00 02 00 BA 7F 0E 07 E4 F1 1C 00 28 00 3C 00 00 18 10 15 10 10 10 01 04 00 00 00 64 02 02 00 7D 01 13 7E"; | |||||
private string DownHexData = "7E 02 00 00 26 12 34 56 78 90 12 00 7D 02 00 00 00 01 00 00 00 02 00 BA 7F 0E 07 E4 F1 1C 00 28 00 3C 00 00 18 10 15 10 10 10 01 04 00 00 00 64 02 02 00 7D 01 13 7E"; | |||||
private string UpJson; | |||||
private string DownJson; | |||||
protected override void OnInitialized() | |||||
{ | |||||
Serializer = Config.GetCarDVRSerializer(); | |||||
} | |||||
private void UpQuery() | |||||
{ | |||||
var data = UpHexData.ToHexBytes(); | |||||
UpJson = Serializer.UpAnalyze(data); | |||||
} | |||||
private void DownQuery() | |||||
{ | |||||
var data = DownHexData.ToHexBytes(); | |||||
DownJson = Serializer.UpAnalyze(data); | |||||
} | |||||
} |
@@ -3,10 +3,17 @@ | |||||
@using JT808.Protocol; | @using JT808.Protocol; | ||||
@using JT808.Protocol.Extensions; | @using JT808.Protocol.Extensions; | ||||
@using Newtonsoft.Json; | @using Newtonsoft.Json; | ||||
@inject IJT808Config JT808Config | |||||
@inject IJT808Config Config | |||||
<h3>jt808analyze</h3> | <h3>jt808analyze</h3> | ||||
@*<select class="btn-success" onchange=@DoStuff> | |||||
<option value="JT808">国标</option> | |||||
<option value="JT808_JT1078">国标扩展JT1078</option> | |||||
<option value="JT808_JTAS">国标扩展主动安全(苏标)</option> | |||||
</select>*@ | |||||
<p>@protocolType</p> | |||||
<p>Hex: @HexData</p> | <p>Hex: @HexData</p> | ||||
<button class="btn btn-primary" @onclick="Query">分析</button> | <button class="btn btn-primary" @onclick="Query">分析</button> | ||||
@@ -15,16 +22,29 @@ | |||||
@Json | @Json | ||||
</div> | </div> | ||||
@functions { | |||||
string selectedString = "JT808"; | |||||
void DoStuff(ChangeEventArgs e) | |||||
{ | |||||
selectedString = e.Value.ToString(); | |||||
Console.WriteLine("It is definitely: " + selectedString); | |||||
} | |||||
} | |||||
@code { | @code { | ||||
private JT808Serializer Serializer; | private JT808Serializer Serializer; | ||||
string protocolType = "JT808"; | |||||
private string HexData = "7E 02 00 00 26 12 34 56 78 90 12 00 7D 02 00 00 00 01 00 00 00 02 00 BA 7F 0E 07 E4 F1 1C 00 28 00 3C 00 00 18 10 15 10 10 10 01 04 00 00 00 64 02 02 00 7D 01 13 7E"; | private string HexData = "7E 02 00 00 26 12 34 56 78 90 12 00 7D 02 00 00 00 01 00 00 00 02 00 BA 7F 0E 07 E4 F1 1C 00 28 00 3C 00 00 18 10 15 10 10 10 01 04 00 00 00 64 02 02 00 7D 01 13 7E"; | ||||
private string Json; | private string Json; | ||||
protected override void OnInitialized() | protected override void OnInitialized() | ||||
{ | { | ||||
Serializer = JT808Config.GetSerializer(); | |||||
Serializer = Config.GetSerializer(); | |||||
} | } | ||||
private void Query() | private void Query() | ||||
@@ -3,7 +3,7 @@ | |||||
@using JT808.Protocol; | @using JT808.Protocol; | ||||
@using JT808.Protocol.Extensions; | @using JT808.Protocol.Extensions; | ||||
@using Newtonsoft.Json; | @using Newtonsoft.Json; | ||||
@inject IJT808Config JT808Config | |||||
@inject IJT808Config Config | |||||
<h3>JT808Parse</h3> | <h3>JT808Parse</h3> | ||||
@@ -24,7 +24,7 @@ | |||||
protected override void OnInitialized() | protected override void OnInitialized() | ||||
{ | { | ||||
Serializer = JT808Config.GetSerializer(); | |||||
Serializer = Config.GetSerializer(); | |||||
} | } | ||||
private void Query() | private void Query() | ||||
@@ -0,0 +1,35 @@ | |||||
@page "/jt809" | |||||
@using JT809.Protocol; | |||||
@using JT809.Protocol.Extensions; | |||||
@using Newtonsoft.Json; | |||||
@inject IJT809Config Config | |||||
<h3>JT809Parse</h3> | |||||
<p>Hex: @HexData</p> | |||||
<button class="btn btn-primary" @onclick="Query">解析</button> | |||||
<div class="right"> | |||||
@Json | |||||
</div> | |||||
@code { | |||||
private JT809Serializer Serializer; | |||||
private string HexData = "5B 00 00 00 92 00 00 06 82 94 00 01 33 EF B8 01 00 00 00 00 00 27 0F D4 C1 41 31 32 33 34 35 00 00 00 00 00 00 00 00 00 00 00 00 00 02 94 01 00 00 00 5C 01 00 02 00 00 00 00 5A 01 AC 3F 40 12 3F FA A1 00 00 00 00 5A 01 AC 4D 50 03 73 6D 61 6C 6C 63 68 69 00 00 00 00 00 00 00 00 31 32 33 34 35 36 37 38 39 30 31 00 00 00 00 00 00 00 00 00 31 32 33 34 35 36 40 71 71 2E 63 6F 6D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA D8 5D"; | |||||
private string Json; | |||||
protected override void OnInitialized() | |||||
{ | |||||
Serializer = Config.GetSerializer(); | |||||
} | |||||
private void Query() | |||||
{ | |||||
var data = HexData.ToHexBytes(); | |||||
Json = JsonConvert.SerializeObject(Serializer.Deserialize(data)); | |||||
} | |||||
} |
@@ -17,7 +17,6 @@ using Microsoft.AspNetCore.Builder; | |||||
using Microsoft.AspNetCore.Components; | using Microsoft.AspNetCore.Components; | ||||
using Microsoft.AspNetCore.HttpsPolicy; | using Microsoft.AspNetCore.HttpsPolicy; | ||||
using Microsoft.Extensions.DependencyInjection; | using Microsoft.Extensions.DependencyInjection; | ||||
using JTTools.Data; | |||||
using Newtonsoft.Json.Serialization; | using Newtonsoft.Json.Serialization; | ||||
namespace JTTools | namespace JTTools | ||||
@@ -33,7 +32,6 @@ namespace JTTools | |||||
{ | { | ||||
services.AddRazorPages(); | services.AddRazorPages(); | ||||
services.AddServerSideBlazor(); | services.AddServerSideBlazor(); | ||||
services.AddSingleton<WeatherForecastService>(); | |||||
services.AddControllers() | services.AddControllers() | ||||
//Microsoft.AspNetCore.Mvc.NewtonsoftJson | //Microsoft.AspNetCore.Mvc.NewtonsoftJson | ||||
.AddNewtonsoftJson(jsonOptions => | .AddNewtonsoftJson(jsonOptions => | ||||
@@ -13,23 +13,23 @@ | |||||
</NavLink> | </NavLink> | ||||
</li> | </li> | ||||
<li class="nav-item px-3"> | <li class="nav-item px-3"> | ||||
<NavLink class="nav-link" href="jt808"> | |||||
<span class="oi oi-plus" aria-hidden="true"></span> JT808解析工具 | |||||
<NavLink class="nav-link" href="jt808analyze"> | |||||
<span class="oi oi-plus" aria-hidden="true"></span>JT808分析工具 | |||||
</NavLink> | </NavLink> | ||||
</li> | |||||
</li> | |||||
<li class="nav-item px-3"> | <li class="nav-item px-3"> | ||||
<NavLink class="nav-link" href="jt808analyze"> | |||||
<span class="oi oi-plus" aria-hidden="true"></span> JT808分析工具 | |||||
<NavLink class="nav-link" href="jt809"> | |||||
<span class="oi oi-plus" aria-hidden="true"></span>JT809解析工具 | |||||
</NavLink> | </NavLink> | ||||
</li> | </li> | ||||
<li class="nav-item px-3"> | <li class="nav-item px-3"> | ||||
<NavLink class="nav-link" href="counter"> | |||||
<span class="oi oi-plus" aria-hidden="true"></span> Counter | |||||
<NavLink class="nav-link" href="jt1078"> | |||||
<span class="oi oi-plus" aria-hidden="true"></span>JT1078解析工具 | |||||
</NavLink> | </NavLink> | ||||
</li> | </li> | ||||
<li class="nav-item px-3"> | <li class="nav-item px-3"> | ||||
<NavLink class="nav-link" href="fetchdata"> | |||||
<span class="oi oi-list-rich" aria-hidden="true"></span> Fetch data | |||||
<NavLink class="nav-link" href="jt19056analyze"> | |||||
<span class="oi oi-plus" aria-hidden="true"></span>JT19056分析工具 | |||||
</NavLink> | </NavLink> | ||||
</li> | </li> | ||||
</ul> | </ul> | ||||