Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

439 righe
24 KiB

  1. using JT808.Protocol.Enums;
  2. using JT808.Protocol.Extensions;
  3. using JT808.Protocol.Interfaces;
  4. using JT808.Protocol.Internal;
  5. using JT808.Protocol.MessageBody;
  6. using JT808.Protocol.Test.JT808LocationAttach;
  7. using System;
  8. using System.Collections.Concurrent;
  9. using System.Collections.Generic;
  10. using System.Linq;
  11. using System.Reflection;
  12. using System.Threading.Tasks;
  13. using Xunit;
  14. namespace JT808.Protocol.Test.MessageBody
  15. {
  16. public class JT808_0x0200Test
  17. {
  18. JT808Serializer JT808Serializer;
  19. public JT808_0x0200Test()
  20. {
  21. IJT808Config jT808Config = new DefaultGlobalConfig();
  22. jT808Config.Register(Assembly.GetExecutingAssembly());
  23. JT808Serializer = new JT808Serializer(jT808Config);
  24. }
  25. [Fact]
  26. public void Test1()
  27. {
  28. JT808_0x0200 jT808UploadLocationRequest = 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. jT808UploadLocationRequest.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x01, new JT808_0x0200_0x01
  41. {
  42. Mileage = 100
  43. });
  44. jT808UploadLocationRequest.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x02, new JT808_0x0200_0x02
  45. {
  46. Oil = 55
  47. });
  48. var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString();
  49. Assert.Equal("000000010000000200BA7F0E07E4F11C0028003C000018071510101001040000006402020037", hex);
  50. }
  51. [Fact]
  52. public void Parallel_Test1_1()
  53. {
  54. ConcurrentBag<string> hexs = new ConcurrentBag<string>();
  55. Parallel.For(1, 20, new ParallelOptions
  56. {
  57. MaxDegreeOfParallelism=5
  58. }, (i) =>
  59. {
  60. JT808Package jT808Package = new JT808Package();
  61. jT808Package.Header = new JT808Header
  62. {
  63. MsgId = Enums.JT808MsgId.位置信息汇报.ToUInt16Value(),
  64. MsgNum = (ushort)i,
  65. TerminalPhoneNo = "1122334455"+i.ToString(),
  66. };
  67. JT808_0x0200 jT808UploadLocationRequest = new JT808_0x0200
  68. {
  69. AlarmFlag = 1,
  70. Altitude = 40,
  71. GPSTime = DateTime.Parse("2018-07-15 10:10:10").AddSeconds(i),
  72. Lat = 12222222,
  73. Lng = 132444444,
  74. Speed = 60,
  75. Direction = 0,
  76. StatusFlag = 2,
  77. JT808LocationAttachData = new Dictionary<byte, JT808_0x0200_BodyBase>()
  78. };
  79. jT808UploadLocationRequest.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x01, new JT808_0x0200_0x01
  80. {
  81. Mileage = 100
  82. });
  83. jT808UploadLocationRequest.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x02, new JT808_0x0200_0x02
  84. {
  85. Oil = 55
  86. });
  87. jT808Package.Bodies = jT808UploadLocationRequest;
  88. var hex = JT808Serializer.Serialize(jT808Package).ToHexString();
  89. hexs.Add(hex);
  90. });
  91. //7E02000026 112233445519 0013 000000010000000200BA7F0E07E4F11C0028003C0000 180715101029 01040000006402020037987E,
  92. //7E02000026 112233445518 0012 000000010000000200BA7F0E07E4F11C0028003C0000 180715101028 01040000006402020037997E,
  93. //7E02000026 112233445517 0011 000000010000000200BA7F0E07E4F11C0028003C0000 180715101027 010400000064020200379A7E,
  94. //7E02000026 112233445516 0010 000000010000000200BA7F0E07E4F11C0028003C0000 180715101026 010400000064020200379B7E,
  95. //7E02000026 112233445515 000F 000000010000000200BA7F0E07E4F11C0028003C0000 180715101025 01040000006402020037847E,
  96. //7E02000026 112233445514 000E 000000010000000200BA7F0E07E4F11C0028003C0000 180715101024 01040000006402020037857E,
  97. //7E02000026 112233445513 000D 000000010000000200BA7F0E07E4F11C0028003C0000 180715101023 01040000006402020037867E,
  98. //7E02000026 112233445512 000C 000000010000000200BA7F0E07E4F11C0028003C0000 180715101022 01040000006402020037877E,
  99. //7E02000026 112233445511 000B 000000010000000200BA7F0E07E4F11C0028003C0000 180715101021 01040000006402020037807E,
  100. //7E02000026 112233445510 000A 000000010000000200BA7F0E07E4F11C0028003C0000 180715101020 01040000006402020037817E,
  101. //7E02000026 011223344559 0009 000000010000000200BA7F0E07E4F11C0028003C0000 180715101019 01040000006402020037A27E,
  102. //7E02000026 011223344558 0008 000000010000000200BA7F0E07E4F11C0028003C0000 180715101018 01040000006402020037A37E,
  103. //7E02000026 011223344557 0007 000000010000000200BA7F0E07E4F11C0028003C0000 180715101017 01040000006402020037AC7E,
  104. //7E02000026 011223344556 0006 000000010000000200BA7F0E07E4F11C0028003C0000 180715101016 01040000006402020037AD7E,
  105. //7E02000026 011223344555 0005 000000010000000200BA7F0E07E4F11C0028003C0000 180715101015 01040000006402020037AE7E,
  106. //7E02000026 011223344554 0004 000000010000000200BA7F0E07E4F11C0028003C0000 180715101014 01040000006402020037AF7E,
  107. //7E02000026 011223344553 0003 000000010000000200BA7F0E07E4F11C0028003C0000 180715101013 01040000006402020037A87E,
  108. //7E02000026 011223344552 0002 000000010000000200BA7F0E07E4F11C0028003C0000 180715101012 01040000006402020037A97E,
  109. //7E02000026 011223344551 0001 000000010000000200BA7F0E07E4F11C0028003C0000 180715101011 01040000006402020037AA7E,
  110. //7E02000026 011223344550 0001 000000010000000200BA7F0E07E4F11C0028003C0000 180715101010 01040000006402020037AA7E
  111. //7E02000026 011223344550 0000 000000010000000200BA7F0E07E4F11C0028003C0000 180715101010 01040000006402020037AB7E,
  112. string result = "7E020000260112233445500000000000010000000200BA7F0E07E4F11C0028003C000018071510101001040000006402020037AB7E,7E020000260112233445570007000000010000000200BA7F0E07E4F11C0028003C000018071510101701040000006402020037AC7E,7E020000260112233445560006000000010000000200BA7F0E07E4F11C0028003C000018071510101601040000006402020037AD7E,7E020000260112233445550005000000010000000200BA7F0E07E4F11C0028003C000018071510101501040000006402020037AE7E,7E020000260112233445540004000000010000000200BA7F0E07E4F11C0028003C000018071510101401040000006402020037AF7E,7E020000261122334455190013000000010000000200BA7F0E07E4F11C0028003C000018071510102901040000006402020037987E,7E020000261122334455180012000000010000000200BA7F0E07E4F11C0028003C000018071510102801040000006402020037997E,7E020000261122334455170011000000010000000200BA7F0E07E4F11C0028003C0000180715101027010400000064020200379A7E,7E020000261122334455160010000000010000000200BA7F0E07E4F11C0028003C0000180715101026010400000064020200379B7E,7E02000026112233445515000F000000010000000200BA7F0E07E4F11C0028003C000018071510102501040000006402020037847E,7E02000026112233445514000E000000010000000200BA7F0E07E4F11C0028003C000018071510102401040000006402020037857E,7E02000026112233445513000D000000010000000200BA7F0E07E4F11C0028003C000018071510102301040000006402020037867E,7E02000026112233445512000C000000010000000200BA7F0E07E4F11C0028003C000018071510102201040000006402020037877E,7E020000260112233445530003000000010000000200BA7F0E07E4F11C0028003C000018071510101301040000006402020037A87E,7E020000260112233445520002000000010000000200BA7F0E07E4F11C0028003C000018071510101201040000006402020037A97E,7E020000260112233445510001000000010000000200BA7F0E07E4F11C0028003C000018071510101101040000006402020037AA7E,7E02000026112233445511000B000000010000000200BA7F0E07E4F11C0028003C000018071510102101040000006402020037807E,7E02000026112233445510000A000000010000000200BA7F0E07E4F11C0028003C000018071510102001040000006402020037817E,7E020000260112233445590009000000010000000200BA7F0E07E4F11C0028003C000018071510101901040000006402020037A27E,7E020000260112233445580008000000010000000200BA7F0E07E4F11C0028003C000018071510101801040000006402020037A37E";
  113. //7E020000260112233445500001000000010000000200BA7F0E07E4F11C0028003C000018071510101001040000006402020037AA7E
  114. List<string> resultHexs = result.Split(',').ToList();
  115. string hexStr = string.Join(',', hexs);
  116. foreach (var item in hexs)
  117. {
  118. Assert.Contains(item, resultHexs);
  119. }
  120. }
  121. [Fact]
  122. public void Test2()
  123. {
  124. byte[] bodys = "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".ToHexBytes();
  125. JT808_0x0200 jT808UploadLocationRequest = JT808Serializer.Deserialize<JT808_0x0200>(bodys);
  126. Assert.Equal((uint)1, jT808UploadLocationRequest.AlarmFlag);
  127. Assert.Equal(DateTime.Parse("2018-07-15 10:10:10"), jT808UploadLocationRequest.GPSTime);
  128. Assert.Equal(12222222, jT808UploadLocationRequest.Lat);
  129. Assert.Equal(132444444, jT808UploadLocationRequest.Lng);
  130. Assert.Equal(60, jT808UploadLocationRequest.Speed);
  131. Assert.Equal((uint)2, jT808UploadLocationRequest.StatusFlag);
  132. Assert.Equal(100, ((JT808_0x0200_0x01)jT808UploadLocationRequest.JT808LocationAttachData[JT808Constants.JT808_0x0200_0x01]).Mileage);
  133. Assert.Equal(55, ((JT808_0x0200_0x02)jT808UploadLocationRequest.JT808LocationAttachData[JT808Constants.JT808_0x0200_0x02]).Oil);
  134. }
  135. [Fact]
  136. public void Test3()
  137. {
  138. //00 00 00 01
  139. //00 00 00 02
  140. //00 BA 7F 0E
  141. //07 E4 F1 1C
  142. //00 28
  143. //00 3C
  144. //00 00
  145. //18 07 15 10 10 10
  146. //01
  147. // 04
  148. // 00 00 00 64
  149. //02
  150. // 02
  151. // 00 37
  152. //06
  153. // 0D
  154. // 00 00 00 12 01 73 6D 61 6C 6C 63 68 69"
  155. JT808_0x0200 jT808UploadLocationRequest = new JT808_0x0200
  156. {
  157. AlarmFlag = 1,
  158. Altitude = 40,
  159. GPSTime = DateTime.Parse("2018-07-15 10:10:10"),
  160. Lat = 12222222,
  161. Lng = 132444444,
  162. Speed = 60,
  163. Direction = 0,
  164. StatusFlag = 2,
  165. JT808LocationAttachData = new Dictionary<byte, JT808_0x0200_BodyBase>(),
  166. JT808CustomLocationAttachData = new Dictionary<byte, JT808_0x0200_CustomBodyBase>()
  167. };
  168. jT808UploadLocationRequest.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x01, new JT808_0x0200_0x01
  169. {
  170. Mileage = 100
  171. });
  172. jT808UploadLocationRequest.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x02, new JT808_0x0200_0x02
  173. {
  174. Oil = 55
  175. });
  176. jT808UploadLocationRequest.JT808CustomLocationAttachData.Add(0x06, new JT808LocationAttachImpl0x06
  177. {
  178. Age = 18,
  179. Gender = 1,
  180. UserName = "smallchi"
  181. });
  182. var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString();
  183. Assert.Equal("000000010000000200BA7F0E07E4F11C0028003C000018071510101001040000006402020037060D0000001201736D616C6C636869", hex);
  184. }
  185. [Fact]
  186. public void Test4()
  187. {
  188. // 1.添加自定义附加信息扩展 AddJT808LocationAttachMethod
  189. byte[] bodys = "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 06 0D 00 00 00 12 01 73 6D 61 6C 6C 63 68 69".ToHexBytes();
  190. JT808_0x0200 jT808UploadLocationRequest = JT808Serializer.Deserialize<JT808_0x0200>(bodys);
  191. Assert.Equal((uint)1, jT808UploadLocationRequest.AlarmFlag);
  192. Assert.Equal(DateTime.Parse("2018-07-15 10:10:10"), jT808UploadLocationRequest.GPSTime);
  193. Assert.Equal(12222222, jT808UploadLocationRequest.Lat);
  194. Assert.Equal(132444444, jT808UploadLocationRequest.Lng);
  195. Assert.Equal(60, jT808UploadLocationRequest.Speed);
  196. Assert.Equal((uint)2, jT808UploadLocationRequest.StatusFlag);
  197. Assert.Equal(100, ((JT808_0x0200_0x01)jT808UploadLocationRequest.JT808LocationAttachData[JT808Constants.JT808_0x0200_0x01]).Mileage);
  198. Assert.Equal(55, ((JT808_0x0200_0x02)jT808UploadLocationRequest.JT808LocationAttachData[JT808Constants.JT808_0x0200_0x02]).Oil);
  199. var jT808LocationAttachImpl0x06 = JT808Serializer.Deserialize<JT808LocationAttachImpl0x06>(jT808UploadLocationRequest.JT808CustomLocationAttachOriginalData[0x06]);
  200. Assert.Equal(18, jT808LocationAttachImpl0x06.Age);
  201. Assert.Equal(1, jT808LocationAttachImpl0x06.Gender);
  202. Assert.Equal("smallchi", jT808LocationAttachImpl0x06.UserName);
  203. }
  204. [Fact]
  205. public void Test5_1()
  206. {
  207. JT808Package jT808Package = new JT808Package();
  208. jT808Package.Header = new JT808Header
  209. {
  210. MsgId = Enums.JT808MsgId.位置信息汇报.ToUInt16Value(),
  211. MsgNum = 8888,
  212. TerminalPhoneNo = "112233445566",
  213. //MessageBodyProperty=new JT808MessageBodyProperty(38),
  214. };
  215. JT808_0x0200 jT808UploadLocationRequest = new JT808_0x0200
  216. {
  217. AlarmFlag = 1,
  218. Altitude = 40,
  219. GPSTime = DateTime.Parse("2018-07-15 10:10:10"),
  220. Lat = 12222222,
  221. Lng = 132444444,
  222. Speed = 60,
  223. Direction = 0,
  224. StatusFlag = 2,
  225. JT808LocationAttachData = new Dictionary<byte, JT808_0x0200_BodyBase>()
  226. };
  227. jT808UploadLocationRequest.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x01, new JT808_0x0200_0x01
  228. {
  229. Mileage = 100
  230. });
  231. jT808UploadLocationRequest.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x02, new JT808_0x0200_0x02
  232. {
  233. Oil = 55
  234. });
  235. jT808Package.Bodies = jT808UploadLocationRequest;
  236. var hex = JT808Serializer.Serialize(jT808Package).ToHexString();
  237. }
  238. [Fact]
  239. public void Test5()
  240. {
  241. //7E
  242. //02 00
  243. //00 33
  244. //11 22 33 44 55 66
  245. //22 B8
  246. //00 00 00 01
  247. //00 00 00 02
  248. //00 BA 7F 0E
  249. //07 E4 F1 1C
  250. //00 28
  251. //00 3C
  252. //00 00
  253. //18 07 15 10 10 10
  254. //01
  255. // 04
  256. // 00 00 00 64
  257. //02
  258. // 02
  259. // 00 37
  260. //42 7E
  261. byte[] bytes = "7E 02 00 00 26 11 22 33 44 55 66 22 B8 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 57 7E".ToHexBytes();
  262. var jT808Package = JT808Serializer.Deserialize<JT808Package>(bytes);
  263. Assert.Equal(Enums.JT808MsgId.位置信息汇报.ToValue(), jT808Package.Header.MsgId);
  264. Assert.Equal(38, jT808Package.Header.MessageBodyProperty.DataLength);
  265. Assert.Equal(8888, jT808Package.Header.MsgNum);
  266. Assert.Equal("112233445566", jT808Package.Header.TerminalPhoneNo);
  267. Assert.False(jT808Package.Header.MessageBodyProperty.IsPackage);
  268. Assert.Equal(0, jT808Package.Header.PackageIndex);
  269. Assert.Equal(0, jT808Package.Header.PackgeCount);
  270. Assert.Equal(JT808EncryptMethod.None, jT808Package.Header.MessageBodyProperty.Encrypt);
  271. JT808_0x0200 jT808UploadLocationRequest = (JT808_0x0200)jT808Package.Bodies;
  272. Assert.Equal((uint)1, jT808UploadLocationRequest.AlarmFlag);
  273. Assert.Equal(DateTime.Parse("2018-07-15 10:10:10"), jT808UploadLocationRequest.GPSTime);
  274. Assert.Equal(12222222, jT808UploadLocationRequest.Lat);
  275. Assert.Equal(132444444, jT808UploadLocationRequest.Lng);
  276. Assert.Equal(60, jT808UploadLocationRequest.Speed);
  277. Assert.Equal((uint)2, jT808UploadLocationRequest.StatusFlag);
  278. Assert.Equal(100, ((JT808_0x0200_0x01)jT808UploadLocationRequest.JT808LocationAttachData[JT808Constants.JT808_0x0200_0x01]).Mileage);
  279. Assert.Equal(55, ((JT808_0x0200_0x02)jT808UploadLocationRequest.JT808LocationAttachData[JT808Constants.JT808_0x0200_0x02]).Oil);
  280. }
  281. [Fact]
  282. public void Test_all_attcahids()
  283. {
  284. JT808Package jT808Package = new JT808Package();
  285. jT808Package.Header = new JT808Header
  286. {
  287. MsgId = Enums.JT808MsgId.位置信息汇报.ToUInt16Value(),
  288. MsgNum = 8888,
  289. TerminalPhoneNo = "112233445566",
  290. };
  291. JT808_0x0200 jT808UploadLocationRequest = new JT808_0x0200();
  292. jT808UploadLocationRequest.AlarmFlag = 1;
  293. jT808UploadLocationRequest.Altitude = 40;
  294. jT808UploadLocationRequest.GPSTime = DateTime.Parse("2018-07-15 10:10:10");
  295. jT808UploadLocationRequest.Lat = 12222222;
  296. jT808UploadLocationRequest.Lng = 132444444;
  297. jT808UploadLocationRequest.Speed = 60;
  298. jT808UploadLocationRequest.Direction = 0;
  299. jT808UploadLocationRequest.StatusFlag = 2;
  300. jT808UploadLocationRequest.JT808LocationAttachData = new Dictionary<byte, JT808_0x0200_BodyBase>();
  301. jT808UploadLocationRequest.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x01, new JT808_0x0200_0x01
  302. {
  303. Mileage = 100
  304. });
  305. jT808UploadLocationRequest.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x02, new JT808_0x0200_0x02
  306. {
  307. Oil = 55
  308. });
  309. jT808UploadLocationRequest.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x03, new JT808_0x0200_0x03
  310. {
  311. Speed = 56
  312. });
  313. jT808UploadLocationRequest.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x04, new JT808_0x0200_0x04
  314. {
  315. EventId = 1
  316. });
  317. jT808UploadLocationRequest.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x11, new JT808_0x0200_0x11
  318. {
  319. AreaId = 1,
  320. JT808PositionType = Enums.JT808PositionType.圆形区域
  321. });
  322. jT808UploadLocationRequest.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x12, new JT808_0x0200_0x12
  323. {
  324. AreaId = 1,
  325. JT808PositionType = Enums.JT808PositionType.圆形区域,
  326. Direction = Enums.JT808DirectionType.出
  327. });
  328. jT808UploadLocationRequest.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x13, new JT808_0x0200_0x13
  329. {
  330. DrivenRoute = Enums.JT808DrivenRouteType.过长,
  331. DrivenRouteId = 2,
  332. Time = 34
  333. });
  334. jT808UploadLocationRequest.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x25, new JT808_0x0200_0x25
  335. {
  336. CarSignalStatus = 23
  337. });
  338. jT808UploadLocationRequest.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x2A, new JT808_0x0200_0x2A
  339. {
  340. IOStatus = 244
  341. });
  342. jT808UploadLocationRequest.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x2B, new JT808_0x0200_0x2B
  343. {
  344. Analog = 242
  345. });
  346. jT808UploadLocationRequest.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x30, new JT808_0x0200_0x30
  347. {
  348. WiFiSignalStrength = 0x02
  349. });
  350. jT808UploadLocationRequest.JT808LocationAttachData.Add(JT808Constants.JT808_0x0200_0x31, new JT808_0x0200_0x31
  351. {
  352. GNSSCount = 0x05
  353. });
  354. jT808Package.Bodies = jT808UploadLocationRequest;
  355. var hex = JT808Serializer.Serialize(jT808Package).ToHexString();
  356. Assert.Equal("7E0200005C11223344556622B8000000010000000200BA7F0E07E4F11C0028003C00001807151010100104000000640202003703020038040200011105010000000112060100000001011307000000020022012504000000172A0200F42B04000000F2300102310105167E", hex);
  357. //7E0200005C11223344556622B8000000010000000200BA7F0E07E4F11C0028003C00001807151010100104000000640202003703020038040200011105010000000112060100000001011307000000020022012504000000172A0200F42B04000000F2300102310105167E
  358. }
  359. [Fact]
  360. public void Test6()
  361. {
  362. JT808_0x0200 jT808UploadLocationRequest = new JT808_0x0200
  363. {
  364. AlarmFlag = 1,
  365. Altitude = 40,
  366. GPSTime = DateTime.Parse("2018-07-15 10:10:10"),
  367. Lat = -12222222,
  368. Lng = -132444444,
  369. Speed = 60,
  370. Direction = 0,
  371. JT808LocationAttachData = new Dictionary<byte, JT808_0x0200_BodyBase>()
  372. };
  373. jT808UploadLocationRequest.StatusFlag = 402653184;
  374. var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString();
  375. Assert.Equal("0000000118000000FF4580F2F81B0EE40028003C0000180715101010", hex);
  376. }
  377. [Fact]
  378. public void Test6_1()
  379. {
  380. byte[] bodys = "0000000118000000FF4580F2F81B0EE40028003C0000180715101010".ToHexBytes();
  381. JT808_0x0200 jT808UploadLocationRequest = JT808Serializer.Deserialize<JT808_0x0200>(bodys);
  382. Assert.Equal(1u, jT808UploadLocationRequest.AlarmFlag);
  383. Assert.Equal(402653184u, jT808UploadLocationRequest.StatusFlag);
  384. Assert.Equal(DateTime.Parse("2018-07-15 10:10:10"), jT808UploadLocationRequest.GPSTime);
  385. Assert.Equal(-12222222, jT808UploadLocationRequest.Lat);
  386. Assert.Equal(-132444444, jT808UploadLocationRequest.Lng);
  387. Assert.Equal(60, jT808UploadLocationRequest.Speed); //‭402653184‬
  388. }
  389. [Fact]
  390. public void Test7()
  391. {
  392. JT808_0x0200 jT808UploadLocationRequest = new JT808_0x0200
  393. {
  394. AlarmFlag = 1,
  395. Altitude = 40,
  396. GPSTime = DateTime.Parse("2018-07-15 10:10:10"),
  397. Lat = 12222222,
  398. Lng = 132444444,
  399. Speed = 60,
  400. Direction = 0,
  401. JT808LocationAttachData = new Dictionary<byte, JT808_0x0200_BodyBase>()
  402. };
  403. jT808UploadLocationRequest.StatusFlag = 0x8000000;
  404. var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString();
  405. Assert.Equal("000000010800000000BA7F0EF81B0EE40028003C0000180715101010", hex);
  406. }
  407. [Fact]
  408. public void Test7_1()
  409. {
  410. byte[] bodys = "000000010800000000BA7F0EF81B0EE40028003C0000180715101010".ToHexBytes();
  411. JT808_0x0200 jT808UploadLocationRequest = JT808Serializer.Deserialize<JT808_0x0200>(bodys);
  412. Assert.Equal(1u, jT808UploadLocationRequest.AlarmFlag);
  413. Assert.Equal((uint)0x8000000, jT808UploadLocationRequest.StatusFlag);
  414. Assert.Equal(DateTime.Parse("2018-07-15 10:10:10"), jT808UploadLocationRequest.GPSTime);
  415. Assert.Equal(12222222, jT808UploadLocationRequest.Lat);
  416. Assert.Equal(-132444444, jT808UploadLocationRequest.Lng);
  417. Assert.Equal(60, jT808UploadLocationRequest.Speed); //‭402653184‬
  418. }
  419. }
  420. }