您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

156 行
6.4 KiB

  1. using JT808.Protocol.Extensions;
  2. using JT808.Protocol.MessageBody;
  3. using System;
  4. using System.Collections.Generic;
  5. using Xunit;
  6. namespace JT808.Protocol.Test.MessageBody
  7. {
  8. public class JT808_0x0704Test
  9. {
  10. JT808Serializer JT808Serializer = new JT808Serializer();
  11. [Fact]
  12. public void Test1()
  13. {
  14. JT808Package jT808Package = new JT808Package
  15. {
  16. Header = new JT808Header
  17. {
  18. MsgId = Enums.JT808MsgId.定位数据批量上传.ToUInt16Value(),
  19. ManualMsgNum = 8888,
  20. TerminalPhoneNo = "112233445566",
  21. }
  22. };
  23. JT808_0x0704 jT808_0X0704 = new JT808_0x0704
  24. {
  25. Count = 2,
  26. LocationType = JT808_0x0704.BatchLocationType.正常位置批量汇报
  27. };
  28. JT808_0x0200 JT808_0x0200_1 = new JT808_0x0200
  29. {
  30. AlarmFlag = 1,
  31. Altitude = 40,
  32. GPSTime = DateTime.Parse("2018-07-15 10:10:10"),
  33. Lat = 12222222,
  34. Lng = 132444444,
  35. Speed = 60,
  36. Direction = 0,
  37. StatusFlag = 2,
  38. JT808LocationAttachData = new Dictionary<byte, JT808_0x0200_BodyBase>()
  39. };
  40. JT808_0x0200_1.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x01, new JT808_0x0200_0x01
  41. {
  42. Mileage = 100
  43. });
  44. JT808_0x0200_1.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x02, new JT808_0x0200_0x02
  45. {
  46. Oil = 55
  47. });
  48. List<JT808_0x0200> jT808_0X0200s = new List<JT808_0x0200>();
  49. jT808_0X0200s.Add(JT808_0x0200_1);
  50. JT808_0x0200 JT808_0x0200_2 = new JT808_0x0200
  51. {
  52. AlarmFlag = 2,
  53. Altitude = 41,
  54. GPSTime = DateTime.Parse("2018-07-15 10:10:30"),
  55. Lat = 13333333,
  56. Lng = 132555555,
  57. Speed = 54,
  58. Direction = 120,
  59. StatusFlag = 1,
  60. JT808LocationAttachData = new Dictionary<byte, JT808_0x0200_BodyBase>()
  61. };
  62. JT808_0x0200_2.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x01, new JT808_0x0200_0x01
  63. {
  64. Mileage = 96
  65. });
  66. JT808_0x0200_2.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x02, new JT808_0x0200_0x02
  67. {
  68. Oil = 66
  69. });
  70. jT808_0X0200s.Add(JT808_0x0200_2);
  71. jT808_0X0704.Positions = jT808_0X0200s;
  72. jT808Package.Bodies = jT808_0X0704;
  73. //7E
  74. //07 04
  75. //00 53
  76. //11 22 33 44 55 66
  77. //22 B8
  78. //00 02
  79. //00
  80. //00 26
  81. //00 00 00 01
  82. //00 00 00 02
  83. //00 BA 7F 0E
  84. //07 E4 F1 1C
  85. //00 28
  86. //00 3C
  87. //00 00
  88. //18 07 15 10 10 10
  89. //01
  90. // 04
  91. // 00 00 00 64
  92. //02
  93. // 02
  94. // 00 37
  95. //00 26
  96. //00 00 00 02
  97. //00 00 00 01
  98. //00 CB 73 55
  99. //07 E6 A3 23
  100. //00 29
  101. //00 36
  102. //00 78
  103. //18 07 15 10 10 30
  104. //01
  105. // 04
  106. // 00 00 00 60
  107. //02
  108. // 02
  109. // 00 42
  110. //D4
  111. //7E
  112. var hex = JT808Serializer.Serialize(jT808Package).ToHexString();
  113. Assert.Equal("7E0704005311223344556622B80002000026000000010000000200BA7F0E07E4F11C0028003C0000180715101010010400000064020200370026000000020000000100CB735507E6A32300290036007818071510103001040000006002020042D47E", hex);
  114. }
  115. [Fact]
  116. public void Test2()
  117. {
  118. byte[] bytes = "7E 07 04 00 53 11 22 33 44 55 66 22 B8 00 02 00 00 26 00 00 00 01 00 00 00 02 00 BA 7F 0E 07 E4 F1 1C 00 28 00 3C 00 00 18 07 15 10 10 10 01 04 00 00 00 64 02 02 00 37 00 26 00 00 00 02 00 00 00 01 00 CB 73 55 07 E6 A3 23 00 29 00 36 00 78 18 07 15 10 10 30 01 04 00 00 00 60 02 02 00 42 D4 7E".ToHexBytes();
  119. JT808Package jT808Package = JT808Serializer.Deserialize<JT808Package>(bytes);
  120. Assert.Equal(Enums.JT808MsgId.定位数据批量上传.ToUInt16Value(), jT808Package.Header.MsgId);
  121. Assert.Equal(8888, jT808Package.Header.MsgNum);
  122. Assert.Equal("112233445566", jT808Package.Header.TerminalPhoneNo);
  123. JT808_0x0704 JT808Bodies = (JT808_0x0704)jT808Package.Bodies;
  124. Assert.Equal(2, JT808Bodies.Count);
  125. Assert.Equal(JT808_0x0704.BatchLocationType.正常位置批量汇报, JT808Bodies.LocationType);
  126. Assert.Equal((uint)1, JT808Bodies.Positions[0].AlarmFlag);
  127. Assert.Equal(DateTime.Parse("2018-07-15 10:10:10"), JT808Bodies.Positions[0].GPSTime);
  128. Assert.Equal(12222222, JT808Bodies.Positions[0].Lat);
  129. Assert.Equal(132444444, JT808Bodies.Positions[0].Lng);
  130. Assert.Equal(0, JT808Bodies.Positions[0].Direction);
  131. Assert.Equal(60, JT808Bodies.Positions[0].Speed);
  132. Assert.Equal((uint)2, JT808Bodies.Positions[0].StatusFlag);
  133. Assert.Equal(100, ((JT808_0x0200_0x01)JT808Bodies.Positions[0].JT808LocationAttachData[JT808Constants.JT808_0x0200_0x01]).Mileage);
  134. Assert.Equal(55, ((JT808_0x0200_0x02)JT808Bodies.Positions[0].JT808LocationAttachData[JT808Constants.JT808_0x0200_0x02]).Oil);
  135. Assert.Equal((uint)2, JT808Bodies.Positions[1].AlarmFlag);
  136. Assert.Equal(DateTime.Parse("2018-07-15 10:10:30"), JT808Bodies.Positions[1].GPSTime);
  137. Assert.Equal(13333333, JT808Bodies.Positions[1].Lat);
  138. Assert.Equal(132555555, JT808Bodies.Positions[1].Lng);
  139. Assert.Equal(54, JT808Bodies.Positions[1].Speed);
  140. Assert.Equal(120, JT808Bodies.Positions[1].Direction);
  141. Assert.Equal((uint)1, JT808Bodies.Positions[1].StatusFlag);
  142. Assert.Equal(96, ((JT808_0x0200_0x01)JT808Bodies.Positions[1].JT808LocationAttachData[JT808Constants.JT808_0x0200_0x01]).Mileage);
  143. Assert.Equal(66, ((JT808_0x0200_0x02)JT808Bodies.Positions[1].JT808LocationAttachData[JT808Constants.JT808_0x0200_0x02]).Oil);
  144. }
  145. }
  146. }