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.

203 linhas
10 KiB

  1. using JT808.Protocol.Enums;
  2. using JT808.Protocol.Extensions;
  3. using JT808.Protocol.MessageBody;
  4. using System;
  5. using System.Collections.Generic;
  6. using Xunit;
  7. using JT808.Protocol.Metadata;
  8. namespace JT808.Protocol.Test.MessageBody
  9. {
  10. public class JT808_0x0802Test
  11. {
  12. JT808Serializer JT808Serializer = new JT808Serializer();
  13. [Fact]
  14. public void Test1()
  15. {
  16. JT808_0x0802 jT808_0X0802 = new JT808_0x0802
  17. {
  18. MsgNum = 12369,
  19. MultimediaSearchItems = new List<JT808MultimediaSearchProperty>()
  20. };
  21. jT808_0X0802.MultimediaSearchItems.Add(new JT808MultimediaSearchProperty()
  22. {
  23. ChannelId = 123,
  24. EventItemCoding = JT808EventItemCoding.定时动作.ToByteValue(),
  25. MultimediaId = 258,
  26. MultimediaType = JT808MultimediaType.图像.ToByteValue(),
  27. Position = new JT808_0x0200()
  28. {
  29. AlarmFlag = 1,
  30. Altitude = 40,
  31. GPSTime = DateTime.Parse("2018-11-16 20:20:20"),
  32. Lat = 12222222,
  33. Lng = 132444444,
  34. Speed = 60,
  35. Direction = 0,
  36. StatusFlag = 2,
  37. }
  38. });
  39. jT808_0X0802.MultimediaSearchItems.Add(new JT808MultimediaSearchProperty()
  40. {
  41. ChannelId = 124,
  42. EventItemCoding = JT808EventItemCoding.平台下发指令.ToByteValue(),
  43. MultimediaId = 259,
  44. MultimediaType = JT808MultimediaType.视频.ToByteValue(),
  45. Position = new JT808_0x0200()
  46. {
  47. AlarmFlag = 1,
  48. Altitude = 40,
  49. GPSTime = DateTime.Parse("2018-11-16 22:22:22"),
  50. Lat = 12222222,
  51. Lng = 132444444,
  52. Speed = 60,
  53. Direction = 0,
  54. StatusFlag = 2,
  55. }
  56. });
  57. string hex = JT808Serializer.Serialize(jT808_0X0802).ToHexString();
  58. Assert.Equal("3051000200000102007B01000000010000000200BA7F0E07E4F11C0028003C000018111620202000000103027C00000000010000000200BA7F0E07E4F11C0028003C0000181116222222", hex);
  59. }
  60. [Fact]
  61. public void Test2()
  62. {
  63. byte[] bytes = "3051000200000102007B01000000010000000200BA7F0E07E4F11C0028003C000018111620202000000103027C00000000010000000200BA7F0E07E4F11C0028003C0000181116222222".ToHexBytes();
  64. JT808_0x0802 jT808_0X0802 = JT808Serializer.Deserialize<JT808_0x0802>(bytes);
  65. Assert.Equal(12369, jT808_0X0802.MsgNum);
  66. Assert.Equal(2, jT808_0X0802.MultimediaItemCount);
  67. Assert.Equal(123, jT808_0X0802.MultimediaSearchItems[0].ChannelId);
  68. Assert.Equal(JT808EventItemCoding.定时动作.ToByteValue(), jT808_0X0802.MultimediaSearchItems[0].EventItemCoding);
  69. Assert.Equal(JT808MultimediaType.图像.ToByteValue(), jT808_0X0802.MultimediaSearchItems[0].MultimediaType);
  70. Assert.Equal((uint)258, jT808_0X0802.MultimediaSearchItems[0].MultimediaId);
  71. Assert.Equal((uint)1, jT808_0X0802.MultimediaSearchItems[0].Position.AlarmFlag);
  72. Assert.Equal((ushort)40, jT808_0X0802.MultimediaSearchItems[0].Position.Altitude);
  73. Assert.Equal(DateTime.Parse("2018-11-16 20:20:20"), jT808_0X0802.MultimediaSearchItems[0].Position.GPSTime);
  74. Assert.Equal(12222222, jT808_0X0802.MultimediaSearchItems[0].Position.Lat);
  75. Assert.Equal(132444444, jT808_0X0802.MultimediaSearchItems[0].Position.Lng);
  76. Assert.Equal((ushort)60, jT808_0X0802.MultimediaSearchItems[0].Position.Speed);
  77. Assert.Equal((ushort)0, jT808_0X0802.MultimediaSearchItems[0].Position.Direction);
  78. Assert.Equal((uint)2, jT808_0X0802.MultimediaSearchItems[0].Position.StatusFlag);
  79. Assert.Equal(124, jT808_0X0802.MultimediaSearchItems[1].ChannelId);
  80. Assert.Equal(JT808EventItemCoding.平台下发指令.ToByteValue(), jT808_0X0802.MultimediaSearchItems[1].EventItemCoding);
  81. Assert.Equal(JT808MultimediaType.视频.ToByteValue(), jT808_0X0802.MultimediaSearchItems[1].MultimediaType);
  82. Assert.Equal((uint)259, jT808_0X0802.MultimediaSearchItems[1].MultimediaId);
  83. Assert.Equal((uint)1, jT808_0X0802.MultimediaSearchItems[1].Position.AlarmFlag);
  84. Assert.Equal((ushort)40, jT808_0X0802.MultimediaSearchItems[1].Position.Altitude);
  85. Assert.Equal(DateTime.Parse("2018-11-16 22:22:22"), jT808_0X0802.MultimediaSearchItems[1].Position.GPSTime);
  86. Assert.Equal(12222222, jT808_0X0802.MultimediaSearchItems[1].Position.Lat);
  87. Assert.Equal(132444444, jT808_0X0802.MultimediaSearchItems[1].Position.Lng);
  88. Assert.Equal((ushort)60, jT808_0X0802.MultimediaSearchItems[1].Position.Speed);
  89. Assert.Equal((ushort)0, jT808_0X0802.MultimediaSearchItems[1].Position.Direction);
  90. Assert.Equal((uint)2, jT808_0X0802.MultimediaSearchItems[1].Position.StatusFlag);
  91. }
  92. [Fact]
  93. public void Test3()
  94. {
  95. byte[] bytes = "3051000200000102007B01000000010000000200BA7F0E07E4F11C0028003C000018111620202000000103027C00000000010000000200BA7F0E07E4F11C0028003C0000181116222222".ToHexBytes();
  96. string json = JT808Serializer.Analyze<JT808_0x0802>(bytes);
  97. }
  98. [Fact]
  99. public void Test2011_1()
  100. {
  101. JT808_0x0802 jT808_0X0802 = new JT808_0x0802
  102. {
  103. MsgNum = 12369,
  104. MultimediaSearchItems = new List<JT808MultimediaSearchProperty>()
  105. };
  106. jT808_0X0802.MultimediaSearchItems.Add(new JT808MultimediaSearchProperty()
  107. {
  108. ChannelId = 123,
  109. EventItemCoding = JT808EventItemCoding.定时动作.ToByteValue(),
  110. MultimediaType = JT808MultimediaType.图像.ToByteValue(),
  111. Position = new JT808_0x0200()
  112. {
  113. AlarmFlag = 1,
  114. Altitude = 40,
  115. GPSTime = DateTime.Parse("2018-11-16 20:20:20"),
  116. Lat = 12222222,
  117. Lng = 132444444,
  118. Speed = 60,
  119. Direction = 0,
  120. StatusFlag = 2,
  121. }
  122. });
  123. jT808_0X0802.MultimediaSearchItems.Add(new JT808MultimediaSearchProperty()
  124. {
  125. ChannelId = 124,
  126. EventItemCoding = JT808EventItemCoding.平台下发指令.ToByteValue(),
  127. MultimediaType = JT808MultimediaType.视频.ToByteValue(),
  128. Position = new JT808_0x0200()
  129. {
  130. AlarmFlag = 1,
  131. Altitude = 40,
  132. GPSTime = DateTime.Parse("2018-11-16 22:22:22"),
  133. Lat = 12222222,
  134. Lng = 132444444,
  135. Speed = 60,
  136. Direction = 0,
  137. StatusFlag = 2,
  138. }
  139. });
  140. string hex = JT808Serializer.Serialize(jT808_0X0802,JT808Version.JTT2011).ToHexString();
  141. Assert.Equal("30510002007B01000000010000000200BA7F0E07E4F11C0028003C0000181116202020027C00000000010000000200BA7F0E07E4F11C0028003C0000181116222222", hex);
  142. }
  143. [Fact]
  144. public void Test2011_2()
  145. {
  146. byte[] bytes = "30510002007B01000000010000000200BA7F0E07E4F11C0028003C0000181116202020027C00000000010000000200BA7F0E07E4F11C0028003C0000181116222222".ToHexBytes();
  147. JT808_0x0802 jT808_0X0802 = JT808Serializer.Deserialize<JT808_0x0802>(bytes);
  148. Assert.Equal(12369, jT808_0X0802.MsgNum);
  149. Assert.Equal(2, jT808_0X0802.MultimediaItemCount);
  150. Assert.Equal(123, jT808_0X0802.MultimediaSearchItems[0].ChannelId);
  151. Assert.Equal(JT808EventItemCoding.定时动作.ToByteValue(), jT808_0X0802.MultimediaSearchItems[0].EventItemCoding);
  152. Assert.Equal(JT808MultimediaType.图像.ToByteValue(), jT808_0X0802.MultimediaSearchItems[0].MultimediaType);
  153. Assert.Equal((uint)1, jT808_0X0802.MultimediaSearchItems[0].Position.AlarmFlag);
  154. Assert.Equal((ushort)40, jT808_0X0802.MultimediaSearchItems[0].Position.Altitude);
  155. Assert.Equal(DateTime.Parse("2018-11-16 20:20:20"), jT808_0X0802.MultimediaSearchItems[0].Position.GPSTime);
  156. Assert.Equal(12222222, jT808_0X0802.MultimediaSearchItems[0].Position.Lat);
  157. Assert.Equal(132444444, jT808_0X0802.MultimediaSearchItems[0].Position.Lng);
  158. Assert.Equal((ushort)60, jT808_0X0802.MultimediaSearchItems[0].Position.Speed);
  159. Assert.Equal((ushort)0, jT808_0X0802.MultimediaSearchItems[0].Position.Direction);
  160. Assert.Equal((uint)2, jT808_0X0802.MultimediaSearchItems[0].Position.StatusFlag);
  161. Assert.Equal(124, jT808_0X0802.MultimediaSearchItems[1].ChannelId);
  162. Assert.Equal(JT808EventItemCoding.平台下发指令.ToByteValue(), jT808_0X0802.MultimediaSearchItems[1].EventItemCoding);
  163. Assert.Equal(JT808MultimediaType.视频.ToByteValue(), jT808_0X0802.MultimediaSearchItems[1].MultimediaType);
  164. Assert.Equal((uint)1, jT808_0X0802.MultimediaSearchItems[1].Position.AlarmFlag);
  165. Assert.Equal((ushort)40, jT808_0X0802.MultimediaSearchItems[1].Position.Altitude);
  166. Assert.Equal(DateTime.Parse("2018-11-16 22:22:22"), jT808_0X0802.MultimediaSearchItems[1].Position.GPSTime);
  167. Assert.Equal(12222222, jT808_0X0802.MultimediaSearchItems[1].Position.Lat);
  168. Assert.Equal(132444444, jT808_0X0802.MultimediaSearchItems[1].Position.Lng);
  169. Assert.Equal((ushort)60, jT808_0X0802.MultimediaSearchItems[1].Position.Speed);
  170. Assert.Equal((ushort)0, jT808_0X0802.MultimediaSearchItems[1].Position.Direction);
  171. Assert.Equal((uint)2, jT808_0X0802.MultimediaSearchItems[1].Position.StatusFlag);
  172. }
  173. [Fact]
  174. public void Test2011_3()
  175. {
  176. byte[] bytes = "30510002007B01000000010000000200BA7F0E07E4F11C0028003C0000181116202020027C00000000010000000200BA7F0E07E4F11C0028003C0000181116222222".ToHexBytes();
  177. string json = JT808Serializer.Analyze<JT808_0x0802>(bytes);
  178. }
  179. }
  180. }