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.
 
 
 
 

150 lines
4.7 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. using JTTools.Dtos;
  6. using Microsoft.AspNetCore.Mvc;
  7. using JT1078.Protocol;
  8. using JT808.Protocol;
  9. using JT809.Protocol;
  10. using JT809.Protocol.Exceptions;
  11. using JT808.Protocol.Extensions;
  12. using JT808.Protocol.Exceptions;
  13. using Microsoft.AspNetCore.Cors;
  14. using Newtonsoft.Json;
  15. using JT808.Protocol.Interfaces;
  16. using JT809.Protocol.Interfaces;
  17. using Microsoft.AspNetCore.Authorization;
  18. namespace JTTools.Controllers
  19. {
  20. [Route("api/JTTools")]
  21. [ApiController]
  22. [EnableCors("Domain")]
  23. public class JTToolsController : ControllerBase
  24. {
  25. private readonly IJT809Config jT809Config;
  26. private readonly IJT808Config jT808Config;
  27. private readonly JT808Serializer jT808Serializer;
  28. private readonly JT809Serializer jT809Serializer;
  29. public JTToolsController(
  30. IJT809Config jT809Config,
  31. IJT808Config jT808Config)
  32. {
  33. this.jT809Config = jT809Config;
  34. this.jT808Config = jT808Config;
  35. jT808Serializer = jT808Config.GetSerializer();
  36. jT809Serializer = jT809Config.GetSerializer();
  37. }
  38. [Route("Parse808")]
  39. [HttpPost]
  40. public ActionResult<JTResultDto> Parse808([FromBody]JTRequestDto parameter)
  41. {
  42. JTResultDto jTResultDto = new JTResultDto();
  43. try
  44. {
  45. jTResultDto.Code = 200;
  46. jTResultDto.Data =jT808Serializer.Deserialize(parameter.HexData.ToHexBytes());
  47. }
  48. catch(JT808Exception ex)
  49. {
  50. jTResultDto.Code = 500;
  51. jTResultDto.Message = $"{ex.ErrorCode}-{ex.Message}";
  52. }
  53. catch (Exception ex)
  54. {
  55. jTResultDto.Code = 500;
  56. jTResultDto.Message = ex.Message;
  57. }
  58. return jTResultDto;
  59. }
  60. [Route("Analyze808")]
  61. [HttpPost]
  62. public ActionResult<JTResultDto> Analyze808([FromBody]JTRequestDto parameter)
  63. {
  64. JTResultDto jTResultDto = new JTResultDto();
  65. try
  66. {
  67. jTResultDto.Code = 200;
  68. jTResultDto.Data = jT808Serializer.Analyze(parameter.HexData.ToHexBytes());
  69. }
  70. catch (JT808Exception ex)
  71. {
  72. jTResultDto.Code = 500;
  73. jTResultDto.Message = $"{ex.ErrorCode}-{ex.Message}";
  74. }
  75. catch (Exception ex)
  76. {
  77. jTResultDto.Code = 500;
  78. jTResultDto.Message = ex.Message;
  79. }
  80. return jTResultDto;
  81. }
  82. [Route("Parse809")]
  83. [HttpPost]
  84. public ActionResult<JTResultDto> Parse809([FromBody]JT809RequestDto parameter)
  85. {
  86. JTResultDto jTResultDto = new JTResultDto();
  87. try
  88. {
  89. if (parameter.IsEncrypt)
  90. {
  91. IJT809Config jt809ConfigInternal = new JT809Config(Guid.NewGuid().ToString());
  92. jt809ConfigInternal.EncryptOptions = parameter.EncryptOptions;
  93. JT809Serializer jT809SerializerInternal = new JT809Serializer(jt809ConfigInternal);
  94. jTResultDto.Data = jT809SerializerInternal.Deserialize(parameter.HexData.ToHexBytes());
  95. }
  96. else
  97. {
  98. jTResultDto.Data = jT809Serializer.Deserialize(parameter.HexData.ToHexBytes());
  99. }
  100. jTResultDto.Code = 200;
  101. }
  102. catch (JT809Exception ex)
  103. {
  104. jTResultDto.Code = 500;
  105. jTResultDto.Message = $"{ex.ErrorCode}-{ex.Message}";
  106. }
  107. catch (Exception ex)
  108. {
  109. jTResultDto.Code = 500;
  110. jTResultDto.Message = ex.Message;
  111. }
  112. return jTResultDto;
  113. }
  114. [Route("Parse1078")]
  115. [HttpPost]
  116. public ActionResult<JTResultDto> Parse1078([FromBody]JTRequestDto parameter)
  117. {
  118. JTResultDto jTResultDto = new JTResultDto();
  119. try
  120. {
  121. jTResultDto.Code = 200;
  122. jTResultDto.Data = JT1078Serializer.Deserialize(parameter.HexData.ToHexBytes());
  123. }
  124. catch (Exception ex)
  125. {
  126. jTResultDto.Code = 500;
  127. jTResultDto.Message = ex.Message;
  128. }
  129. return jTResultDto;
  130. }
  131. }
  132. class JT809Config :JT809GlobalConfigBase
  133. {
  134. public JT809Config(string configId)
  135. {
  136. ConfigId = configId;
  137. }
  138. public override string ConfigId { get; }
  139. }
  140. }