25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

341 lines
17 KiB

  1. using JTNE.Protocol.Extensions;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. using Xunit;
  6. using JTNE.Protocol.Enums;
  7. using JTNE.Protocol.MessageBody;
  8. using JTNE.Protocol.Internal;
  9. namespace JTNE.Protocol.Test.Package
  10. {
  11. public class JTNE_0x02_PackageTest
  12. {
  13. [Fact]
  14. public void Test1()
  15. {
  16. JTNEPackage jTNEPackage = new JTNEPackage();
  17. jTNEPackage.AskId = JTNEAskId.Success;
  18. jTNEPackage.MsgId = JTNEMsgId.UploadIM;
  19. jTNEPackage.VIN = "123456789";
  20. JTNE_0x02 jTNE_0X02 = new JTNE_0x02();
  21. jTNE_0X02.Values = new Dictionary<byte, JTNE_0x02_Body>();
  22. JTNE_0x02_0x01 jTNE_0X02_0X01 = new JTNE_0x02_0x01();
  23. jTNE_0X02_0X01.Accelerator = 0x02;
  24. jTNE_0X02_0X01.Brakes = 0x03;
  25. jTNE_0X02_0X01.CarStatus = 0x04;
  26. jTNE_0X02_0X01.ChargeStatus = 0x05;
  27. jTNE_0X02_0X01.DCStatus = 0x06;
  28. jTNE_0X02_0X01.OperationMode = 0x07;
  29. jTNE_0X02_0X01.Resistance = 123;
  30. jTNE_0X02_0X01.SOC = 0x03;
  31. jTNE_0X02_0X01.Speed = 58;
  32. jTNE_0X02_0X01.Stall = 0x02;
  33. jTNE_0X02_0X01.TotalDis = 6666;
  34. jTNE_0X02_0X01.TotalTemp = 99;
  35. jTNE_0X02_0X01.TotalVoltage = 100;
  36. jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x01, jTNE_0X02_0X01);
  37. JTNE_0x02_0x02 jTNE_0X02_0X02 = new JTNE_0x02_0x02();
  38. jTNE_0X02_0X02.Electricals = new List<Metadata.Electrical>();
  39. Metadata.Electrical electrical1 = new Metadata.Electrical();
  40. electrical1.ElControlTemp = 0x01;
  41. electrical1.ElCurrent = 100;
  42. electrical1.ElNo = 0x01;
  43. electrical1.ElSpeed = 65;
  44. electrical1.ElStatus = 0x02;
  45. electrical1.ElTemp = 0x03;
  46. electrical1.ElTorque = 55;
  47. electrical1.ElVoltage = 236;
  48. Metadata.Electrical electrical2 = new Metadata.Electrical();
  49. electrical2.ElControlTemp = 0x02;
  50. electrical2.ElCurrent = 101;
  51. electrical2.ElNo = 0x02;
  52. electrical2.ElSpeed = 66;
  53. electrical2.ElStatus = 0x03;
  54. electrical2.ElTemp = 0x05;
  55. electrical2.ElTorque = 566;
  56. electrical2.ElVoltage = 2136;
  57. jTNE_0X02_0X02.Electricals.Add(electrical1);
  58. jTNE_0X02_0X02.Electricals.Add(electrical2);
  59. jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x02, jTNE_0X02_0X02);
  60. JTNE_0x02_0x03 jTNE_0X02_0X03 = new JTNE_0x02_0x03();
  61. jTNE_0X02_0X03.DCStatus = 0x02;
  62. jTNE_0X02_0X03.FuelBatteryCurrent = 111;
  63. jTNE_0X02_0X03.FuelBatteryVoltage = 2222;
  64. jTNE_0X02_0X03.FuelConsumptionRate = 3222;
  65. jTNE_0X02_0X03.HydrogenSystemMaxConcentrations = 6666;
  66. jTNE_0X02_0X03.HydrogenSystemMaxConcentrationsNo = 0x56;
  67. jTNE_0X02_0X03.HydrogenSystemMaxPressure = 3336;
  68. jTNE_0X02_0X03.HydrogenSystemMaxPressureNo = 0x65;
  69. jTNE_0X02_0X03.HydrogenSystemMaxTemp = 3355;
  70. jTNE_0X02_0X03.HydrogenSystemMaxTempNo = 0x22;
  71. jTNE_0X02_0X03.Temperatures = new byte[]
  72. {
  73. 0x01,0x02,0x03
  74. };
  75. jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x03, jTNE_0X02_0X03);
  76. JTNE_0x02_0x04 jTNE_0X02_0X04 = new JTNE_0x02_0x04();
  77. jTNE_0X02_0X04.EngineStatus = 0x01;
  78. jTNE_0X02_0X04.FuelRate = 102;
  79. jTNE_0X02_0X04.Revs = 203;
  80. jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x04, jTNE_0X02_0X04);
  81. JTNE_0x02_0x05 jTNE_0X02_0X05 = new JTNE_0x02_0x05();
  82. jTNE_0X02_0X05.Lat = 1233355;
  83. jTNE_0X02_0X05.Lng = 3255555;
  84. jTNE_0X02_0X05.PositioStatus = 0x01;
  85. jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x05, jTNE_0X02_0X05);
  86. JTNE_0x02_0x06 jTNE_0X02_0X06 = new JTNE_0x02_0x06();
  87. jTNE_0X02_0X06.MaxTempBatteryAssemblyNo = 0x12;
  88. jTNE_0X02_0X06.MaxTempProbeBatteryNo = 0x32;
  89. jTNE_0X02_0X06.MaxTempProbeBatteryValue = 0x42;
  90. jTNE_0X02_0X06.MaxVoltageBatteryAssemblyNo = 0x11;
  91. jTNE_0X02_0X06.MaxVoltageSingleBatteryNo = 0x15;
  92. jTNE_0X02_0X06.MaxVoltageSingleBatteryValue = 123;
  93. jTNE_0X02_0X06.MinTempBatteryAssemblyNo = 0x32;
  94. jTNE_0X02_0X06.MinTempProbeBatteryNo = 0x11;
  95. jTNE_0X02_0X06.MinTempProbeBatteryValue = 0x06;
  96. jTNE_0X02_0X06.MinVoltageBatteryAssemblyNo = 0x07;
  97. jTNE_0X02_0X06.MinVoltageSingleBatteryNo = 0x09;
  98. jTNE_0X02_0X06.MinVoltageSingleBatteryValue = 0x08;
  99. jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x06, jTNE_0X02_0X06);
  100. JTNE_0x02_0x07 jTNE_0X02_0X07 = new JTNE_0x02_0x07();
  101. jTNE_0X02_0X07.AlarmBatteryFlag = 5533;
  102. jTNE_0X02_0X07.AlarmLevel = 0x11;
  103. jTNE_0X02_0X07.AlarmBatteryOthers = new List<uint>
  104. {
  105. 1000,1001,1002
  106. };
  107. jTNE_0X02_0X07.AlarmEls = new List<uint>
  108. {
  109. 2000,2001,2002
  110. };
  111. jTNE_0X02_0X07.AlarmEngines = new List<uint>
  112. {
  113. 3000,3001,3002
  114. };
  115. jTNE_0X02_0X07.AlarmOthers = new List<uint>
  116. {
  117. 4000,4001,4002
  118. };
  119. jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x07, jTNE_0X02_0X07);
  120. JTNE_0x02_0x08 jTNE_0X02_0X08 = new JTNE_0x02_0x08();
  121. jTNE_0X02_0X08.BatteryAssemblies = new List<Metadata.BatteryAssembly>();
  122. Metadata.BatteryAssembly batteryAssembly1 = new Metadata.BatteryAssembly();
  123. batteryAssembly1.BatteryAssemblyCurrent = 123;
  124. batteryAssembly1.BatteryAssemblyNo = 0x01;
  125. batteryAssembly1.BatteryAssemblyVoltage = 0x02;
  126. batteryAssembly1.SingleBatteryCount = 55;
  127. batteryAssembly1.ThisSingleBatteryBeginCount = 0x02;
  128. batteryAssembly1.ThisSingleBatteryBeginNo = 111;
  129. batteryAssembly1.SingleBatteryVoltages = new List<ushort> {
  130. 111,222,333
  131. };
  132. Metadata.BatteryAssembly batteryAssembly2 = new Metadata.BatteryAssembly();
  133. batteryAssembly2.BatteryAssemblyCurrent = 1234;
  134. batteryAssembly2.BatteryAssemblyNo = 0x03;
  135. batteryAssembly2.BatteryAssemblyVoltage = 0x05;
  136. batteryAssembly2.SingleBatteryCount = 66;
  137. batteryAssembly2.ThisSingleBatteryBeginCount = 0x02;
  138. batteryAssembly2.ThisSingleBatteryBeginNo = 222;
  139. batteryAssembly2.SingleBatteryVoltages = new List<ushort> {
  140. 444,555,666
  141. };
  142. jTNE_0X02_0X08.BatteryAssemblies.Add(batteryAssembly1);
  143. jTNE_0X02_0X08.BatteryAssemblies.Add(batteryAssembly2);
  144. jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x08, jTNE_0X02_0X08);
  145. JTNE_0x02_0x09 jTNE_0X02_0X09 = new JTNE_0x02_0x09();
  146. jTNE_0X02_0X09.BatteryTemperatures = new List<Metadata.BatteryTemperature>();
  147. Metadata.BatteryTemperature batteryTemperature1 = new Metadata.BatteryTemperature();
  148. batteryTemperature1.BatteryAssemblyNo = 0x01;
  149. batteryTemperature1.Temperatures = new byte[]
  150. {
  151. 0x01,0x02,0x03,0x04
  152. };
  153. Metadata.BatteryTemperature batteryTemperature2 = new Metadata.BatteryTemperature();
  154. batteryTemperature2.BatteryAssemblyNo = 0x02;
  155. batteryTemperature2.Temperatures = new byte[]
  156. {
  157. 0x05,0x06,0x07,0x08
  158. };
  159. jTNE_0X02_0X09.BatteryTemperatures.Add(batteryTemperature1);
  160. jTNE_0X02_0X09.BatteryTemperatures.Add(batteryTemperature2);
  161. jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x09, jTNE_0X02_0X09);
  162. jTNEPackage.Bodies = jTNE_0X02;
  163. var hex = JTNESerializer.Serialize(jTNEPackage).ToHexString();
  164. Assert.Equal("2323020131323334353637383900000000000000000100D001040507003A00001A0A00640063030602007B02030202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502040100CB006605010031AD030012D1CB061115007B0709000832124211320607110000159D03000003E8000003E9000003EA03000007D0000007D1000007D20300000BB800000BB900000BBA0300000FA000000FA100000FA20802010002007B0037006F03006F00DE014D03000504D2004200DE0301BC022B029A0902010004010203040200040506070867", hex);
  165. }
  166. [Fact]
  167. public void Test2()
  168. {
  169. var data = "2323020131323334353637383900000000000000000100D001040507003A00001A0A00640063030602007B02030202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502040100CB006605010031AD030012D1CB061115007B0709000832124211320607110000159D03000003E8000003E9000003EA03000007D0000007D1000007D20300000BB800000BB900000BBA0300000FA000000FA100000FA20802010002007B0037006F03006F00DE014D03000504D2004200DE0301BC022B029A0902010004010203040200040506070867".ToHexBytes();
  170. JTNEPackage jTNEPackage = JTNESerializer.Deserialize(data);
  171. JTNE_0x02 jTNE_0X02 = jTNEPackage.Bodies as JTNE_0x02;
  172. JTNE_0x02_0x01 jTNE_0X02_0X01 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x01] as JTNE_0x02_0x01;
  173. Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x01, jTNE_0X02_0X01.TypeCode);
  174. Assert.Equal(0x02, jTNE_0X02_0X01.Accelerator);
  175. Assert.Equal(0x03, jTNE_0X02_0X01.Brakes);
  176. Assert.Equal(0x04, jTNE_0X02_0X01.CarStatus);
  177. Assert.Equal(0x05, jTNE_0X02_0X01.ChargeStatus);
  178. Assert.Equal(0x06, jTNE_0X02_0X01.DCStatus);
  179. Assert.Equal(0x07, jTNE_0X02_0X01.OperationMode);
  180. Assert.Equal(123, jTNE_0X02_0X01.Resistance);
  181. Assert.Equal(0x03, jTNE_0X02_0X01.SOC);
  182. Assert.Equal(58, jTNE_0X02_0X01.Speed);
  183. Assert.Equal(0x02, jTNE_0X02_0X01.Stall);
  184. Assert.Equal((uint)6666, jTNE_0X02_0X01.TotalDis);
  185. Assert.Equal(99, jTNE_0X02_0X01.TotalTemp);
  186. Assert.Equal(100, jTNE_0X02_0X01.TotalVoltage);
  187. JTNE_0x02_0x02 jTNE_0X02_0X02 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x02] as JTNE_0x02_0x02;
  188. Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x02, jTNE_0X02_0X02.TypeCode);
  189. Assert.Equal(2, jTNE_0X02_0X02.ElectricalCount);
  190. Metadata.Electrical electrical1 = jTNE_0X02_0X02.Electricals[0];
  191. Assert.Equal(0x01, electrical1.ElControlTemp);
  192. Assert.Equal(100, electrical1.ElCurrent);
  193. Assert.Equal(0x01, electrical1.ElNo);
  194. Assert.Equal(65, electrical1.ElSpeed);
  195. Assert.Equal(0x02, electrical1.ElStatus);
  196. Assert.Equal(0x03, electrical1.ElTemp);
  197. Assert.Equal(55, electrical1.ElTorque);
  198. Assert.Equal(236, electrical1.ElVoltage);
  199. Metadata.Electrical electrical2 = jTNE_0X02_0X02.Electricals[1];
  200. Assert.Equal(0x02, electrical2.ElControlTemp);
  201. Assert.Equal(101, electrical2.ElCurrent);
  202. Assert.Equal(0x02, electrical2.ElNo);
  203. Assert.Equal(66, electrical2.ElSpeed);
  204. Assert.Equal(0x03, electrical2.ElStatus);
  205. Assert.Equal(0x05, electrical2.ElTemp);
  206. Assert.Equal(566, electrical2.ElTorque);
  207. Assert.Equal(2136, electrical2.ElVoltage);
  208. JTNE_0x02_0x03 jTNE_0X02_0X03 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x03] as JTNE_0x02_0x03;
  209. Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x03, jTNE_0X02_0X03.TypeCode);
  210. Assert.Equal(0x02, jTNE_0X02_0X03.DCStatus);
  211. Assert.Equal(111, jTNE_0X02_0X03.FuelBatteryCurrent);
  212. Assert.Equal(2222, jTNE_0X02_0X03.FuelBatteryVoltage);
  213. Assert.Equal(3222, jTNE_0X02_0X03.FuelConsumptionRate);
  214. Assert.Equal(6666, jTNE_0X02_0X03.HydrogenSystemMaxConcentrations);
  215. Assert.Equal(0x56, jTNE_0X02_0X03.HydrogenSystemMaxConcentrationsNo);
  216. Assert.Equal(3336, jTNE_0X02_0X03.HydrogenSystemMaxPressure);
  217. Assert.Equal(0x65, jTNE_0X02_0X03.HydrogenSystemMaxPressureNo);
  218. Assert.Equal(3355, jTNE_0X02_0X03.HydrogenSystemMaxTemp);
  219. Assert.Equal(0x22, jTNE_0X02_0X03.HydrogenSystemMaxTempNo);
  220. Assert.Equal(new byte[] { 0x01, 0x02, 0x03 }, jTNE_0X02_0X03.Temperatures);
  221. JTNE_0x02_0x04 jTNE_0X02_0X04 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x04] as JTNE_0x02_0x04;
  222. Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x04, jTNE_0X02_0X04.TypeCode);
  223. Assert.Equal(0x01, jTNE_0X02_0X04.EngineStatus);
  224. Assert.Equal(102, jTNE_0X02_0X04.FuelRate);
  225. Assert.Equal(203, jTNE_0X02_0X04.Revs);
  226. JTNE_0x02_0x05 jTNE_0X02_0X05 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x05] as JTNE_0x02_0x05;
  227. Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x05, jTNE_0X02_0X05.TypeCode);
  228. Assert.Equal((uint)1233355, jTNE_0X02_0X05.Lat);
  229. Assert.Equal((uint)3255555, jTNE_0X02_0X05.Lng);
  230. Assert.Equal(0x01, jTNE_0X02_0X05.PositioStatus);
  231. JTNE_0x02_0x06 jTNE_0X02_0X06 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x06] as JTNE_0x02_0x06;
  232. Assert.Equal(0x12, jTNE_0X02_0X06.MaxTempBatteryAssemblyNo);
  233. Assert.Equal(0x32, jTNE_0X02_0X06.MaxTempProbeBatteryNo);
  234. Assert.Equal(0x42, jTNE_0X02_0X06.MaxTempProbeBatteryValue);
  235. Assert.Equal(0x11, jTNE_0X02_0X06.MaxVoltageBatteryAssemblyNo);
  236. Assert.Equal(0x15, jTNE_0X02_0X06.MaxVoltageSingleBatteryNo);
  237. Assert.Equal(123, jTNE_0X02_0X06.MaxVoltageSingleBatteryValue);
  238. Assert.Equal(0x11, jTNE_0X02_0X06.MinTempProbeBatteryNo);
  239. Assert.Equal(0x06, jTNE_0X02_0X06.MinTempProbeBatteryValue);
  240. Assert.Equal(0x07, jTNE_0X02_0X06.MinVoltageBatteryAssemblyNo);
  241. Assert.Equal(0x09, jTNE_0X02_0X06.MinVoltageSingleBatteryNo);
  242. Assert.Equal(0x08, jTNE_0X02_0X06.MinVoltageSingleBatteryValue);
  243. JTNE_0x02_0x07 jTNE_0X02_0X07 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x07] as JTNE_0x02_0x07;
  244. Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x07, jTNE_0X02_0X07.TypeCode);
  245. Assert.Equal(0x11, jTNE_0X02_0X07.AlarmLevel);
  246. Assert.Equal(3, jTNE_0X02_0X07.AlarmBatteryOthers.Count);
  247. Assert.Equal(new List<uint>
  248. {
  249. 1000,1001,1002
  250. }, jTNE_0X02_0X07.AlarmBatteryOthers);
  251. Assert.Equal(3, jTNE_0X02_0X07.AlarmEls.Count);
  252. Assert.Equal(new List<uint>
  253. {
  254. 2000,2001,2002
  255. }, jTNE_0X02_0X07.AlarmEls);
  256. Assert.Equal(3, jTNE_0X02_0X07.AlarmEngines.Count);
  257. Assert.Equal(new List<uint>
  258. {
  259. 3000,3001,3002
  260. }, jTNE_0X02_0X07.AlarmEngines);
  261. Assert.Equal(3, jTNE_0X02_0X07.AlarmOthers.Count);
  262. Assert.Equal(new List<uint>
  263. {
  264. 4000,4001,4002
  265. }, jTNE_0X02_0X07.AlarmOthers);
  266. JTNE_0x02_0x08 jTNE_0X02_0X08 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x08] as JTNE_0x02_0x08;
  267. Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x08, jTNE_0X02_0X08.TypeCode);
  268. Assert.Equal(2, jTNE_0X02_0X08.BatteryAssemblyCount);
  269. Metadata.BatteryAssembly batteryAssembly1 = jTNE_0X02_0X08.BatteryAssemblies[0];
  270. Assert.Equal(123, batteryAssembly1.BatteryAssemblyCurrent);
  271. Assert.Equal(0x01, batteryAssembly1.BatteryAssemblyNo);
  272. Assert.Equal(0x02, batteryAssembly1.BatteryAssemblyVoltage);
  273. Assert.Equal(55, batteryAssembly1.SingleBatteryCount);
  274. Assert.Equal(111, batteryAssembly1.ThisSingleBatteryBeginNo);
  275. Assert.Equal(3, batteryAssembly1.ThisSingleBatteryBeginCount);
  276. Assert.Equal(new List<ushort> {
  277. 111,222,333
  278. }, batteryAssembly1.SingleBatteryVoltages);
  279. Metadata.BatteryAssembly batteryAssembly2 = jTNE_0X02_0X08.BatteryAssemblies[1];
  280. Assert.Equal(1234, batteryAssembly2.BatteryAssemblyCurrent);
  281. Assert.Equal(0x03, batteryAssembly2.BatteryAssemblyNo);
  282. Assert.Equal(0x05, batteryAssembly2.BatteryAssemblyVoltage);
  283. Assert.Equal(66, batteryAssembly2.SingleBatteryCount);
  284. Assert.Equal(222, batteryAssembly2.ThisSingleBatteryBeginNo);
  285. Assert.Equal(3, batteryAssembly2.ThisSingleBatteryBeginCount);
  286. Assert.Equal(new List<ushort> {
  287. 444,555,666
  288. }, batteryAssembly2.SingleBatteryVoltages);
  289. JTNE_0x02_0x09 jTNE_0X02_0X09 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x09] as JTNE_0x02_0x09;
  290. Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x09, jTNE_0X02_0X09.TypeCode);
  291. Assert.Equal(2, jTNE_0X02_0X09.BatteryTemperatureCount);
  292. Metadata.BatteryTemperature batteryTemperature1 = jTNE_0X02_0X09.BatteryTemperatures[0];
  293. Assert.Equal(0x01, batteryTemperature1.BatteryAssemblyNo);
  294. Assert.Equal(4, batteryTemperature1.TemperatureProbeCount);
  295. Assert.Equal(new byte[]
  296. {
  297. 0x01,0x02,0x03,0x04
  298. }, batteryTemperature1.Temperatures);
  299. Metadata.BatteryTemperature batteryTemperature2 = jTNE_0X02_0X09.BatteryTemperatures[1];
  300. Assert.Equal(0x02, batteryTemperature2.BatteryAssemblyNo);
  301. Assert.Equal(4, batteryTemperature2.TemperatureProbeCount);
  302. Assert.Equal(new byte[]
  303. {
  304. 0x05,0x06,0x07,0x08
  305. }, batteryTemperature2.Temperatures);
  306. }
  307. }
  308. }