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.

123 linhas
6.0 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using Xunit;
  5. using JT809.Protocol;
  6. using JT809.Protocol.Extensions;
  7. using JT809.Protocol.MessageBody;
  8. using JT809.Protocol.Exceptions;
  9. using JT809.Protocol.SubMessageBody;
  10. using JT809.Protocol.Enums;
  11. using JT809.Protocol.Internal;
  12. using JT808.Protocol.MessageBody;
  13. using JT808.Protocol.Interfaces;
  14. using JT808.Protocol;
  15. using JT808.Protocol.Metadata;
  16. namespace JT809.Protocol.Test.JT809SubMessageBody
  17. {
  18. public class JT809_0x1600_0x1602Test
  19. {
  20. private JT809Serializer JT809Serializer = new JT809Serializer();
  21. private JT809Serializer JT809_2019_Serializer = new JT809Serializer(new DefaultGlobalConfig() { Version = JT809Version.JTT2019 });
  22. private JT808Serializer JT808Serializer_2019;
  23. #warning 结合808协议包,解析808中的路线信息
  24. public JT809_0x1600_0x1602Test()
  25. {
  26. IJT808Config jT808Config = new DefaultGlobal808_2019Config();
  27. JT808Serializer_2019 = new JT808Serializer(jT808Config);
  28. }
  29. [Fact]
  30. public void Test_2019_1()
  31. {
  32. JT808_0x8606 jT808_0X8606 = new JT808_0x8606
  33. {
  34. RouteId = 9999,
  35. RouteProperty = 1268,
  36. StartTime = DateTime.Parse("2018-11-20 00:00:12"),
  37. EndTime = DateTime.Parse("2018-11-21 00:00:12"),
  38. InflectionPointItems = new List<JT808InflectionPointProperty>()
  39. };
  40. jT808_0X8606.InflectionPointItems.Add(new JT808InflectionPointProperty()
  41. {
  42. InflectionPointId = 1000,
  43. InflectionPointLat = 123456789,
  44. InflectionPointLng = 123456788,
  45. SectionDrivingUnderThreshold = 123,
  46. SectionHighestSpeed = 69,
  47. SectionId = 1287,
  48. SectionLongDrivingThreshold = 50,
  49. SectionOverspeedDuration = 23,
  50. SectionProperty = 89,
  51. SectionWidth = 56
  52. });
  53. jT808_0X8606.InflectionPointItems.Add(new JT808InflectionPointProperty()
  54. {
  55. InflectionPointId = 1001,
  56. InflectionPointLat = 123456780,
  57. InflectionPointLng = 123456781,
  58. SectionDrivingUnderThreshold = 124,
  59. SectionHighestSpeed = 42,
  60. SectionId = 12007,
  61. SectionLongDrivingThreshold = 58,
  62. SectionOverspeedDuration = 26,
  63. SectionProperty = 50,
  64. SectionWidth = 75
  65. });
  66. var jt808_hex = JT808Serializer_2019.Serialize(jT808_0X8606);
  67. JT809_0x1600_0x1602 jT809_0x1600_0x1602 = new JT809_0x1600_0x1602
  68. {
  69. DRVLine= jt808_hex
  70. };
  71. var hex = JT809_2019_Serializer.Serialize(jT809_0x1600_0x1602).ToHexString();
  72. Assert.Equal("0000270F04F40002000003E800000507075BCD15075BCD1438590032007B000003E900002EE7075BCD0C075BCD0D4B32002A1A", hex);
  73. }
  74. [Fact]
  75. public void Test_2019_2()
  76. {
  77. var bytes = "0000270F04F40002000003E800000507075BCD15075BCD1438590032007B000003E900002EE7075BCD0C075BCD0D4B32002A1A".ToHexBytes();
  78. JT809_0x1600_0x1602 jT809_0x1600_0x1602 = JT809_2019_Serializer.Deserialize<JT809_0x1600_0x1602>(bytes);
  79. JT808_0x8606 jT808_0X8606 = JT808Serializer_2019.Deserialize<JT808_0x8606>(bytes);
  80. Assert.Equal((uint)9999, jT808_0X8606.RouteId);
  81. Assert.Equal((uint)1268, jT808_0X8606.RouteProperty);
  82. //Assert.Equal(DateTime.Parse("2018-11-20 00:00:12"), jT808_0X8606.StartTime);
  83. //Assert.Equal(DateTime.Parse("2018-11-21 00:00:12"), jT808_0X8606.EndTime);
  84. Assert.Null(jT808_0X8606.StartTime);
  85. Assert.Null(jT808_0X8606.EndTime);
  86. Assert.Equal(2, jT808_0X8606.InflectionPointItems.Count);
  87. Assert.Equal((uint)1000, jT808_0X8606.InflectionPointItems[0].InflectionPointId);
  88. Assert.Equal((uint)123456789, jT808_0X8606.InflectionPointItems[0].InflectionPointLat);
  89. Assert.Equal((uint)123456788, jT808_0X8606.InflectionPointItems[0].InflectionPointLng);
  90. Assert.Equal((ushort)123, jT808_0X8606.InflectionPointItems[0].SectionDrivingUnderThreshold);
  91. //Assert.Equal((ushort)69, jT808_0X8606.InflectionPointItems[0].SectionHighestSpeed);
  92. Assert.Null(jT808_0X8606.InflectionPointItems[0].SectionHighestSpeed);
  93. Assert.Equal((uint)1287, jT808_0X8606.InflectionPointItems[0].SectionId);
  94. Assert.Equal((ushort)50, jT808_0X8606.InflectionPointItems[0].SectionLongDrivingThreshold);
  95. //Assert.Equal((byte)23, jT808_0X8606.InflectionPointItems[0].SectionOverspeedDuration);
  96. Assert.Equal(89, jT808_0X8606.InflectionPointItems[0].SectionProperty);
  97. Assert.Equal(56, jT808_0X8606.InflectionPointItems[0].SectionWidth);
  98. Assert.Equal((uint)1001, jT808_0X8606.InflectionPointItems[1].InflectionPointId);
  99. Assert.Equal((uint)123456780, jT808_0X8606.InflectionPointItems[1].InflectionPointLat);
  100. Assert.Equal((uint)123456781, jT808_0X8606.InflectionPointItems[1].InflectionPointLng);
  101. //Assert.Equal((ushort)124, jT808_0X8606.InflectionPointItems[1].SectionDrivingUnderThreshold);
  102. Assert.Null(jT808_0X8606.InflectionPointItems[1].SectionDrivingUnderThreshold);
  103. Assert.Equal((ushort)42, jT808_0X8606.InflectionPointItems[1].SectionHighestSpeed);
  104. Assert.Equal((uint)12007, jT808_0X8606.InflectionPointItems[1].SectionId);
  105. //Assert.Equal((ushort)58, jT808_0X8606.InflectionPointItems[1].SectionLongDrivingThreshold);
  106. Assert.Null(jT808_0X8606.InflectionPointItems[1].SectionLongDrivingThreshold);
  107. Assert.Equal((byte)26, jT808_0X8606.InflectionPointItems[1].SectionOverspeedDuration);
  108. Assert.Equal(50, jT808_0X8606.InflectionPointItems[1].SectionProperty);
  109. Assert.Equal(75, jT808_0X8606.InflectionPointItems[1].SectionWidth);
  110. }
  111. }
  112. }