Browse Source

1.增加粤标支持

2.增加808的2013强制解析
3.修复经纬度解析异常报错捕获
pull/9/head
SmallChi(Koike) 3 years ago
parent
commit
8a1b6b1382
7 changed files with 104 additions and 61 deletions
  1. +2
    -2
      src/JTTools/Configs/JT808_SuBiao_Config.cs
  2. +13
    -0
      src/JTTools/Configs/JT808_YueBiao_Config.cs
  3. +7
    -6
      src/JTTools/JTTools.csproj
  4. +3
    -2
      src/JTTools/Pages/Index.razor
  5. +26
    -11
      src/JTTools/Pages/JT808Analyze.razor
  6. +47
    -37
      src/JTTools/Pages/Map.razor
  7. +6
    -3
      src/JTTools/Program.cs

src/JTTools/Configs/JT808_JTActiveSafety_Config.cs → src/JTTools/Configs/JT808_SuBiao_Config.cs View File

@@ -6,8 +6,8 @@ using System.Threading.Tasks;

namespace JTTools.Configs
{
public class JT808_JTActiveSafety_Config : GlobalConfigBase
public class JT808_SuBiao_Config : GlobalConfigBase
{
public override string ConfigId { get; protected set; } = "JT808_JTActiveSafety_Config";
public override string ConfigId { get; protected set; } = "JT808_SuBiao_Config";
}
}

+ 13
- 0
src/JTTools/Configs/JT808_YueBiao_Config.cs View File

@@ -0,0 +1,13 @@
using JT808.Protocol.Interfaces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace JTTools.Configs
{
public class JT808_YueBiao_Config : GlobalConfigBase
{
public override string ConfigId { get; protected set; } = "JT808_YueBiao_Config";
}
}

+ 7
- 6
src/JTTools/JTTools.csproj View File

@@ -7,18 +7,19 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="AntDesign" Version="0.8.1" />
<PackageReference Include="AntDesign" Version="0.8.2" />
<PackageReference Include="JT1078" Version="1.1.0" />
<PackageReference Include="JT808" Version="2.4.0" />
<PackageReference Include="JT808.Protocol.Extensions.JT1078" Version="2.3.7" />
<PackageReference Include="JT808.Protocol.Extensions.JTActiveSafety" Version="1.1.7" />
<PackageReference Include="JT808" Version="2.4.1" />
<PackageReference Include="JT808.Protocol.Extensions.JT1078" Version="2.4.1" />
<PackageReference Include="JT808.Protocol.Extensions.Streamax" Version="0.2.7" />
<PackageReference Include="JT808.Protocol.Extensions.SuBiao" Version="2.4.1" />
<PackageReference Include="JT808.Protocol.Extensions.YueBiao" Version="2.4.1" />
<PackageReference Include="JT809" Version="2.2.0" />
<PackageReference Include="JT809.Protocol.Extensions.JT1078" Version="2.2.0" />
<PackageReference Include="JTActiveSafety" Version="1.0.1" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="5.0.6" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="5.0.7" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="NLog.Extensions.Logging" Version="1.7.2" />
<PackageReference Include="NLog.Extensions.Logging" Version="1.7.3" />
</ItemGroup>

</Project>

+ 3
- 2
src/JTTools/Pages/Index.razor View File

@@ -2,12 +2,13 @@

<Title Level="1">JTTools</Title>
<Paragraph>
<Title Level="3">JT808、JT809、JT1078、JT19056、JTNE(新能源)、主动安全(苏标)解析工具</Title>
<Title Level="3">JT808、JT809、JT1078、JT19056、JTNE(新能源)、JT808主动安全(苏标)解析工具、JT808主动安全(粤标)解析工具</Title>
<Text>
<Badge Color="red" />支持锐明808公交业务扩展协议<br />
<Badge Color="red" />支持主动安全附件(苏标)分析工具<br />
<Badge Color="red" />增加808分包解析<br />
<Badge Color="red" />增加地图-经纬度解析<br />
<Badge Color="red" />增加808分包的各个包的解析及展示
<Badge Color="red" />增加808分包的各个包的解析及展示<br />
<Badge Color="red" />支持808(粤标)分析工具<br />
</Text>
</Paragraph>

+ 26
- 11
src/JTTools/Pages/JT808Analyze.razor View File

@@ -9,18 +9,20 @@
@using System.Text.Unicode;
@inject IJT808Config config
@inject JT808_JT1078_Config jT808_JT1078_Config
@inject JT808_JTActiveSafety_Config jT808_JTActiveSafety_Config
@inject JT808_SuBiao_Config jT808_SuBiao_Config
@inject JT808_Streamax_Config jT808_Streamax_Config
@using OneOf;

<Tag Color="blue">如有分包,请换行区分。</Tag>
<br />
<Select TItemValue="string" TItem="string" @bind-Value="@protocolType" Style="width:200px" OnSelectedItemChanged="OnSelectProtocolType">
<Select TItemValue="string" TItem="string" @bind-Value="@protocolType" Style="width:260px" OnSelectedItemChanged="OnSelectProtocolType">
<SelectOptions>
<SelectOption TItemValue="string" TItem="string" Label="国标" Value="@("JT808")" />
<SelectOption TItemValue="string" TItem="string" Label="国标(通过包自动识别版本号)" Value="@("JT808")" />
<SelectOption TItemValue="string" TItem="string" Label="国标扩展JT1078" Value="@("JT808_JT1078")" />
<SelectOption TItemValue="string" TItem="string" Label="国标扩展主动安全(苏标)" Value="@("JT808_JTAS")" />
<SelectOption TItemValue="string" TItem="string" Label="国标扩展主动安全(苏标)" Value="@("JT808_SuBiao")" />
<SelectOption TItemValue="string" TItem="string" Label="国标扩展主动安全(粤标)" Value="@("JT808_YueBiao")" />
<SelectOption TItemValue="string" TItem="string" Label="公交扩展协议(锐明)" Value="@("JT808_JTRM")" />
<SelectOption TItemValue="string" TItem="string" Label="国标(强制使用2013版本解析)" Value="@("JT2013Force")" />
</SelectOptions>
</Select>

@@ -33,7 +35,7 @@
<Alert Type="@AlertType.Error" Description="@ErrerMessage" Closable AfterClose="OnDismiss" />
}

<div class="right">
<div style="padding: 26px; min-height: 350px">
@if (JT808HeaderPackages != null)
{
<AntList DataSource="@JT808HeaderPackages" TItem="JT808HeaderPackage">
@@ -69,7 +71,9 @@

private JT808Serializer JTRM_Serializer;

private JT808Serializer JTAS_Serializer;
private JT808Serializer JTSuBiao_Serializer;

private JT808Serializer JTYueBiao_Serializer;

private JT808Serializer JT1078Serializer;

@@ -77,6 +81,7 @@
private List<JT808HeaderPackage> JT808HeaderPackages;
private string HexData = HexDataTmp;
private static string HexDataTmp = "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 static string Hex2013ForceTmp = "7e0102400c01003000068109024a3130303330303030363831857e";
private static string HexSubDataTmp = "7E120523A204066657506200EB00020001015A00000023012012191042052012191050190000000000000000000101064446D10120121910221720121910420500000000000000000001010F1FE8EB0120121910023420121910221700000000000000000001010F182D5C0120121909471120121910015500000000000000000001010B38F2430120121909274020121909471100000000000000000001010F056DB40120121909080920121909274000000000000000000001010F0724380120121908483820121909080900000000000000000001010F0530AB0120121908290720121908483800000000000000000001010F05896C0120121908093720121908290700000000000000000001010F02CD3B0120121907500520121908093700000000000000000001010F056FEF0120121907303420121907500500000000000000000001010F043C3401201219072541201219073034000000000000000000010103C26C5F0120121907061120121907254100000000000000000001010F03F0C10120121906464220121907061100000000000000000001010F02F6330120121906271220121906464200000000000000000001010F02E43B0120121906074220121906271200000000000000000001010F033D670120121905481120121906074200000000000000000001010F088BF20120121905284120121905481100000000000000000001010F03F9FE0120121905091020121905284100000000000000000001010F05B1040120121904494020121905091000000000000000000001010F02B3540120121904301020121904494000000000000000000001010F0417B00120121904103920121904301000000000000000000001010F0538970120121903510820121904103900000000000000000001010F054E9E0120121903313820121903510800000000000000000001010F016ECB0120121903120820121903313800000000000000000001010F0333C00120121902523820121903120700000000000000000001010F029D230120121902330720121902523700000000000000000001010F0354E40120121902133720121902330700000000000000000001010F03303D0120121901540720121902133700000000000000000001010F04981E0120121901343720121901540700000000000000000001010F02AD940120121901150820121901343700000000000000000001010EFFD7CF0120121900553720121901150800000000000000000001010F07D9330120121900360720121900553700000000000000000001010F040E740C7E\n7E1205203804066657506200EC000200020120121900163320121900360700000000000000000001010F0CE4CD0120121900002220121900163300000000000000000001010C6F9E7B5D7E";

private string Json;
@@ -96,6 +101,10 @@
{
HexData = HexSubDataTmp;
}
else if("JT2013Force"== protocolType)
{
HexData = Hex2013ForceTmp;
}
else
{
HexData = HexDataTmp;
@@ -113,7 +122,7 @@
{
Serializer = config.GetSerializer();
JT1078Serializer = jT808_JT1078_Config.GetSerializer();
JTAS_Serializer = jT808_JTActiveSafety_Config.GetSerializer();
JTSuBiao_Serializer = jT808_SuBiao_Config.GetSerializer();
JTRM_Serializer = jT808_Streamax_Config.GetSerializer();
}

@@ -135,12 +144,15 @@
case "JT808_JT1078":
Json = JT1078Serializer.Analyze(data, options: JTJsonWriterOptions.Instance);
break;
case "JT808_JTAS":
Json = JTAS_Serializer.Analyze(data, options: JTJsonWriterOptions.Instance);
case "JT808_SuBiao":
Json = JTSuBiao_Serializer.Analyze(data, options: JTJsonWriterOptions.Instance);
break;
case "JT808_JTRM":
Json = JTRM_Serializer.Analyze(data, options: JTJsonWriterOptions.Instance);
break;
case "JT2013Force":
Json = Serializer.Analyze(data, JT808.Protocol.Enums.JT808Version.JTT2013Force ,options: JTJsonWriterOptions.Instance);
break;
}
}
else if (hexs.Length > 1)
@@ -172,12 +184,15 @@
case "JT808_JT1078":
Json = JT1078Serializer.Analyze(msgid, bodies.ToArray(), options: JTJsonWriterOptions.Instance);
break;
case "JT808_JTAS":
Json = JTAS_Serializer.Analyze(msgid, bodies.ToArray(), options: JTJsonWriterOptions.Instance);
case "JT808_SuBiao":
Json = JTSuBiao_Serializer.Analyze(msgid, bodies.ToArray(), options: JTJsonWriterOptions.Instance);
break;
case "JT808_JTRM":
Json = JTRM_Serializer.Analyze(msgid, bodies.ToArray(), options: JTJsonWriterOptions.Instance);
break;
case "JT2013Force":
Json = Serializer.Analyze(msgid, bodies.ToArray(), JT808.Protocol.Enums.JT808Version.JTT2013Force, options: JTJsonWriterOptions.Instance);
break;
}
}
else


+ 47
- 37
src/JTTools/Pages/Map.razor View File

@@ -13,7 +13,7 @@
<Radio RadioButton Value="@("BD09")">BD09</Radio>
</RadioGroup>
<br />
<AntDesign.Input @bind-Value="LngLat" style="width: 450px;" Size="large" AllowClear>
<AntDesign.Input @bind-Value="LngLat" Size="large" AllowClear>
<AddOnBefore>经纬度</AddOnBefore>
</AntDesign.Input>
<Button Type="primary" @onclick="Convert" Size="large">
@@ -71,55 +71,65 @@

void OnSelectedCoordinateTypeChanged(string e)
{
isOpen = false;
if (string.IsNullOrEmpty(LngLat))
{
return;
}
string[] arr = LngLat.Split(new string[]{ ",", ",", "|", ":" }, StringSplitOptions.RemoveEmptyEntries);
string[] arr = LngLat.Split(new string[]{ ",", ",", "|", ":",";",";" }, StringSplitOptions.RemoveEmptyEntries);
List<double> wgs84s = new List<double>();
List<double> gcj02s = new List<double>();
List<double> bd09s = new List<double>();
for (var i=0;i< arr.Length; i=i+2)
{
if (double.TryParse(arr[i], out double lng) && double.TryParse(arr[i+1], out double lat))
try
{
if (e == "WGS84")
if (double.TryParse(arr[i], out double lng) && double.TryParse(arr[i + 1], out double lat))
{
wgs84s.Add(lng);
wgs84s.Add(lat);
var gcj02 = Coordtransform.Wgs84togcj02(lng, lat);
gcj02s.Add(gcj02[0]);
gcj02s.Add(gcj02[1]);
var bd09 = Coordtransform.Wgs84tobd09(lng, lat);
bd09s.Add(bd09[0]);
bd09s.Add(bd09[1]);
}
else if (e == "GCJ02")
{
gcj02s.Add(lng);
gcj02s.Add(lat);
var wgs84 = Coordtransform.Gcj02towgs84(lng, lat);
wgs84s.Add(wgs84[0]);
wgs84s.Add(wgs84[1]);
var bd09 = Coordtransform.Gcj02tobd09(lng, lat);
bd09s.Add(bd09[0]);
bd09s.Add(bd09[1]);
}
else if (e == "BD09")
{
bd09s.Add(lng);
bd09s.Add(lat);

var wgs84 = Coordtransform.Bd09towgs84(lng, lat);
wgs84s.Add(wgs84[0]);
wgs84s.Add(wgs84[1]);

var gcj02 = Coordtransform.Bd09togcj02(lng, lat);
gcj02s.Add(gcj02[0]);
gcj02s.Add(gcj02[1]);

if (e == "WGS84")
{
wgs84s.Add(lng);
wgs84s.Add(lat);
var gcj02 = Coordtransform.Wgs84togcj02(lng, lat);
gcj02s.Add(gcj02[0]);
gcj02s.Add(gcj02[1]);
var bd09 = Coordtransform.Wgs84tobd09(lng, lat);
bd09s.Add(bd09[0]);
bd09s.Add(bd09[1]);
}
else if (e == "GCJ02")
{
gcj02s.Add(lng);
gcj02s.Add(lat);
var wgs84 = Coordtransform.Gcj02towgs84(lng, lat);
wgs84s.Add(wgs84[0]);
wgs84s.Add(wgs84[1]);
var bd09 = Coordtransform.Gcj02tobd09(lng, lat);
bd09s.Add(bd09[0]);
bd09s.Add(bd09[1]);
}
else if (e == "BD09")
{
bd09s.Add(lng);
bd09s.Add(lat);

var wgs84 = Coordtransform.Bd09towgs84(lng, lat);
wgs84s.Add(wgs84[0]);
wgs84s.Add(wgs84[1]);

var gcj02 = Coordtransform.Bd09togcj02(lng, lat);
gcj02s.Add(gcj02[0]);
gcj02s.Add(gcj02[1]);

}
}
}
catch(Exception ex)
{
isOpen = true;
ErrerMessage = ex.Message;
break;
}
}
WGS84_LngLat = string.Join(',', wgs84s);
GCJ02_LngLat = string.Join(',', gcj02s);


+ 6
- 3
src/JTTools/Program.cs View File

@@ -1,7 +1,8 @@
using System;
using JT808.Protocol;
using JT808.Protocol.Extensions.JT1078;
using JT808.Protocol.Extensions.JTActiveSafety;
using JT808.Protocol.Extensions.SuBiao;
using JT808.Protocol.Extensions.YueBiao;
using JT809.Protocol;
using JT809.Protocol.Extensions.JT1078;
using Microsoft.AspNetCore.Hosting;
@@ -71,8 +72,10 @@ namespace JTTools
.ConfigureServices(services =>
{
services.AddJT808Configure();
services.AddJT808Configure(new JT808_JTActiveSafety_Config())
.AddJTActiveSafetyConfigure();
services.AddJT808Configure(new JT808_SuBiao_Config())
.AddSuBiaoConfigure();
services.AddJT808Configure(new JT808_YueBiao_Config())
.AddYueBiaoConfigure();
services.AddJT808Configure(new JT808_JT1078_Config())
.AddJT1078Configure();
services.AddJT809Configure(new JT809_2011_Config())


Loading…
Cancel
Save