@@ -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"; | |||
} | |||
} |
@@ -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,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> |
@@ -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> |
@@ -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 | |||
@@ -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); | |||
@@ -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()) | |||