You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

94 line
2.6 KiB

  1. @page "/jt808"
  2. @using JT808.Protocol;
  3. @using JT808.Protocol.Extensions;
  4. @using JTTools.Configs;
  5. @using System.Text;
  6. @using System.Text.Encodings.Web;
  7. @using System.Text.Unicode;
  8. @inject IJT808Config config
  9. @inject JT808_JT1078_Config jT808_JT1078_Config
  10. @inject JT808_JTActiveSafety_Config jT808_JTActiveSafety_Config
  11. <select class="form-control" @onchange="@OnSelectProtocolType">
  12. <option value="JT808">国标</option>
  13. <option value="JT808_JT1078">国标扩展JT1078</option>
  14. <option value="JT808_JTAS">国标扩展主动安全(苏标)</option>
  15. </select>
  16. <button class="btn btn-primary" @onclick="Query">分析</button>
  17. <BSAlert Color="Color.Danger" IsOpen="@isOpen" IsDismissible="true" OnDismiss="@OnDismiss">
  18. @ErrerMessage
  19. </BSAlert>
  20. <div class="right">
  21. <textarea class="form-control" @bind="HexData" rows="10"></textarea>
  22. <pre>
  23. @Json
  24. </pre>
  25. </div>
  26. @code {
  27. private JT808Serializer Serializer;
  28. private JT808Serializer JTAS_Serializer;
  29. private JT808Serializer JT1078Serializer;
  30. string protocolType = "JT808";
  31. 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";
  32. private string Json;
  33. private string ErrerMessage;
  34. private bool isOpen = false;
  35. void OnDismiss()
  36. {
  37. isOpen = !isOpen;
  38. StateHasChanged();
  39. }
  40. private void OnSelectProtocolType(ChangeEventArgs e)
  41. {
  42. protocolType = e.Value.ToString();
  43. }
  44. protected override void OnInitialized()
  45. {
  46. Serializer = config.GetSerializer();
  47. JT1078Serializer = jT808_JT1078_Config.GetSerializer();
  48. JTAS_Serializer = jT808_JTActiveSafety_Config.GetSerializer();
  49. }
  50. private void Query()
  51. {
  52. try
  53. {
  54. isOpen = false;
  55. var data = HexData.ToHexBytes();
  56. switch (protocolType)
  57. {
  58. case "JT808":
  59. Json = Serializer.Analyze(data, options: JTJsonWriterOptions.Instance);
  60. break;
  61. case "JT808_JT1078":
  62. Json = JT1078Serializer.Analyze(data, options: JTJsonWriterOptions.Instance);
  63. break;
  64. case "JT808_JTAS":
  65. Json = JTAS_Serializer.Analyze(data, options: JTJsonWriterOptions.Instance);
  66. break;
  67. }
  68. }
  69. catch (Exception ex)
  70. {
  71. isOpen = !isOpen;
  72. Json = "";
  73. ErrerMessage = ex.StackTrace;
  74. }
  75. }
  76. }