Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 

103 linhas
4.8 KiB

  1. using System;
  2. using JT808.Protocol;
  3. using JT808.Protocol.Extensions.JT1078;
  4. using JT808.Protocol.Extensions.SuBiao;
  5. using JT808.Protocol.Extensions.YueBiao;
  6. using JT809.Protocol;
  7. using JT809.Protocol.Extensions.JT1078;
  8. using Microsoft.AspNetCore.Hosting;
  9. using Microsoft.Extensions.Configuration;
  10. using Microsoft.Extensions.Hosting;
  11. using Microsoft.AspNetCore.Builder;
  12. using Microsoft.Extensions.DependencyInjection;
  13. using Newtonsoft.Json.Serialization;
  14. using JTTools.Configs;
  15. using Newtonsoft.Json;
  16. using JT808.Protocol.Extensions.Streamax;
  17. using System.Text.Json;
  18. using JT808.Protocol.MessagePack;
  19. using JT808.Protocol.MessageBody;
  20. namespace JTTools
  21. {
  22. public class Program
  23. {
  24. public static void Main(string[] args)
  25. {
  26. Newtonsoft.Json.JsonConvert.DefaultSettings = new Func<JsonSerializerSettings>(() =>
  27. {
  28. Newtonsoft.Json.JsonSerializerSettings settings = new Newtonsoft.Json.JsonSerializerSettings();
  29. //日期类型默认格式化处理
  30. settings.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat;
  31. settings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
  32. //空值处理
  33. settings.NullValueHandling = NullValueHandling.Ignore;
  34. settings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
  35. settings.Converters.Add(new ByteArrayHexConverter());
  36. return settings;
  37. });
  38. Host.CreateDefaultBuilder(args)
  39. .ConfigureWebHostDefaults(webBuilder =>
  40. {
  41. webBuilder.ConfigureServices((hostingContext, services) =>
  42. {
  43. services.AddRazorPages();
  44. services.AddServerSideBlazor();
  45. services.AddAntDesign();
  46. })
  47. .ConfigureLogging((context, logging) => {
  48. //if (Environment.OSVersion.Platform == PlatformID.Unix)
  49. //{
  50. // NLog.LogManager.LoadConfiguration("Configs/nlog.unix.config");
  51. //}
  52. //else
  53. //{
  54. // NLog.LogManager.LoadConfiguration("Configs/nlog.win.config");
  55. //}
  56. //logging.AddNLog(new NLogProviderOptions { CaptureMessageTemplates = true, CaptureMessageProperties = true });
  57. //logging.SetMinimumLevel(LogLevel.Trace);
  58. })
  59. .ConfigureAppConfiguration((hostingContext, config) =>
  60. {
  61. config.SetBasePath(AppDomain.CurrentDomain.BaseDirectory);
  62. config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
  63. })
  64. .Configure(app => {
  65. app.UseRouting();
  66. app.UseStaticFiles();
  67. app.UseEndpoints(endpoints =>
  68. {
  69. endpoints.MapBlazorHub();
  70. endpoints.MapFallbackToPage("/_Host");
  71. });
  72. });
  73. })
  74. .ConfigureServices(services =>
  75. {
  76. services.AddJT808Configure();
  77. services.AddJT808Configure(new JT808_SuBiao_Config())
  78. .AddSuBiaoConfigure();
  79. services.AddJT808Configure(new JT808_YueBiao_Config())
  80. .AddYueBiaoConfigure();
  81. services.AddJT808Configure(new JT808_JT1078_Config())
  82. .AddJT1078Configure();
  83. services.AddJT809Configure(new JT809_2011_Config())
  84. .AddJT1078Configure();
  85. IServiceProvider serviceProvider = services.BuildServiceProvider();
  86. services.AddJT809Configure(new JT809_2019_Config())
  87. .AddJT1078Configure()
  88. .AddJT809_JT808AnalyzeCallback(0x0200,(bytes, writer, jT809Config)=> {
  89. IJT808Config jT808Config = serviceProvider.GetRequiredService<IJT808Config>();
  90. JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes);
  91. JT808.Protocol.Extensions.JT808AnalyzeExtensions.Analyze(JT808.Protocol.JT808ConfigExtensions.GetMessagePackFormatter<JT808_0x0200>(jT808Config),
  92. ref jT808MessagePackReader, writer, jT808Config);
  93. });
  94. services.AddJT808Configure(new JT808_Streamax_Config())
  95. .AddStreamaxConfigure();
  96. })
  97. .Build()
  98. .Run();
  99. }
  100. }
  101. }