Просмотр исходного кода

将协议分成两部分,1,设备到企业平台协议,2,企业平台到公共平台协议

master
TK 6 лет назад
Родитель
Сommit
16c058c89d
100 измененных файлов: 4556 добавлений и 2354 удалений
  1. +90
    -90
      src/JTNE.Protocol.Benchmark/JTNESerializerContext.cs
  2. +3
    -3
      src/JTNE.Protocol.Test/Extensions/JTNEPackageExtensions_DeviceTest.cs
  3. +33
    -0
      src/JTNE.Protocol.Test/Extensions/JTNEPackageExtensions_PlatformTest.cs
  4. +0
    -55
      src/JTNE.Protocol.Test/JTNEHeaderPackageTest.cs
  5. +55
    -0
      src/JTNE.Protocol.Test/JTNEHeaderPackage_DeviceTest.cs
  6. +54
    -0
      src/JTNE.Protocol.Test/JTNEHeaderPackage_PlatformTest.cs
  7. +0
    -45
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x01Test.cs
  8. +45
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x01_DeviceTest.cs
  9. +45
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x01_PlatformTest.cs
  10. +0
    -143
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02Test.cs
  11. +0
    -54
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x01Test.cs
  12. +54
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x01_DeviceTest.cs
  13. +50
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x01_PlatformTest.cs
  14. +11
    -11
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x02_DeviceTest.cs
  15. +68
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x02_PlatformTest.cs
  16. +0
    -53
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x03Test.cs
  17. +53
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x03_DeviceTest.cs
  18. +53
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x03_PlatformTest.cs
  19. +0
    -34
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x04Test.cs
  20. +34
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x04_DeviceTest.cs
  21. +34
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x04_PlatformTest.cs
  22. +0
    -34
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x05Test.cs
  23. +34
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x05_DeviceTest.cs
  24. +34
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x05_PlatformTest.cs
  25. +0
    -50
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x06Test.cs
  26. +50
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x06_DeviceTest.cs
  27. +50
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x06_PlatformTest.cs
  28. +0
    -67
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x07Test.cs
  29. +67
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x07_DeviceTest.cs
  30. +67
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x07_PlatformTest.cs
  31. +11
    -11
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x08_DeviceTest.cs
  32. +11
    -11
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x09_DeviceTest.cs
  33. +0
    -170
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_CompositeTest.cs
  34. +170
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_Composite_DeviceTest.cs
  35. +166
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_Composite_PlatformTest.cs
  36. +0
    -139
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_CustomBodyTest.cs
  37. +139
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_CustomBody_DeviceTest.cs
  38. +139
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_CustomBody_PlatformTest.cs
  39. +143
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_DeviceTest.cs
  40. +139
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_PlatformTest.cs
  41. +0
    -144
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x03Test.cs
  42. +144
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x03_DeviceTest.cs
  43. +140
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x03_PlatformTest.cs
  44. +0
    -31
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x04Test.cs
  45. +31
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x04_DeviceTest.cs
  46. +31
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x04_PlatformTest.cs
  47. +0
    -37
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x05Test.cs
  48. +37
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x05_PlatformTest.cs
  49. +0
    -31
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x06Test.cs
  50. +31
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x06_PlatformTest.cs
  51. +36
    -36
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x80Reply_CustomBody_DeviceTest.cs
  52. +100
    -100
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x80Reply_DeviceTest.cs
  53. +0
    -33
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x80Test.cs
  54. +34
    -0
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x80_DeviceTest.cs
  55. +34
    -34
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x81_CustomBody_DeviceTest.cs
  56. +100
    -100
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x81_DeviceTest.cs
  57. +20
    -20
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x82_CustomBody_DeviceTest.cs
  58. +28
    -28
      src/JTNE.Protocol.Test/MessageBody/JTNE_0x82_DeviceTest.cs
  59. +43
    -43
      src/JTNE.Protocol.Test/Package/JTNE_0x01_Package_DeviceTest.cs
  60. +122
    -0
      src/JTNE.Protocol.Test/Package/JTNE_0x01_Package_PlatformTest.cs
  61. +0
    -340
      src/JTNE.Protocol.Test/Package/JTNE_0x02_PackageTest.cs
  62. +340
    -0
      src/JTNE.Protocol.Test/Package/JTNE_0x02_Package_DeviceTest.cs
  63. +243
    -0
      src/JTNE.Protocol.Test/Package/JTNE_0x02_Package_PlatformTest.cs
  64. +0
    -41
      src/JTNE.Protocol.Test/Package/JTNE_0x04_PackageTest.cs
  65. +41
    -0
      src/JTNE.Protocol.Test/Package/JTNE_0x04_Package_DeviceTest.cs
  66. +41
    -0
      src/JTNE.Protocol.Test/Package/JTNE_0x04_Package_PlatformTest.cs
  67. +0
    -46
      src/JTNE.Protocol.Test/Package/JTNE_0x05_PackageTest.cs
  68. +46
    -0
      src/JTNE.Protocol.Test/Package/JTNE_0x05_Package_PlatformTest.cs
  69. +0
    -41
      src/JTNE.Protocol.Test/Package/JTNE_0x06_PackageTest.cs
  70. +41
    -0
      src/JTNE.Protocol.Test/Package/JTNE_0x06_Package_PlatformTest.cs
  71. +0
    -35
      src/JTNE.Protocol.Test/Package/JTNE_0x07_PackageTest.cs
  72. +35
    -0
      src/JTNE.Protocol.Test/Package/JTNE_0x07_Package_DeviceTest.cs
  73. +0
    -35
      src/JTNE.Protocol.Test/Package/JTNE_0x08_PackageTest.cs
  74. +35
    -0
      src/JTNE.Protocol.Test/Package/JTNE_0x08_Package_DeviceTest.cs
  75. +7
    -16
      src/JTNE.Protocol/Enums/JTNEMsgId_Device.cs
  76. +45
    -0
      src/JTNE.Protocol/Enums/JTNEMsgId_Platform.cs
  77. +9
    -9
      src/JTNE.Protocol/Extensions/JTNEPackage_DeviceExtensions.cs
  78. +85
    -0
      src/JTNE.Protocol/Extensions/JTNEPackage_PlatformExtensions.cs
  79. +15
    -15
      src/JTNE.Protocol/Formatters/JTNEHeaderPackage_DeviceFormatter.cs
  80. +97
    -0
      src/JTNE.Protocol/Formatters/JTNEHeaderPackage_PlatformFormatter.cs
  81. +21
    -21
      src/JTNE.Protocol/Formatters/JTNEPackage_DeviceFormatter.cs
  82. +156
    -0
      src/JTNE.Protocol/Formatters/JTNEPackage_PlatformFormatter.cs
  83. +46
    -0
      src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x01_Device_Formatter.cs
  84. +0
    -46
      src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x01_Formatter.cs
  85. +46
    -0
      src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x01_Platform_Formatter.cs
  86. +4
    -4
      src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x01_Device_Formatter.cs
  87. +48
    -0
      src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x01_Platform_Formatter.cs
  88. +4
    -4
      src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x02_Device_Formatter.cs
  89. +56
    -0
      src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x02_Platform_Formatter.cs
  90. +4
    -4
      src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x03_Device_Formatter.cs
  91. +50
    -0
      src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x03_Platform_Formatter.cs
  92. +4
    -4
      src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x04_Device_Formatter.cs
  93. +32
    -0
      src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x04_Platform_Formatter.cs
  94. +33
    -0
      src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x05_Device_Formatter.cs
  95. +0
    -32
      src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x05_Formatter.cs
  96. +33
    -0
      src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x05_Platform_Formatter.cs
  97. +51
    -0
      src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x06_Device_Formatter.cs
  98. +0
    -50
      src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x06_Formatter.cs
  99. +51
    -0
      src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x06_Platform_Formatter.cs
  100. +4
    -4
      src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x07_Device_Formatter.cs

+ 90
- 90
src/JTNE.Protocol.Benchmark/JTNESerializerContext.cs Просмотреть файл

@@ -28,36 +28,36 @@ namespace JTNE.Protocol.Benchmark
bytes = "2323020131323334353637383900000000000000000100D001040507003A00001A0A00640063030602007B02030202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502040100CB006605010031AD030012D1CB061115007B0709000832124211320607110000159D03000003E8000003E9000003EA03000007D0000007D1000007D20300000BB800000BB900000BBA0300000FA000000FA100000FA20802010002007B0037006F03006F00DE014D03000504D2004200DE0301BC022B029A0902010004010203040200040506070867".ToHexBytes();
}

[Benchmark(Description = "JTNE_0x02_Serialize")]
[Benchmark(Description = "JTNE_0x02_Device_Serialize")]
public void JTNE_0x02_Serialize()
{
for (int i = 0; i < N; i++)
{
JTNEPackage jTNEPackage = new JTNEPackage();
JTNEPackage_Device jTNEPackage = new JTNEPackage_Device();
jTNEPackage.AskId = JTNEAskId.Success.ToByteValue();
jTNEPackage.MsgId = JTNEMsgId.uploadim.ToByteValue();
jTNEPackage.MsgId = JTNEMsgId_Device.uploadim.ToByteValue();
jTNEPackage.VIN = "123456789";
JTNE_0x02 jTNE_0X02 = new JTNE_0x02();
jTNE_0X02.Values = new Dictionary<byte, JTNE_0x02_Body>();
JTNE_0x02_0x01 jTNE_0X02_0X01 = new JTNE_0x02_0x01();
jTNE_0X02_0X01.Accelerator = 0x02;
jTNE_0X02_0X01.Brakes = 0x03;
jTNE_0X02_0X01.CarStatus = 0x04;
jTNE_0X02_0X01.ChargeStatus = 0x05;
jTNE_0X02_0X01.DCStatus = 0x06;
jTNE_0X02_0X01.OperationMode = 0x07;
jTNE_0X02_0X01.Resistance = 123;
jTNE_0X02_0X01.SOC = 0x03;
jTNE_0X02_0X01.Speed = 58;
jTNE_0X02_0X01.Stall = 0x02;
jTNE_0X02_0X01.TotalDis = 6666;
jTNE_0X02_0X01.TotalTemp = 99;
jTNE_0X02_0X01.TotalVoltage = 100;
jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x01, jTNE_0X02_0X01);
JTNE_0x02_0x02 jTNE_0X02_0X02 = new JTNE_0x02_0x02();
jTNE_0X02_0X02.Electricals = new List<JTNE.Protocol.Metadata.Electrical>();
JTNE_0x02_Device jTNE_0X02_Device = new JTNE_0x02_Device();
jTNE_0X02_Device.Values = new Dictionary<byte, JTNE_0x02_Body_Device>();
JTNE_0x02_0x01_Device jTNE_0X02_0X01_Device = new JTNE_0x02_0x01_Device();
jTNE_0X02_0X01_Device.Accelerator = 0x02;
jTNE_0X02_0X01_Device.Brakes = 0x03;
jTNE_0X02_0X01_Device.CarStatus = 0x04;
jTNE_0X02_0X01_Device.ChargeStatus = 0x05;
jTNE_0X02_0X01_Device.DCStatus = 0x06;
jTNE_0X02_0X01_Device.OperationMode = 0x07;
jTNE_0X02_0X01_Device.Resistance = 123;
jTNE_0X02_0X01_Device.SOC = 0x03;
jTNE_0X02_0X01_Device.Speed = 58;
jTNE_0X02_0X01_Device.Stall = 0x02;
jTNE_0X02_0X01_Device.TotalDis = 6666;
jTNE_0X02_0X01_Device.TotalTemp = 99;
jTNE_0X02_0X01_Device.TotalVoltage = 100;
jTNE_0X02_Device.Values.Add(JTNE_0x02_Body_Device.JTNE_0x02_0x01_Device, jTNE_0X02_0X01_Device);
JTNE_0x02_0x02_Device jTNE_0X02_0X02_Device = new JTNE_0x02_0x02_Device();
jTNE_0X02_0X02_Device.Electricals = new List<JTNE.Protocol.Metadata.Electrical>();
JTNE.Protocol.Metadata.Electrical electrical1 = new JTNE.Protocol.Metadata.Electrical();
electrical1.ElControlTemp = 0x01;
electrical1.ElCurrent = 100;
@@ -76,77 +76,77 @@ namespace JTNE.Protocol.Benchmark
electrical2.ElTemp = 0x05;
electrical2.ElTorque = 566;
electrical2.ElVoltage = 2136;
jTNE_0X02_0X02.Electricals.Add(electrical1);
jTNE_0X02_0X02.Electricals.Add(electrical2);
jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x02, jTNE_0X02_0X02);
JTNE_0x02_0x03 jTNE_0X02_0X03 = new JTNE_0x02_0x03();
jTNE_0X02_0X03.DCStatus = 0x02;
jTNE_0X02_0X03.FuelBatteryCurrent = 111;
jTNE_0X02_0X03.FuelBatteryVoltage = 2222;
jTNE_0X02_0X03.FuelConsumptionRate = 3222;
jTNE_0X02_0X03.HydrogenSystemMaxConcentrations = 6666;
jTNE_0X02_0X03.HydrogenSystemMaxConcentrationsNo = 0x56;
jTNE_0X02_0X03.HydrogenSystemMaxPressure = 3336;
jTNE_0X02_0X03.HydrogenSystemMaxPressureNo = 0x65;
jTNE_0X02_0X03.HydrogenSystemMaxTemp = 3355;
jTNE_0X02_0X03.HydrogenSystemMaxTempNo = 0x22;
jTNE_0X02_0X03.Temperatures = new byte[]
jTNE_0X02_0X02_Device.Electricals.Add(electrical1);
jTNE_0X02_0X02_Device.Electricals.Add(electrical2);
jTNE_0X02_Device.Values.Add(JTNE_0x02_Body_Device.JTNE_0x02_0x02_Device, jTNE_0X02_0X02_Device);
JTNE_0x02_0x03_Device jTNE_0X02_0X03_Device = new JTNE_0x02_0x03_Device();
jTNE_0X02_0X03_Device.DCStatus = 0x02;
jTNE_0X02_0X03_Device.FuelBatteryCurrent = 111;
jTNE_0X02_0X03_Device.FuelBatteryVoltage = 2222;
jTNE_0X02_0X03_Device.FuelConsumptionRate = 3222;
jTNE_0X02_0X03_Device.HydrogenSystemMaxConcentrations = 6666;
jTNE_0X02_0X03_Device.HydrogenSystemMaxConcentrationsNo = 0x56;
jTNE_0X02_0X03_Device.HydrogenSystemMaxPressure = 3336;
jTNE_0X02_0X03_Device.HydrogenSystemMaxPressureNo = 0x65;
jTNE_0X02_0X03_Device.HydrogenSystemMaxTemp = 3355;
jTNE_0X02_0X03_Device.HydrogenSystemMaxTempNo = 0x22;
jTNE_0X02_0X03_Device.Temperatures = new byte[]
{
0x01,0x02,0x03
};
jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x03, jTNE_0X02_0X03);
JTNE_0x02_0x04 jTNE_0X02_0X04 = new JTNE_0x02_0x04();
jTNE_0X02_0X04.EngineStatus = 0x01;
jTNE_0X02_0X04.FuelRate = 102;
jTNE_0X02_0X04.Revs = 203;
jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x04, jTNE_0X02_0X04);
JTNE_0x02_0x05 jTNE_0X02_0X05 = new JTNE_0x02_0x05();
jTNE_0X02_0X05.Lat = 1233355;
jTNE_0X02_0X05.Lng = 3255555;
jTNE_0X02_0X05.PositioStatus = 0x01;
jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x05, jTNE_0X02_0X05);
JTNE_0x02_0x06 jTNE_0X02_0X06 = new JTNE_0x02_0x06();
jTNE_0X02_0X06.MaxTempBatteryAssemblyNo = 0x12;
jTNE_0X02_0X06.MaxTempProbeBatteryNo = 0x32;
jTNE_0X02_0X06.MaxTempProbeBatteryValue = 0x42;
jTNE_0X02_0X06.MaxVoltageBatteryAssemblyNo = 0x11;
jTNE_0X02_0X06.MaxVoltageSingleBatteryNo = 0x15;
jTNE_0X02_0X06.MaxVoltageSingleBatteryValue = 123;
jTNE_0X02_0X06.MinTempBatteryAssemblyNo = 0x32;
jTNE_0X02_0X06.MinTempProbeBatteryNo = 0x11;
jTNE_0X02_0X06.MinTempProbeBatteryValue = 0x06;
jTNE_0X02_0X06.MinVoltageBatteryAssemblyNo = 0x07;
jTNE_0X02_0X06.MinVoltageSingleBatteryNo = 0x09;
jTNE_0X02_0X06.MinVoltageSingleBatteryValue = 0x08;
jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x06, jTNE_0X02_0X06);
JTNE_0x02_0x07 jTNE_0X02_0X07 = new JTNE_0x02_0x07();
jTNE_0X02_0X07.AlarmBatteryFlag = 5533;
jTNE_0X02_0X07.AlarmLevel = 0x11;
jTNE_0X02_0X07.AlarmBatteryOthers = new List<uint>
jTNE_0X02_Device.Values.Add(JTNE_0x02_Body_Device.JTNE_0x02_0x03_Device, jTNE_0X02_0X03_Device);
JTNE_0x02_0x04_Device jTNE_0X02_0X04_Device = new JTNE_0x02_0x04_Device();
jTNE_0X02_0X04_Device.EngineStatus = 0x01;
jTNE_0X02_0X04_Device.FuelRate = 102;
jTNE_0X02_0X04_Device.Revs = 203;
jTNE_0X02_Device.Values.Add(JTNE_0x02_Body_Device.JTNE_0x02_0x04_Device, jTNE_0X02_0X04_Device);
JTNE_0x02_0x05_Device jTNE_0X02_0X05_Device = new JTNE_0x02_0x05_Device();
jTNE_0X02_0X05_Device.Lat = 1233355;
jTNE_0X02_0X05_Device.Lng = 3255555;
jTNE_0X02_0X05_Device.PositioStatus = 0x01;
jTNE_0X02_Device.Values.Add(JTNE_0x02_Body_Device.JTNE_0x02_0x05_Device, jTNE_0X02_0X05_Device);
JTNE_0x02_0x06_Device jTNE_0X02_0X06_Device = new JTNE_0x02_0x06_Device();
jTNE_0X02_0X06_Device.MaxTempBatteryAssemblyNo = 0x12;
jTNE_0X02_0X06_Device.MaxTempProbeBatteryNo = 0x32;
jTNE_0X02_0X06_Device.MaxTempProbeBatteryValue = 0x42;
jTNE_0X02_0X06_Device.MaxVoltageBatteryAssemblyNo = 0x11;
jTNE_0X02_0X06_Device.MaxVoltageSingleBatteryNo = 0x15;
jTNE_0X02_0X06_Device.MaxVoltageSingleBatteryValue = 123;
jTNE_0X02_0X06_Device.MinTempBatteryAssemblyNo = 0x32;
jTNE_0X02_0X06_Device.MinTempProbeBatteryNo = 0x11;
jTNE_0X02_0X06_Device.MinTempProbeBatteryValue = 0x06;
jTNE_0X02_0X06_Device.MinVoltageBatteryAssemblyNo = 0x07;
jTNE_0X02_0X06_Device.MinVoltageSingleBatteryNo = 0x09;
jTNE_0X02_0X06_Device.MinVoltageSingleBatteryValue = 0x08;
jTNE_0X02_Device.Values.Add(JTNE_0x02_Body_Device.JTNE_0x02_0x06_Device, jTNE_0X02_0X06_Device);
JTNE_0x02_0x07_Device jTNE_0X02_0X07_Device = new JTNE_0x02_0x07_Device();
jTNE_0X02_0X07_Device.AlarmBatteryFlag = 5533;
jTNE_0X02_0X07_Device.AlarmLevel = 0x11;
jTNE_0X02_0X07_Device.AlarmBatteryOthers = new List<uint>
{
1000,1001,1002
};
jTNE_0X02_0X07.AlarmEls = new List<uint>
jTNE_0X02_0X07_Device.AlarmEls = new List<uint>
{
2000,2001,2002
};
jTNE_0X02_0X07.AlarmEngines = new List<uint>
jTNE_0X02_0X07_Device.AlarmEngines = new List<uint>
{
3000,3001,3002
};
jTNE_0X02_0X07.AlarmOthers = new List<uint>
jTNE_0X02_0X07_Device.AlarmOthers = new List<uint>
{
4000,4001,4002
};
jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x07, jTNE_0X02_0X07);
jTNE_0X02_Device.Values.Add(JTNE_0x02_Body_Device.JTNE_0x02_0x07_Device, jTNE_0X02_0X07_Device);

JTNE_0x02_0x08 jTNE_0X02_0X08 = new JTNE_0x02_0x08();
jTNE_0X02_0X08.BatteryAssemblies = new List<JTNE.Protocol.Metadata.BatteryAssembly>();
JTNE_0x02_0x08_Device jTNE_0X02_0X08_Device = new JTNE_0x02_0x08_Device();
jTNE_0X02_0X08_Device.BatteryAssemblies = new List<JTNE.Protocol.Metadata.BatteryAssembly>();
JTNE.Protocol.Metadata.BatteryAssembly batteryAssembly1 = new JTNE.Protocol.Metadata.BatteryAssembly();
batteryAssembly1.BatteryAssemblyCurrent = 123;
batteryAssembly1.BatteryAssemblyNo = 0x01;
@@ -167,13 +167,13 @@ namespace JTNE.Protocol.Benchmark
batteryAssembly2.SingleBatteryVoltages = new List<ushort> {
444,555,666
};
jTNE_0X02_0X08.BatteryAssemblies.Add(batteryAssembly1);
jTNE_0X02_0X08.BatteryAssemblies.Add(batteryAssembly2);
jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x08, jTNE_0X02_0X08);
jTNE_0X02_0X08_Device.BatteryAssemblies.Add(batteryAssembly1);
jTNE_0X02_0X08_Device.BatteryAssemblies.Add(batteryAssembly2);
jTNE_0X02_Device.Values.Add(JTNE_0x02_Body_Device.JTNE_0x02_0x08_Device, jTNE_0X02_0X08_Device);


JTNE_0x02_0x09 jTNE_0X02_0X09 = new JTNE_0x02_0x09();
jTNE_0X02_0X09.BatteryTemperatures = new List<JTNE.Protocol.Metadata.BatteryTemperature>();
JTNE_0x02_0x09_Device jTNE_0X02_0X09_Device = new JTNE_0x02_0x09_Device();
jTNE_0X02_0X09_Device.BatteryTemperatures = new List<JTNE.Protocol.Metadata.BatteryTemperature>();

JTNE.Protocol.Metadata.BatteryTemperature batteryTemperature1 = new JTNE.Protocol.Metadata.BatteryTemperature();
batteryTemperature1.BatteryAssemblyNo = 0x01;
@@ -189,13 +189,13 @@ namespace JTNE.Protocol.Benchmark
0x05,0x06,0x07,0x08
};

jTNE_0X02_0X09.BatteryTemperatures.Add(batteryTemperature1);
jTNE_0X02_0X09.BatteryTemperatures.Add(batteryTemperature2);
jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x09, jTNE_0X02_0X09);
jTNE_0X02_0X09_Device.BatteryTemperatures.Add(batteryTemperature1);
jTNE_0X02_0X09_Device.BatteryTemperatures.Add(batteryTemperature2);
jTNE_0X02_Device.Values.Add(JTNE_0x02_Body_Device.JTNE_0x02_0x09_Device, jTNE_0X02_0X09_Device);

jTNEPackage.Bodies = jTNE_0X02;
jTNEPackage.Bodies = jTNE_0X02_Device;

var hex = JTNESerializer.Serialize(jTNEPackage);
var hex = JTNESerializer_Device.Serialize(jTNEPackage);
}
}

@@ -204,7 +204,7 @@ namespace JTNE.Protocol.Benchmark
{
for (int i = 0; i < N; i++)
{
JTNEPackage jTNEPackage = JTNESerializer.Deserialize(bytes);
JTNEPackage_Device jTNEPackage = JTNESerializer_Device.Deserialize(bytes);
}
}
}


src/JTNE.Protocol.Test/Extensions/JTNEPackageExtensionsTest.cs → src/JTNE.Protocol.Test/Extensions/JTNEPackageExtensions_DeviceTest.cs Просмотреть файл

@@ -8,12 +8,12 @@ using JTNE.Protocol.MessageBody;

namespace JTNE.Protocol.Test.Extensions
{
public class JTNEPackageExtensionsTest
public class JTNEPackageExtensions_DeviceTest
{
[Fact]
public void Test1()
{
JTNEPackage jTNEPackage= JTNEMsgId.login.Create("123456789", JTNEAskId.CMD, new JTNE_0x01
JTNEPackage_Device jTNEPackage_Device = JTNEMsgId_Device.login.Create("123456789", JTNEAskId.CMD, new JTNE_0x01_Device
{
PDATime = DateTime.Parse("2019-01-22 23:55:56"),
LoginNum = 1,
@@ -26,7 +26,7 @@ namespace JTNE.Protocol.Test.Extensions
"9870"
}
});
var hex = JTNESerializer.Serialize(jTNEPackage).ToHexString();
var hex = JTNESerializer_Device.Serialize(jTNEPackage_Device).ToHexString();
Assert.Equal("232301FE313233343536373839000000000000000001002A130116173738000131323334353637383939383736353433323130300304313233343435363739383730FD", hex);
}
}

+ 33
- 0
src/JTNE.Protocol.Test/Extensions/JTNEPackageExtensions_PlatformTest.cs Просмотреть файл

@@ -0,0 +1,33 @@
using JTNE.Protocol.Enums;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;
using JTNE.Protocol.MessageBody;

namespace JTNE.Protocol.Test.Extensions
{
public class JTNEPackageExtensions_PlatformTest
{
[Fact]
public void Test1()
{
JTNEPackage_Platform jTNEPackage_Platform = JTNEMsgId_Platform.login.Create("123456789", JTNEAskId.CMD, new JTNE_0x01_Platform
{
PDATime = DateTime.Parse("2019-01-22 23:55:56"),
LoginNum = 1,
BatteryLength = 0x04,
SIM = "12345678998765432100",
BatteryNos = new List<string>()
{
"1234",
"4567",
"9870"
}
});
var hex = JTNESerializer_Device.Serialize(jTNEPackage_Platform).ToHexString();
Assert.Equal("232301FE313233343536373839000000000000000001002A130116173738000131323334353637383939383736353433323130300304313233343435363739383730FD", hex);
}
}
}

+ 0
- 55
src/JTNE.Protocol.Test/JTNEHeaderPackageTest.cs Просмотреть файл

@@ -1,55 +0,0 @@
using JTNE.Protocol.Enums;
using JTNE.Protocol.Extensions;
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;

namespace JTNE.Protocol.Test
{
public class JTNEHeaderPackageTest
{
[Fact]
public void Test1()
{
JTNEHeaderPackage jTNEHeaderPackage = new JTNEHeaderPackage();
jTNEHeaderPackage.VIN = "123456789";
jTNEHeaderPackage.AskId = JTNEAskId.CMD.ToByteValue();
jTNEHeaderPackage.MsgId = JTNEMsgId.login.ToByteValue();
JTNE_0x01 jTNE_0X01 = new JTNE_0x01();
jTNE_0X01.PDATime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X01.LoginNum = 1;
jTNE_0X01.BatteryLength = 0x04;
jTNE_0X01.SIM = "12345678998765432100";
jTNE_0X01.BatteryNos = new List<string>()
{
"1234",
"4567",
"9870"
};
jTNEHeaderPackage.Bodies = JTNESerializer.Serialize(jTNE_0X01);
var hex = JTNESerializer.Serialize(jTNEHeaderPackage).ToHexString();
Assert.Equal("232301FE313233343536373839000000000000000001002A130116173738000131323334353637383939383736353433323130300304313233343435363739383730FD", hex);
}

[Fact]
public void Test2()
{
var data= "232301FE313233343536373839000000000000000001002A130116173738000131323334353637383939383736353433323130300304313233343435363739383730FD".ToHexBytes();
JTNEHeaderPackage jTNEHeaderPackage = JTNESerializer.Deserialize<JTNEHeaderPackage>(data);
Assert.Equal(JTNEAskId.CMD.ToByteValue(), jTNEHeaderPackage.AskId);
Assert.Equal(JTNEMsgId.login.ToByteValue(), jTNEHeaderPackage.MsgId);
Assert.Equal("123456789", jTNEHeaderPackage.VIN);
JTNE_0x01 jTNE_0X01 = JTNESerializer.Deserialize<JTNE_0x01>(jTNEHeaderPackage.Bodies);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X01.PDATime);
Assert.Equal(1, jTNE_0X01.LoginNum);
Assert.Equal(0x04, jTNE_0X01.BatteryLength);
Assert.Equal("12345678998765432100", jTNE_0X01.SIM);
Assert.Equal(3, jTNE_0X01.BatteryCount);
Assert.Equal("1234", jTNE_0X01.BatteryNos[0]);
Assert.Equal("4567", jTNE_0X01.BatteryNos[1]);
Assert.Equal("9870", jTNE_0X01.BatteryNos[2]);
}
}
}

+ 55
- 0
src/JTNE.Protocol.Test/JTNEHeaderPackage_DeviceTest.cs Просмотреть файл

@@ -0,0 +1,55 @@
using JTNE.Protocol.Enums;
using JTNE.Protocol.Extensions;
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;

namespace JTNE.Protocol.Test
{
public class JTNEHeaderPackage_DeviceTest
{
[Fact]
public void Test1()
{
JTNEHeaderPackage_Device jTNEHeaderPackage = new JTNEHeaderPackage_Device();
jTNEHeaderPackage.VIN = "123456789";
jTNEHeaderPackage.AskId = JTNEAskId.CMD.ToByteValue();
jTNEHeaderPackage.MsgId = JTNEMsgId_Device.login.ToByteValue();
JTNE_0x01_Device jTNE_0X01_Device = new JTNE_0x01_Device();
jTNE_0X01_Device.PDATime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X01_Device.LoginNum = 1;
jTNE_0X01_Device.BatteryLength = 0x04;
jTNE_0X01_Device.SIM = "12345678998765432100";
jTNE_0X01_Device.BatteryNos = new List<string>()
{
"1234",
"4567",
"9870"
};
jTNEHeaderPackage.Bodies = JTNESerializer_Device.Serialize(jTNE_0X01_Device);
var hex = JTNESerializer_Device.Serialize(jTNEHeaderPackage).ToHexString();
Assert.Equal("232301FE313233343536373839000000000000000001002A130116173738000131323334353637383939383736353433323130300304313233343435363739383730FD", hex);
}

[Fact]
public void Test2()
{
var data= "232301FE313233343536373839000000000000000001002A130116173738000131323334353637383939383736353433323130300304313233343435363739383730FD".ToHexBytes();
JTNEHeaderPackage_Device jTNEHeaderPackage = JTNESerializer_Device.Deserialize<JTNEHeaderPackage_Device>(data);
Assert.Equal(JTNEAskId.CMD.ToByteValue(), jTNEHeaderPackage.AskId);
Assert.Equal(JTNEMsgId_Device.login.ToByteValue(), jTNEHeaderPackage.MsgId);
Assert.Equal("123456789", jTNEHeaderPackage.VIN);
JTNE_0x01_Device jTNE_0X01_Device = JTNESerializer_Device.Deserialize<JTNE_0x01_Device>(jTNEHeaderPackage.Bodies);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X01_Device.PDATime);
Assert.Equal(1, jTNE_0X01_Device.LoginNum);
Assert.Equal(0x04, jTNE_0X01_Device.BatteryLength);
Assert.Equal("12345678998765432100", jTNE_0X01_Device.SIM);
Assert.Equal(3, jTNE_0X01_Device.BatteryCount);
Assert.Equal("1234", jTNE_0X01_Device.BatteryNos[0]);
Assert.Equal("4567", jTNE_0X01_Device.BatteryNos[1]);
Assert.Equal("9870", jTNE_0X01_Device.BatteryNos[2]);
}
}
}

+ 54
- 0
src/JTNE.Protocol.Test/JTNEHeaderPackage_PlatformTest.cs Просмотреть файл

@@ -0,0 +1,54 @@
using JTNE.Protocol.Enums;
using JTNE.Protocol.Extensions;
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;

namespace JTNE.Protocol.Test
{
public class JTNEHeaderPackage_PlatformTest
{
[Fact]
public void Test1()
{
JTNEHeaderPackage_Platform jTNEHeaderPackage_Platform = new JTNEHeaderPackage_Platform();
jTNEHeaderPackage_Platform.VIN = "123456789";
jTNEHeaderPackage_Platform.AskId = JTNEAskId.CMD.ToByteValue();
jTNEHeaderPackage_Platform.MsgId = JTNEMsgId_Platform.login.ToByteValue();
JTNE_0x01_Platform jTNE_0X01_Platform = new JTNE_0x01_Platform();
jTNE_0X01_Platform.PDATime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X01_Platform.LoginNum = 1;
jTNE_0X01_Platform.BatteryLength = 0x04;
jTNE_0X01_Platform.SIM = "12345678998765432100";
jTNE_0X01_Platform.BatteryNos = new List<string>()
{
"1234",
"4567",
"9870"
};
jTNEHeaderPackage_Platform.Bodies = JTNESerializer_Platform.Serialize(jTNE_0X01_Platform);
var hex = JTNESerializer_Platform.Serialize(jTNEHeaderPackage_Platform).ToHexString();
Assert.Equal("232301FE313233343536373839000000000000000001002A130116173738000131323334353637383939383736353433323130300304313233343435363739383730FD", hex);
}
[Fact]
public void Test2()
{
var data = "232301FE313233343536373839000000000000000001002A130116173738000131323334353637383939383736353433323130300304313233343435363739383730FD".ToHexBytes();
JTNEHeaderPackage_Platform jTNEHeaderPackage_Platform = JTNESerializer_Platform.Deserialize<JTNEHeaderPackage_Platform>(data);
Assert.Equal(JTNEAskId.CMD.ToByteValue(), jTNEHeaderPackage_Platform.AskId);
Assert.Equal(JTNEMsgId_Platform.login.ToByteValue(), jTNEHeaderPackage_Platform.MsgId);
Assert.Equal("123456789", jTNEHeaderPackage_Platform.VIN);
JTNE_0x01_Platform jTNE_0X01_Platform = JTNESerializer_Platform.Deserialize<JTNE_0x01_Platform>(jTNEHeaderPackage_Platform.Bodies);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X01_Platform.PDATime);
Assert.Equal(1, jTNE_0X01_Platform.LoginNum);
Assert.Equal(0x04, jTNE_0X01_Platform.BatteryLength);
Assert.Equal("12345678998765432100", jTNE_0X01_Platform.SIM);
Assert.Equal(3, jTNE_0X01_Platform.BatteryCount);
Assert.Equal("1234", jTNE_0X01_Platform.BatteryNos[0]);
Assert.Equal("4567", jTNE_0X01_Platform.BatteryNos[1]);
Assert.Equal("9870", jTNE_0X01_Platform.BatteryNos[2]);
}
}
}

+ 0
- 45
src/JTNE.Protocol.Test/MessageBody/JTNE_0x01Test.cs Просмотреть файл

@@ -1,45 +0,0 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x01Test
{
[Fact]
public void Test1()
{
JTNE_0x01 jTNE_0X01 = new JTNE_0x01();
jTNE_0X01.PDATime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X01.LoginNum = 1;
jTNE_0X01.BatteryLength = 0x04;
jTNE_0X01.SIM = "12345678998765432100";
jTNE_0X01.BatteryNos = new List<string>()
{
"1234",
"4567",
"9870"
};
var hex = JTNESerializer.Serialize(jTNE_0X01).ToHexString();
Assert.Equal("130116173738000131323334353637383939383736353433323130300304313233343435363739383730", hex);
}

[Fact]
public void Test2()
{
var data = "130116173738000131323334353637383939383736353433323130300304313233343435363739383730".ToHexBytes();
JTNE_0x01 jTNE_0X01 = JTNESerializer.Deserialize<JTNE_0x01>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X01.PDATime);
Assert.Equal(1, jTNE_0X01.LoginNum);
Assert.Equal(0x04, jTNE_0X01.BatteryLength);
Assert.Equal("12345678998765432100", jTNE_0X01.SIM);
Assert.Equal(3, jTNE_0X01.BatteryCount);
Assert.Equal("1234", jTNE_0X01.BatteryNos[0]);
Assert.Equal("4567", jTNE_0X01.BatteryNos[1]);
Assert.Equal("9870", jTNE_0X01.BatteryNos[2]);
}
}
}

+ 45
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x01_DeviceTest.cs Просмотреть файл

@@ -0,0 +1,45 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x01_DeviceTest
{
[Fact]
public void Test1()
{
JTNE_0x01_Device jTNE_0X01_Device = new JTNE_0x01_Device();
jTNE_0X01_Device.PDATime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X01_Device.LoginNum = 1;
jTNE_0X01_Device.BatteryLength = 0x04;
jTNE_0X01_Device.SIM = "12345678998765432100";
jTNE_0X01_Device.BatteryNos = new List<string>()
{
"1234",
"4567",
"9870"
};
var hex = JTNESerializer_Device.Serialize(jTNE_0X01_Device).ToHexString();
Assert.Equal("130116173738000131323334353637383939383736353433323130300304313233343435363739383730", hex);
}

[Fact]
public void Test2()
{
var data = "130116173738000131323334353637383939383736353433323130300304313233343435363739383730".ToHexBytes();
JTNE_0x01_Device jTNE_0X01_Device = JTNESerializer_Device.Deserialize<JTNE_0x01_Device>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X01_Device.PDATime);
Assert.Equal(1, jTNE_0X01_Device.LoginNum);
Assert.Equal(0x04, jTNE_0X01_Device.BatteryLength);
Assert.Equal("12345678998765432100", jTNE_0X01_Device.SIM);
Assert.Equal(3, jTNE_0X01_Device.BatteryCount);
Assert.Equal("1234", jTNE_0X01_Device.BatteryNos[0]);
Assert.Equal("4567", jTNE_0X01_Device.BatteryNos[1]);
Assert.Equal("9870", jTNE_0X01_Device.BatteryNos[2]);
}
}
}

+ 45
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x01_PlatformTest.cs Просмотреть файл

@@ -0,0 +1,45 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x01_PlatformTest
{
[Fact]
public void Test1()
{
JTNE_0x01_Platform jTNE_0X01_Platform = new JTNE_0x01_Platform();
jTNE_0X01_Platform.PDATime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X01_Platform.LoginNum = 1;
jTNE_0X01_Platform.BatteryLength = 0x04;
jTNE_0X01_Platform.SIM = "12345678998765432100";
jTNE_0X01_Platform.BatteryNos = new List<string>()
{
"1234",
"4567",
"9870"
};
var hex = JTNESerializer_Platform.Serialize(jTNE_0X01_Platform).ToHexString();
Assert.Equal("130116173738000131323334353637383939383736353433323130300304313233343435363739383730", hex);
}

[Fact]
public void Test2()
{
var data = "130116173738000131323334353637383939383736353433323130300304313233343435363739383730".ToHexBytes();
JTNE_0x01_Platform jTNE_0X01_Platform = JTNESerializer_Platform.Deserialize<JTNE_0x01_Platform>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X01_Platform.PDATime);
Assert.Equal(1, jTNE_0X01_Platform.LoginNum);
Assert.Equal(0x04, jTNE_0X01_Platform.BatteryLength);
Assert.Equal("12345678998765432100", jTNE_0X01_Platform.SIM);
Assert.Equal(3, jTNE_0X01_Platform.BatteryCount);
Assert.Equal("1234", jTNE_0X01_Platform.BatteryNos[0]);
Assert.Equal("4567", jTNE_0X01_Platform.BatteryNos[1]);
Assert.Equal("9870", jTNE_0X01_Platform.BatteryNos[2]);
}
}
}

+ 0
- 143
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02Test.cs Просмотреть файл

@@ -1,143 +0,0 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02Test
{
[Fact]
public void Test1()
{
JTNE_0x02 jTNE_0X02 = new JTNE_0x02();
jTNE_0X02.Values = new Dictionary<byte, JTNE_0x02_Body>();

JTNE_0x02_0x01 jTNE_0X02_0X01 = new JTNE_0x02_0x01();
jTNE_0X02_0X01.Accelerator = 0x02;
jTNE_0X02_0X01.Brakes = 0x03;
jTNE_0X02_0X01.CarStatus = 0x04;
jTNE_0X02_0X01.ChargeStatus = 0x05;
jTNE_0X02_0X01.DCStatus = 0x06;
jTNE_0X02_0X01.OperationMode = 0x07;
jTNE_0X02_0X01.Resistance = 123;
jTNE_0X02_0X01.SOC = 0x03;
jTNE_0X02_0X01.Speed = 58;
jTNE_0X02_0X01.Stall = 0x02;
jTNE_0X02_0X01.TotalDis = 6666;
jTNE_0X02_0X01.TotalTemp = 99;
jTNE_0X02_0X01.TotalVoltage = 100;
jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x01, jTNE_0X02_0X01);

JTNE_0x02_0x02 jTNE_0X02_0X02 = new JTNE_0x02_0x02();
jTNE_0X02_0X02.Electricals = new List<Metadata.Electrical>();
Metadata.Electrical electrical1 = new Metadata.Electrical();
electrical1.ElControlTemp = 0x01;
electrical1.ElCurrent = 100;
electrical1.ElNo = 0x01;
electrical1.ElSpeed = 65;
electrical1.ElStatus = 0x02;
electrical1.ElTemp = 0x03;
electrical1.ElTorque = 55;
electrical1.ElVoltage = 236;
Metadata.Electrical electrical2 = new Metadata.Electrical();
electrical2.ElControlTemp = 0x02;
electrical2.ElCurrent = 101;
electrical2.ElNo = 0x02;
electrical2.ElSpeed = 66;
electrical2.ElStatus = 0x03;
electrical2.ElTemp = 0x05;
electrical2.ElTorque = 566;
electrical2.ElVoltage = 2136;
jTNE_0X02_0X02.Electricals.Add(electrical1);
jTNE_0X02_0X02.Electricals.Add(electrical2);
jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x02, jTNE_0X02_0X02);

JTNE_0x02_0x03 jTNE_0X02_0X03 = new JTNE_0x02_0x03();
jTNE_0X02_0X03.DCStatus = 0x02;
jTNE_0X02_0X03.FuelBatteryCurrent = 111;
jTNE_0X02_0X03.FuelBatteryVoltage = 2222;
jTNE_0X02_0X03.FuelConsumptionRate = 3222;
jTNE_0X02_0X03.HydrogenSystemMaxConcentrations = 6666;
jTNE_0X02_0X03.HydrogenSystemMaxConcentrationsNo = 0x56;
jTNE_0X02_0X03.HydrogenSystemMaxPressure = 3336;
jTNE_0X02_0X03.HydrogenSystemMaxPressureNo = 0x65;
jTNE_0X02_0X03.HydrogenSystemMaxTemp = 3355;
jTNE_0X02_0X03.HydrogenSystemMaxTempNo = 0x22;
jTNE_0X02_0X03.Temperatures = new byte[]
{
0x01,0x02,0x03
};
jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x03, jTNE_0X02_0X03);

var hex = JTNESerializer.Serialize(jTNE_0X02).ToHexString();
//01 04 05 07 00 3A 00 00 1A 0A 00 64 00 63 03 06 02 00 7B 02 03 -21
//02 02 01 02 01 00 41 00 37 03 00 EC 00 64 02 03 02 00 42 02 36 05 08 58 00 65 -26
//03 08 AE 00 6F 0C 96 00 03 01 02 03 0D 1B 22 1A 0A 56 0D 08 65 02
Assert.Equal("01040507003A00001A0A00640063030602007B02030202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502", hex);
}
[Fact]
public void Test2()
{
var data = "01040507003A00001A0A00640063030602007B02030202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502".ToHexBytes();
JTNE_0x02 jTNE_0X02 = JTNESerializer.Deserialize<JTNE_0x02>(data);

JTNE_0x02_0x01 jTNE_0X02_0X01 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x01] as JTNE_0x02_0x01;
Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x01, jTNE_0X02_0X01.TypeCode);
Assert.Equal(0x02, jTNE_0X02_0X01.Accelerator);
Assert.Equal(0x03, jTNE_0X02_0X01.Brakes);
Assert.Equal(0x04, jTNE_0X02_0X01.CarStatus);
Assert.Equal(0x05, jTNE_0X02_0X01.ChargeStatus);
Assert.Equal(0x06, jTNE_0X02_0X01.DCStatus);
Assert.Equal(0x07, jTNE_0X02_0X01.OperationMode);
Assert.Equal(123, jTNE_0X02_0X01.Resistance);
Assert.Equal(0x03, jTNE_0X02_0X01.SOC);
Assert.Equal(58, jTNE_0X02_0X01.Speed);
Assert.Equal(0x02, jTNE_0X02_0X01.Stall);
Assert.Equal((uint)6666, jTNE_0X02_0X01.TotalDis);
Assert.Equal(99, jTNE_0X02_0X01.TotalTemp);
Assert.Equal(100, jTNE_0X02_0X01.TotalVoltage);


JTNE_0x02_0x02 jTNE_0X02_0X02 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x02] as JTNE_0x02_0x02;
Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x02, jTNE_0X02_0X02.TypeCode);
Assert.Equal(2, jTNE_0X02_0X02.ElectricalCount);
Metadata.Electrical electrical1 = jTNE_0X02_0X02.Electricals[0];
Assert.Equal(0x01, electrical1.ElControlTemp);
Assert.Equal(100, electrical1.ElCurrent);
Assert.Equal(0x01, electrical1.ElNo);
Assert.Equal(65, electrical1.ElSpeed);
Assert.Equal(0x02, electrical1.ElStatus);
Assert.Equal(0x03, electrical1.ElTemp);
Assert.Equal(55, electrical1.ElTorque);
Assert.Equal(236, electrical1.ElVoltage);
Metadata.Electrical electrical2 = jTNE_0X02_0X02.Electricals[1];
Assert.Equal(0x02, electrical2.ElControlTemp);
Assert.Equal(101, electrical2.ElCurrent);
Assert.Equal(0x02, electrical2.ElNo);
Assert.Equal(66, electrical2.ElSpeed);
Assert.Equal(0x03, electrical2.ElStatus);
Assert.Equal(0x05, electrical2.ElTemp);
Assert.Equal(566, electrical2.ElTorque);
Assert.Equal(2136, electrical2.ElVoltage);

JTNE_0x02_0x03 jTNE_0X02_0X03 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x03] as JTNE_0x02_0x03;

Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x03, jTNE_0X02_0X03.TypeCode);
Assert.Equal(0x02, jTNE_0X02_0X03.DCStatus);
Assert.Equal(111, jTNE_0X02_0X03.FuelBatteryCurrent);
Assert.Equal(2222, jTNE_0X02_0X03.FuelBatteryVoltage);
Assert.Equal(3222, jTNE_0X02_0X03.FuelConsumptionRate);
Assert.Equal(6666, jTNE_0X02_0X03.HydrogenSystemMaxConcentrations);
Assert.Equal(0x56, jTNE_0X02_0X03.HydrogenSystemMaxConcentrationsNo);
Assert.Equal(3336, jTNE_0X02_0X03.HydrogenSystemMaxPressure);
Assert.Equal(0x65, jTNE_0X02_0X03.HydrogenSystemMaxPressureNo);
Assert.Equal(3355, jTNE_0X02_0X03.HydrogenSystemMaxTemp);
Assert.Equal(0x22, jTNE_0X02_0X03.HydrogenSystemMaxTempNo);
Assert.Equal(new byte[] { 0x01, 0x02, 0x03 }, jTNE_0X02_0X03.Temperatures);
}
}
}

+ 0
- 54
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x01Test.cs Просмотреть файл

@@ -1,54 +0,0 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_0x01Test
{
[Fact]
public void Test1()
{
JTNE_0x02_0x01 jTNE_0X02_0X01 = new JTNE_0x02_0x01();
jTNE_0X02_0X01.Accelerator = 0x02;
jTNE_0X02_0X01.Brakes = 0x03;
jTNE_0X02_0X01.CarStatus = 0x04;
jTNE_0X02_0X01.ChargeStatus = 0x05;
jTNE_0X02_0X01.DCStatus = 0x06;
jTNE_0X02_0X01.OperationMode = 0x07;
jTNE_0X02_0X01.Resistance = 123;
jTNE_0X02_0X01.SOC = 0x03;
jTNE_0X02_0X01.Speed = 58;
jTNE_0X02_0X01.Stall = 0x02;
jTNE_0X02_0X01.TotalDis = 6666;
jTNE_0X02_0X01.TotalTemp = 99;
jTNE_0X02_0X01.TotalVoltage = 100;
var hex = JTNESerializer.Serialize(jTNE_0X02_0X01).ToHexString();
Assert.Equal("01040507003A00001A0A00640063030602007B0203", hex);
}

[Fact]
public void Test2()
{
var data = "01040507003A00001A0A00640063030602007B0203".ToHexBytes();
JTNE_0x02_0x01 jTNE_0X02_0X01 = JTNESerializer.Deserialize<JTNE_0x02_0x01>(data);
Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x01, jTNE_0X02_0X01.TypeCode);
Assert.Equal(0x02, jTNE_0X02_0X01.Accelerator);
Assert.Equal(0x03, jTNE_0X02_0X01.Brakes);
Assert.Equal(0x04, jTNE_0X02_0X01.CarStatus);
Assert.Equal(0x05, jTNE_0X02_0X01.ChargeStatus);
Assert.Equal(0x06, jTNE_0X02_0X01.DCStatus);
Assert.Equal(0x07, jTNE_0X02_0X01.OperationMode);
Assert.Equal(123, jTNE_0X02_0X01.Resistance);
Assert.Equal(0x03, jTNE_0X02_0X01.SOC);
Assert.Equal(58, jTNE_0X02_0X01.Speed);
Assert.Equal(0x02, jTNE_0X02_0X01.Stall);
Assert.Equal((uint)6666, jTNE_0X02_0X01.TotalDis);
Assert.Equal(99, jTNE_0X02_0X01.TotalTemp);
Assert.Equal(100, jTNE_0X02_0X01.TotalVoltage);
}
}
}

+ 54
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x01_DeviceTest.cs Просмотреть файл

@@ -0,0 +1,54 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_0x01_DeviceTest
{
[Fact]
public void Test1()
{
JTNE_0x02_0x01_Device jTNE_0X02_0X01_Device = new JTNE_0x02_0x01_Device();
jTNE_0X02_0X01_Device.Accelerator = 0x02;
jTNE_0X02_0X01_Device.Brakes = 0x03;
jTNE_0X02_0X01_Device.CarStatus = 0x04;
jTNE_0X02_0X01_Device.ChargeStatus = 0x05;
jTNE_0X02_0X01_Device.DCStatus = 0x06;
jTNE_0X02_0X01_Device.OperationMode = 0x07;
jTNE_0X02_0X01_Device.Resistance = 123;
jTNE_0X02_0X01_Device.SOC = 0x03;
jTNE_0X02_0X01_Device.Speed = 58;
jTNE_0X02_0X01_Device.Stall = 0x02;
jTNE_0X02_0X01_Device.TotalDis = 6666;
jTNE_0X02_0X01_Device.TotalTemp = 99;
jTNE_0X02_0X01_Device.TotalVoltage = 100;
var hex = JTNESerializer_Device.Serialize(jTNE_0X02_0X01_Device).ToHexString();
Assert.Equal("01040507003A00001A0A00640063030602007B0203", hex);
}

[Fact]
public void Test2()
{
var data = "01040507003A00001A0A00640063030602007B0203".ToHexBytes();
JTNE_0x02_0x01_Device jTNE_0X02_0X01_Device = JTNESerializer_Device.Deserialize<JTNE_0x02_0x01_Device>(data);
Assert.Equal(JTNE_0x02_Body_Device.JTNE_0x02_0x01_Device, jTNE_0X02_0X01_Device.TypeCode);
Assert.Equal(0x02, jTNE_0X02_0X01_Device.Accelerator);
Assert.Equal(0x03, jTNE_0X02_0X01_Device.Brakes);
Assert.Equal(0x04, jTNE_0X02_0X01_Device.CarStatus);
Assert.Equal(0x05, jTNE_0X02_0X01_Device.ChargeStatus);
Assert.Equal(0x06, jTNE_0X02_0X01_Device.DCStatus);
Assert.Equal(0x07, jTNE_0X02_0X01_Device.OperationMode);
Assert.Equal(123, jTNE_0X02_0X01_Device.Resistance);
Assert.Equal(0x03, jTNE_0X02_0X01_Device.SOC);
Assert.Equal(58, jTNE_0X02_0X01_Device.Speed);
Assert.Equal(0x02, jTNE_0X02_0X01_Device.Stall);
Assert.Equal((uint)6666, jTNE_0X02_0X01_Device.TotalDis);
Assert.Equal(99, jTNE_0X02_0X01_Device.TotalTemp);
Assert.Equal(100, jTNE_0X02_0X01_Device.TotalVoltage);
}
}
}

+ 50
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x01_PlatformTest.cs Просмотреть файл

@@ -0,0 +1,50 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_0x01_PlatformTest
{
[Fact]
public void Test1()
{
JTNE_0x02_0x01_Platform jTNE_0X02_0X01_Platform = new JTNE_0x02_0x01_Platform();
jTNE_0X02_0X01_Platform.CarStatus = 0x04;
jTNE_0X02_0X01_Platform.ChargeStatus = 0x05;
jTNE_0X02_0X01_Platform.DCStatus = 0x06;
jTNE_0X02_0X01_Platform.OperationMode = 0x07;
jTNE_0X02_0X01_Platform.Resistance = 123;
jTNE_0X02_0X01_Platform.SOC = 0x03;
jTNE_0X02_0X01_Platform.Speed = 58;
jTNE_0X02_0X01_Platform.Stall = 0x02;
jTNE_0X02_0X01_Platform.TotalDis = 6666;
jTNE_0X02_0X01_Platform.TotalTemp = 99;
jTNE_0X02_0X01_Platform.TotalVoltage = 100;
var hex = JTNESerializer_Platform.Serialize(jTNE_0X02_0X01_Platform).ToHexString();
Assert.Equal("01040507003A00001A0A00640063030602007B", hex);
}

[Fact]
public void Test2()
{
var data = "01040507003A00001A0A00640063030602007B".ToHexBytes();
JTNE_0x02_0x01_Platform jTNE_0X02_0X01_Platform = JTNESerializer_Platform.Deserialize<JTNE_0x02_0x01_Platform>(data);
Assert.Equal(JTNE_0x02_Body_Platform.JTNE_0x02_0x01_Platform, jTNE_0X02_0X01_Platform.TypeCode);
Assert.Equal(0x04, jTNE_0X02_0X01_Platform.CarStatus);
Assert.Equal(0x05, jTNE_0X02_0X01_Platform.ChargeStatus);
Assert.Equal(0x06, jTNE_0X02_0X01_Platform.DCStatus);
Assert.Equal(0x07, jTNE_0X02_0X01_Platform.OperationMode);
Assert.Equal(123, jTNE_0X02_0X01_Platform.Resistance);
Assert.Equal(0x03, jTNE_0X02_0X01_Platform.SOC);
Assert.Equal(58, jTNE_0X02_0X01_Platform.Speed);
Assert.Equal(0x02, jTNE_0X02_0X01_Platform.Stall);
Assert.Equal((uint)6666, jTNE_0X02_0X01_Platform.TotalDis);
Assert.Equal(99, jTNE_0X02_0X01_Platform.TotalTemp);
Assert.Equal(100, jTNE_0X02_0X01_Platform.TotalVoltage);
}
}
}

src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x02Test.cs → src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x02_DeviceTest.cs Просмотреть файл

@@ -7,13 +7,13 @@ using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_0x02Test
public class JTNE_0x02_0x02_DeviceTest
{
[Fact]
public void Test1()
{
JTNE_0x02_0x02 jTNE_0X02_0X02 = new JTNE_0x02_0x02();
jTNE_0X02_0X02.Electricals = new List<Metadata.Electrical>();
JTNE_0x02_0x02_Device jTNE_0X02_0X02_Device = new JTNE_0x02_0x02_Device();
jTNE_0X02_0X02_Device.Electricals = new List<Metadata.Electrical>();
Metadata.Electrical electrical1 = new Metadata.Electrical();
electrical1.ElControlTemp = 0x01;
electrical1.ElCurrent = 100;
@@ -32,9 +32,9 @@ namespace JTNE.Protocol.Test.MessageBody
electrical2.ElTemp = 0x05;
electrical2.ElTorque = 566;
electrical2.ElVoltage = 2136;
jTNE_0X02_0X02.Electricals.Add(electrical1);
jTNE_0X02_0X02.Electricals.Add(electrical2);
var hex = JTNESerializer.Serialize(jTNE_0X02_0X02).ToHexString();
jTNE_0X02_0X02_Device.Electricals.Add(electrical1);
jTNE_0X02_0X02_Device.Electricals.Add(electrical2);
var hex = JTNESerializer_Device.Serialize(jTNE_0X02_0X02_Device).ToHexString();
Assert.Equal("0202010201004100370300EC0064020302004202360508580065", hex);
}

@@ -42,10 +42,10 @@ namespace JTNE.Protocol.Test.MessageBody
public void Test2()
{
var data = "0202010201004100370300EC0064020302004202360508580065".ToHexBytes();
JTNE_0x02_0x02 jTNE_0X02_0X02 = JTNESerializer.Deserialize<JTNE_0x02_0x02>(data);
Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x02, jTNE_0X02_0X02.TypeCode);
Assert.Equal(2, jTNE_0X02_0X02.ElectricalCount);
Metadata.Electrical electrical1 = jTNE_0X02_0X02.Electricals[0];
JTNE_0x02_0x02_Device jTNE_0X02_0X02_Device = JTNESerializer_Device.Deserialize<JTNE_0x02_0x02_Device>(data);
Assert.Equal(JTNE_0x02_Body_Device.JTNE_0x02_0x02_Device, jTNE_0X02_0X02_Device.TypeCode);
Assert.Equal(2, jTNE_0X02_0X02_Device.ElectricalCount);
Metadata.Electrical electrical1 = jTNE_0X02_0X02_Device.Electricals[0];
Assert.Equal(0x01, electrical1.ElControlTemp);
Assert.Equal(100, electrical1.ElCurrent);
Assert.Equal(0x01, electrical1.ElNo);
@@ -54,7 +54,7 @@ namespace JTNE.Protocol.Test.MessageBody
Assert.Equal(0x03, electrical1.ElTemp);
Assert.Equal(55, electrical1.ElTorque);
Assert.Equal(236, electrical1.ElVoltage);
Metadata.Electrical electrical2 = jTNE_0X02_0X02.Electricals[1];
Metadata.Electrical electrical2 = jTNE_0X02_0X02_Device.Electricals[1];
Assert.Equal(0x02, electrical2.ElControlTemp);
Assert.Equal(101, electrical2.ElCurrent);
Assert.Equal(0x02, electrical2.ElNo);

+ 68
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x02_PlatformTest.cs Просмотреть файл

@@ -0,0 +1,68 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_0x02_PlatformTest
{
[Fact]
public void Test1()
{
JTNE_0x02_0x02_Platform jTNE_0X02_0X02_Platform = new JTNE_0x02_0x02_Platform();
jTNE_0X02_0X02_Platform.Electricals = new List<Metadata.Electrical>();
Metadata.Electrical electrical1 = new Metadata.Electrical();
electrical1.ElControlTemp = 0x01;
electrical1.ElCurrent = 100;
electrical1.ElNo = 0x01;
electrical1.ElSpeed = 65;
electrical1.ElStatus = 0x02;
electrical1.ElTemp = 0x03;
electrical1.ElTorque = 55;
electrical1.ElVoltage = 236;
Metadata.Electrical electrical2 = new Metadata.Electrical();
electrical2.ElControlTemp = 0x02;
electrical2.ElCurrent = 101;
electrical2.ElNo = 0x02;
electrical2.ElSpeed = 66;
electrical2.ElStatus = 0x03;
electrical2.ElTemp = 0x05;
electrical2.ElTorque = 566;
electrical2.ElVoltage = 2136;
jTNE_0X02_0X02_Platform.Electricals.Add(electrical1);
jTNE_0X02_0X02_Platform.Electricals.Add(electrical2);
var hex = JTNESerializer_Platform.Serialize(jTNE_0X02_0X02_Platform).ToHexString();
Assert.Equal("0202010201004100370300EC0064020302004202360508580065", hex);
}

[Fact]
public void Test2()
{
var data = "0202010201004100370300EC0064020302004202360508580065".ToHexBytes();
JTNE_0x02_0x02_Platform jTNE_0X02_0X02_Platform = JTNESerializer_Platform.Deserialize<JTNE_0x02_0x02_Platform>(data);
Assert.Equal(JTNE_0x02_Body_Platform.JTNE_0x02_0x02_Platform, jTNE_0X02_0X02_Platform.TypeCode);
Assert.Equal(2, jTNE_0X02_0X02_Platform.ElectricalCount);
Metadata.Electrical electrical1 = jTNE_0X02_0X02_Platform.Electricals[0];
Assert.Equal(0x01, electrical1.ElControlTemp);
Assert.Equal(100, electrical1.ElCurrent);
Assert.Equal(0x01, electrical1.ElNo);
Assert.Equal(65, electrical1.ElSpeed);
Assert.Equal(0x02, electrical1.ElStatus);
Assert.Equal(0x03, electrical1.ElTemp);
Assert.Equal(55, electrical1.ElTorque);
Assert.Equal(236, electrical1.ElVoltage);
Metadata.Electrical electrical2 = jTNE_0X02_0X02_Platform.Electricals[1];
Assert.Equal(0x02, electrical2.ElControlTemp);
Assert.Equal(101, electrical2.ElCurrent);
Assert.Equal(0x02, electrical2.ElNo);
Assert.Equal(66, electrical2.ElSpeed);
Assert.Equal(0x03, electrical2.ElStatus);
Assert.Equal(0x05, electrical2.ElTemp);
Assert.Equal(566, electrical2.ElTorque);
Assert.Equal(2136, electrical2.ElVoltage);
}
}
}

+ 0
- 53
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x03Test.cs Просмотреть файл

@@ -1,53 +0,0 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_0x03Test
{
[Fact]
public void Test1()
{
JTNE_0x02_0x03 jTNE_0X02_0X03 = new JTNE_0x02_0x03();
jTNE_0X02_0X03.DCStatus = 0x02;
jTNE_0X02_0X03.FuelBatteryCurrent = 111;
jTNE_0X02_0X03.FuelBatteryVoltage = 2222;
jTNE_0X02_0X03.FuelConsumptionRate = 3222;
jTNE_0X02_0X03.HydrogenSystemMaxConcentrations = 6666;
jTNE_0X02_0X03.HydrogenSystemMaxConcentrationsNo = 0x56;
jTNE_0X02_0X03.HydrogenSystemMaxPressure = 3336;
jTNE_0X02_0X03.HydrogenSystemMaxPressureNo = 0x65;
jTNE_0X02_0X03.HydrogenSystemMaxTemp = 3355;
jTNE_0X02_0X03.HydrogenSystemMaxTempNo = 0x22;
jTNE_0X02_0X03.Temperatures = new byte[]
{
0x01,0x02,0x03
};
var hex = JTNESerializer.Serialize(jTNE_0X02_0X03).ToHexString();
Assert.Equal("0308AE006F0C9600030102030D1B221A0A560D086502", hex);
}

[Fact]
public void Test2()
{
var data = "0308AE006F0C9600030102030D1B221A0A560D086502".ToHexBytes();
JTNE_0x02_0x03 jTNE_0X02_0X03 = JTNESerializer.Deserialize<JTNE_0x02_0x03>(data);
Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x03, jTNE_0X02_0X03.TypeCode);
Assert.Equal(0x02, jTNE_0X02_0X03.DCStatus);
Assert.Equal(111, jTNE_0X02_0X03.FuelBatteryCurrent);
Assert.Equal(2222, jTNE_0X02_0X03.FuelBatteryVoltage);
Assert.Equal(3222, jTNE_0X02_0X03.FuelConsumptionRate);
Assert.Equal(6666, jTNE_0X02_0X03.HydrogenSystemMaxConcentrations);
Assert.Equal(0x56, jTNE_0X02_0X03.HydrogenSystemMaxConcentrationsNo);
Assert.Equal(3336, jTNE_0X02_0X03.HydrogenSystemMaxPressure);
Assert.Equal(0x65, jTNE_0X02_0X03.HydrogenSystemMaxPressureNo);
Assert.Equal(3355, jTNE_0X02_0X03.HydrogenSystemMaxTemp);
Assert.Equal(0x22, jTNE_0X02_0X03.HydrogenSystemMaxTempNo);
Assert.Equal(new byte []{ 0x01, 0x02, 0x03 }, jTNE_0X02_0X03.Temperatures);
}
}
}

+ 53
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x03_DeviceTest.cs Просмотреть файл

@@ -0,0 +1,53 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_0x03_DeviceTest
{
[Fact]
public void Test1()
{
JTNE_0x02_0x03_Device jTNE_0X02_0X03_Device = new JTNE_0x02_0x03_Device();
jTNE_0X02_0X03_Device.DCStatus = 0x02;
jTNE_0X02_0X03_Device.FuelBatteryCurrent = 111;
jTNE_0X02_0X03_Device.FuelBatteryVoltage = 2222;
jTNE_0X02_0X03_Device.FuelConsumptionRate = 3222;
jTNE_0X02_0X03_Device.HydrogenSystemMaxConcentrations = 6666;
jTNE_0X02_0X03_Device.HydrogenSystemMaxConcentrationsNo = 0x56;
jTNE_0X02_0X03_Device.HydrogenSystemMaxPressure = 3336;
jTNE_0X02_0X03_Device.HydrogenSystemMaxPressureNo = 0x65;
jTNE_0X02_0X03_Device.HydrogenSystemMaxTemp = 3355;
jTNE_0X02_0X03_Device.HydrogenSystemMaxTempNo = 0x22;
jTNE_0X02_0X03_Device.Temperatures = new byte[]
{
0x01,0x02,0x03
};
var hex = JTNESerializer_Device.Serialize(jTNE_0X02_0X03_Device).ToHexString();
Assert.Equal("0308AE006F0C9600030102030D1B221A0A560D086502", hex);
}

[Fact]
public void Test2()
{
var data = "0308AE006F0C9600030102030D1B221A0A560D086502".ToHexBytes();
JTNE_0x02_0x03_Device jTNE_0X02_0X03_Device = JTNESerializer_Device.Deserialize<JTNE_0x02_0x03_Device>(data);
Assert.Equal(JTNE_0x02_Body_Device.JTNE_0x02_0x03_Device, jTNE_0X02_0X03_Device.TypeCode);
Assert.Equal(0x02, jTNE_0X02_0X03_Device.DCStatus);
Assert.Equal(111, jTNE_0X02_0X03_Device.FuelBatteryCurrent);
Assert.Equal(2222, jTNE_0X02_0X03_Device.FuelBatteryVoltage);
Assert.Equal(3222, jTNE_0X02_0X03_Device.FuelConsumptionRate);
Assert.Equal(6666, jTNE_0X02_0X03_Device.HydrogenSystemMaxConcentrations);
Assert.Equal(0x56, jTNE_0X02_0X03_Device.HydrogenSystemMaxConcentrationsNo);
Assert.Equal(3336, jTNE_0X02_0X03_Device.HydrogenSystemMaxPressure);
Assert.Equal(0x65, jTNE_0X02_0X03_Device.HydrogenSystemMaxPressureNo);
Assert.Equal(3355, jTNE_0X02_0X03_Device.HydrogenSystemMaxTemp);
Assert.Equal(0x22, jTNE_0X02_0X03_Device.HydrogenSystemMaxTempNo);
Assert.Equal(new byte []{ 0x01, 0x02, 0x03 }, jTNE_0X02_0X03_Device.Temperatures);
}
}
}

+ 53
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x03_PlatformTest.cs Просмотреть файл

@@ -0,0 +1,53 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_0x03_PlatformTest
{
[Fact]
public void Test1()
{
JTNE_0x02_0x03_Platform jTNE_0X02_0X03_Platform = new JTNE_0x02_0x03_Platform();
jTNE_0X02_0X03_Platform.DCStatus = 0x02;
jTNE_0X02_0X03_Platform.FuelBatteryCurrent = 111;
jTNE_0X02_0X03_Platform.FuelBatteryVoltage = 2222;
jTNE_0X02_0X03_Platform.FuelConsumptionRate = 3222;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxConcentrations = 6666;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxConcentrationsNo = 0x56;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxPressure = 3336;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxPressureNo = 0x65;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxTemp = 3355;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxTempNo = 0x22;
jTNE_0X02_0X03_Platform.Temperatures = new byte[]
{
0x01,0x02,0x03
};
var hex = JTNESerializer_Platform.Serialize(jTNE_0X02_0X03_Platform).ToHexString();
Assert.Equal("0308AE006F0C9600030102030D1B221A0A560D086502", hex);
}

[Fact]
public void Test2()
{
var data = "0308AE006F0C9600030102030D1B221A0A560D086502".ToHexBytes();
JTNE_0x02_0x03_Platform jTNE_0X02_0X03_Platform = JTNESerializer_Platform.Deserialize<JTNE_0x02_0x03_Platform>(data);
Assert.Equal(JTNE_0x02_Body_Platform.JTNE_0x02_0x03_Platform, jTNE_0X02_0X03_Platform.TypeCode);
Assert.Equal(0x02, jTNE_0X02_0X03_Platform.DCStatus);
Assert.Equal(111, jTNE_0X02_0X03_Platform.FuelBatteryCurrent);
Assert.Equal(2222, jTNE_0X02_0X03_Platform.FuelBatteryVoltage);
Assert.Equal(3222, jTNE_0X02_0X03_Platform.FuelConsumptionRate);
Assert.Equal(6666, jTNE_0X02_0X03_Platform.HydrogenSystemMaxConcentrations);
Assert.Equal(0x56, jTNE_0X02_0X03_Platform.HydrogenSystemMaxConcentrationsNo);
Assert.Equal(3336, jTNE_0X02_0X03_Platform.HydrogenSystemMaxPressure);
Assert.Equal(0x65, jTNE_0X02_0X03_Platform.HydrogenSystemMaxPressureNo);
Assert.Equal(3355, jTNE_0X02_0X03_Platform.HydrogenSystemMaxTemp);
Assert.Equal(0x22, jTNE_0X02_0X03_Platform.HydrogenSystemMaxTempNo);
Assert.Equal(new byte []{ 0x01, 0x02, 0x03 }, jTNE_0X02_0X03_Platform.Temperatures);
}
}
}

+ 0
- 34
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x04Test.cs Просмотреть файл

@@ -1,34 +0,0 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_0x04Test
{
[Fact]
public void Test1()
{
JTNE_0x02_0x04 jTNE_0X02_0X04 = new JTNE_0x02_0x04();
jTNE_0X02_0X04.EngineStatus = 0x01;
jTNE_0X02_0X04.FuelRate = 102;
jTNE_0X02_0X04.Revs = 203;
var hex = JTNESerializer.Serialize(jTNE_0X02_0X04).ToHexString();
Assert.Equal("040100CB0066", hex);
}

[Fact]
public void Test2()
{
var data = "040100CB0066".ToHexBytes();
JTNE_0x02_0x04 jTNE_0X02_0X04 = JTNESerializer.Deserialize<JTNE_0x02_0x04>(data);
Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x04, jTNE_0X02_0X04.TypeCode);
Assert.Equal(0x01, jTNE_0X02_0X04.EngineStatus);
Assert.Equal(102, jTNE_0X02_0X04.FuelRate);
Assert.Equal(203, jTNE_0X02_0X04.Revs);
}
}
}

+ 34
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x04_DeviceTest.cs Просмотреть файл

@@ -0,0 +1,34 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_0x04_DeviceTest
{
[Fact]
public void Test1()
{
JTNE_0x02_0x04_Device jTNE_0X02_0X04_Device = new JTNE_0x02_0x04_Device();
jTNE_0X02_0X04_Device.EngineStatus = 0x01;
jTNE_0X02_0X04_Device.FuelRate = 102;
jTNE_0X02_0X04_Device.Revs = 203;
var hex = JTNESerializer_Device.Serialize(jTNE_0X02_0X04_Device).ToHexString();
Assert.Equal("040100CB0066", hex);
}

[Fact]
public void Test2()
{
var data = "040100CB0066".ToHexBytes();
JTNE_0x02_0x04_Device jTNE_0X02_0X04_Device = JTNESerializer_Device.Deserialize<JTNE_0x02_0x04_Device>(data);
Assert.Equal(JTNE_0x02_Body_Device.JTNE_0x02_0x04_Device, jTNE_0X02_0X04_Device.TypeCode);
Assert.Equal(0x01, jTNE_0X02_0X04_Device.EngineStatus);
Assert.Equal(102, jTNE_0X02_0X04_Device.FuelRate);
Assert.Equal(203, jTNE_0X02_0X04_Device.Revs);
}
}
}

+ 34
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x04_PlatformTest.cs Просмотреть файл

@@ -0,0 +1,34 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_0x04_PlatformTest
{
[Fact]
public void Test1()
{
JTNE_0x02_0x04_Platform jTNE_0X02_0X04_Platform = new JTNE_0x02_0x04_Platform();
jTNE_0X02_0X04_Platform.EngineStatus = 0x01;
jTNE_0X02_0X04_Platform.FuelRate = 102;
jTNE_0X02_0X04_Platform.Revs = 203;
var hex = JTNESerializer_Platform.Serialize(jTNE_0X02_0X04_Platform).ToHexString();
Assert.Equal("040100CB0066", hex);
}

[Fact]
public void Test2()
{
var data = "040100CB0066".ToHexBytes();
JTNE_0x02_0x04_Platform jTNE_0X02_0X04_Platform = JTNESerializer_Platform.Deserialize<JTNE_0x02_0x04_Platform>(data);
Assert.Equal(JTNE_0x02_Body_Platform.JTNE_0x02_0x04_Platform, jTNE_0X02_0X04_Platform.TypeCode);
Assert.Equal(0x01, jTNE_0X02_0X04_Platform.EngineStatus);
Assert.Equal(102, jTNE_0X02_0X04_Platform.FuelRate);
Assert.Equal(203, jTNE_0X02_0X04_Platform.Revs);
}
}
}

+ 0
- 34
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x05Test.cs Просмотреть файл

@@ -1,34 +0,0 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_0x05Test
{
[Fact]
public void Test1()
{
JTNE_0x02_0x05 jTNE_0X02_0X05 = new JTNE_0x02_0x05();
jTNE_0X02_0X05.Lat = 1233355;
jTNE_0X02_0X05.Lng = 3255555;
jTNE_0X02_0X05.PositioStatus = 0x01;
var hex = JTNESerializer.Serialize(jTNE_0X02_0X05).ToHexString();
Assert.Equal("05010031AD030012D1CB", hex);
}

[Fact]
public void Test2()
{
var data = "05010031AD030012D1CB".ToHexBytes();
JTNE_0x02_0x05 jTNE_0X02_0X05 = JTNESerializer.Deserialize<JTNE_0x02_0x05>(data);
Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x05, jTNE_0X02_0X05.TypeCode);
Assert.Equal((uint)1233355, jTNE_0X02_0X05.Lat);
Assert.Equal((uint)3255555, jTNE_0X02_0X05.Lng);
Assert.Equal(0x01, jTNE_0X02_0X05.PositioStatus);
}
}
}

+ 34
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x05_DeviceTest.cs Просмотреть файл

@@ -0,0 +1,34 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_0x05_DeviceTest
{
[Fact]
public void Test1()
{
JTNE_0x02_0x05_Device jTNE_0X02_0X05_Device = new JTNE_0x02_0x05_Device();
jTNE_0X02_0X05_Device.Lat = 1233355;
jTNE_0X02_0X05_Device.Lng = 3255555;
jTNE_0X02_0X05_Device.PositioStatus = 0x01;
var hex = JTNESerializer_Device.Serialize(jTNE_0X02_0X05_Device).ToHexString();
Assert.Equal("05010031AD030012D1CB", hex);
}

[Fact]
public void Test2()
{
var data = "05010031AD030012D1CB".ToHexBytes();
JTNE_0x02_0x05_Device jTNE_0X02_0X05_Device = JTNESerializer_Device.Deserialize<JTNE_0x02_0x05_Device>(data);
Assert.Equal(JTNE_0x02_Body_Device.JTNE_0x02_0x05_Device, jTNE_0X02_0X05_Device.TypeCode);
Assert.Equal((uint)1233355, jTNE_0X02_0X05_Device.Lat);
Assert.Equal((uint)3255555, jTNE_0X02_0X05_Device.Lng);
Assert.Equal(0x01, jTNE_0X02_0X05_Device.PositioStatus);
}
}
}

+ 34
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x05_PlatformTest.cs Просмотреть файл

@@ -0,0 +1,34 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_0x05_PlatformTest
{
[Fact]
public void Test1()
{
JTNE_0x02_0x05_Platform jTNE_0X02_0X05_Platform = new JTNE_0x02_0x05_Platform();
jTNE_0X02_0X05_Platform.Lat = 1233355;
jTNE_0X02_0X05_Platform.Lng = 3255555;
jTNE_0X02_0X05_Platform.PositioStatus = 0x01;
var hex = JTNESerializer_Platform.Serialize(jTNE_0X02_0X05_Platform).ToHexString();
Assert.Equal("05010031AD030012D1CB", hex);
}

[Fact]
public void Test2()
{
var data = "05010031AD030012D1CB".ToHexBytes();
JTNE_0x02_0x05_Platform jTNE_0X02_0X05_Platform = JTNESerializer_Platform.Deserialize<JTNE_0x02_0x05_Platform>(data);
Assert.Equal(JTNE_0x02_Body_Platform.JTNE_0x02_0x05_Platform, jTNE_0X02_0X05_Platform.TypeCode);
Assert.Equal((uint)1233355, jTNE_0X02_0X05_Platform.Lat);
Assert.Equal((uint)3255555, jTNE_0X02_0X05_Platform.Lng);
Assert.Equal(0x01, jTNE_0X02_0X05_Platform.PositioStatus);
}
}
}

+ 0
- 50
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x06Test.cs Просмотреть файл

@@ -1,50 +0,0 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_0x06Test
{
[Fact]
public void Test1()
{
JTNE_0x02_0x06 jTNE_0X02_0X06 = new JTNE_0x02_0x06();
jTNE_0X02_0X06.MaxTempBatteryAssemblyNo = 0x12;
jTNE_0X02_0X06.MaxTempProbeBatteryNo = 0x32;
jTNE_0X02_0X06.MaxTempProbeBatteryValue = 0x42;
jTNE_0X02_0X06.MaxVoltageBatteryAssemblyNo = 0x11;
jTNE_0X02_0X06.MaxVoltageSingleBatteryNo = 0x15;
jTNE_0X02_0X06.MaxVoltageSingleBatteryValue = 123;
jTNE_0X02_0X06.MinTempBatteryAssemblyNo = 0x32;
jTNE_0X02_0X06.MinTempProbeBatteryNo = 0x11;
jTNE_0X02_0X06.MinTempProbeBatteryValue = 0x06;
jTNE_0X02_0X06.MinVoltageBatteryAssemblyNo = 0x07;
jTNE_0X02_0X06.MinVoltageSingleBatteryNo = 0x09;
jTNE_0X02_0X06.MinVoltageSingleBatteryValue = 0x08;
var hex = JTNESerializer.Serialize(jTNE_0X02_0X06).ToHexString();
Assert.Equal("061115007B07090008321242113206", hex);
}

[Fact]
public void Test2()
{
var data = "061115007B07090008321242113206".ToHexBytes();
JTNE_0x02_0x06 jTNE_0X02_0X06 = JTNESerializer.Deserialize<JTNE_0x02_0x06>(data);
Assert.Equal(0x12, jTNE_0X02_0X06.MaxTempBatteryAssemblyNo);
Assert.Equal(0x32, jTNE_0X02_0X06.MaxTempProbeBatteryNo);
Assert.Equal(0x42, jTNE_0X02_0X06.MaxTempProbeBatteryValue);
Assert.Equal(0x11, jTNE_0X02_0X06.MaxVoltageBatteryAssemblyNo);
Assert.Equal(0x15, jTNE_0X02_0X06.MaxVoltageSingleBatteryNo);
Assert.Equal(123, jTNE_0X02_0X06.MaxVoltageSingleBatteryValue);
Assert.Equal(0x11, jTNE_0X02_0X06.MinTempProbeBatteryNo);
Assert.Equal(0x06, jTNE_0X02_0X06.MinTempProbeBatteryValue);
Assert.Equal(0x07, jTNE_0X02_0X06.MinVoltageBatteryAssemblyNo);
Assert.Equal(0x09, jTNE_0X02_0X06.MinVoltageSingleBatteryNo);
Assert.Equal(0x08, jTNE_0X02_0X06.MinVoltageSingleBatteryValue);
}
}
}

+ 50
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x06_DeviceTest.cs Просмотреть файл

@@ -0,0 +1,50 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_0x06_DeviceTest
{
[Fact]
public void Test1()
{
JTNE_0x02_0x06_Device jTNE_0X02_0X06_Device = new JTNE_0x02_0x06_Device();
jTNE_0X02_0X06_Device.MaxTempBatteryAssemblyNo = 0x12;
jTNE_0X02_0X06_Device.MaxTempProbeBatteryNo = 0x32;
jTNE_0X02_0X06_Device.MaxTempProbeBatteryValue = 0x42;
jTNE_0X02_0X06_Device.MaxVoltageBatteryAssemblyNo = 0x11;
jTNE_0X02_0X06_Device.MaxVoltageSingleBatteryNo = 0x15;
jTNE_0X02_0X06_Device.MaxVoltageSingleBatteryValue = 123;
jTNE_0X02_0X06_Device.MinTempBatteryAssemblyNo = 0x32;
jTNE_0X02_0X06_Device.MinTempProbeBatteryNo = 0x11;
jTNE_0X02_0X06_Device.MinTempProbeBatteryValue = 0x06;
jTNE_0X02_0X06_Device.MinVoltageBatteryAssemblyNo = 0x07;
jTNE_0X02_0X06_Device.MinVoltageSingleBatteryNo = 0x09;
jTNE_0X02_0X06_Device.MinVoltageSingleBatteryValue = 0x08;
var hex = JTNESerializer_Device.Serialize(jTNE_0X02_0X06_Device).ToHexString();
Assert.Equal("061115007B07090008321242113206", hex);
}

[Fact]
public void Test2()
{
var data = "061115007B07090008321242113206".ToHexBytes();
JTNE_0x02_0x06_Device jTNE_0X02_0X06_Device = JTNESerializer_Device.Deserialize<JTNE_0x02_0x06_Device>(data);
Assert.Equal(0x12, jTNE_0X02_0X06_Device.MaxTempBatteryAssemblyNo);
Assert.Equal(0x32, jTNE_0X02_0X06_Device.MaxTempProbeBatteryNo);
Assert.Equal(0x42, jTNE_0X02_0X06_Device.MaxTempProbeBatteryValue);
Assert.Equal(0x11, jTNE_0X02_0X06_Device.MaxVoltageBatteryAssemblyNo);
Assert.Equal(0x15, jTNE_0X02_0X06_Device.MaxVoltageSingleBatteryNo);
Assert.Equal(123, jTNE_0X02_0X06_Device.MaxVoltageSingleBatteryValue);
Assert.Equal(0x11, jTNE_0X02_0X06_Device.MinTempProbeBatteryNo);
Assert.Equal(0x06, jTNE_0X02_0X06_Device.MinTempProbeBatteryValue);
Assert.Equal(0x07, jTNE_0X02_0X06_Device.MinVoltageBatteryAssemblyNo);
Assert.Equal(0x09, jTNE_0X02_0X06_Device.MinVoltageSingleBatteryNo);
Assert.Equal(0x08, jTNE_0X02_0X06_Device.MinVoltageSingleBatteryValue);
}
}
}

+ 50
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x06_PlatformTest.cs Просмотреть файл

@@ -0,0 +1,50 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_0x06_PlatformTest
{
[Fact]
public void Test1()
{
JTNE_0x02_0x06_Platform jTNE_0X02_0X06_Platform = new JTNE_0x02_0x06_Platform();
jTNE_0X02_0X06_Platform.MaxTempBatteryAssemblyNo = 0x12;
jTNE_0X02_0X06_Platform.MaxTempProbeBatteryNo = 0x32;
jTNE_0X02_0X06_Platform.MaxTempProbeBatteryValue = 0x42;
jTNE_0X02_0X06_Platform.MaxVoltageBatteryAssemblyNo = 0x11;
jTNE_0X02_0X06_Platform.MaxVoltageSingleBatteryNo = 0x15;
jTNE_0X02_0X06_Platform.MaxVoltageSingleBatteryValue = 123;
jTNE_0X02_0X06_Platform.MinTempBatteryAssemblyNo = 0x32;
jTNE_0X02_0X06_Platform.MinTempProbeBatteryNo = 0x11;
jTNE_0X02_0X06_Platform.MinTempProbeBatteryValue = 0x06;
jTNE_0X02_0X06_Platform.MinVoltageBatteryAssemblyNo = 0x07;
jTNE_0X02_0X06_Platform.MinVoltageSingleBatteryNo = 0x09;
jTNE_0X02_0X06_Platform.MinVoltageSingleBatteryValue = 0x08;
var hex = JTNESerializer_Platform.Serialize(jTNE_0X02_0X06_Platform).ToHexString();
Assert.Equal("061115007B07090008321242113206", hex);
}

[Fact]
public void Test2()
{
var data = "061115007B07090008321242113206".ToHexBytes();
JTNE_0x02_0x06_Platform jTNE_0X02_0X06_Platform = JTNESerializer_Platform.Deserialize<JTNE_0x02_0x06_Platform>(data);
Assert.Equal(0x12, jTNE_0X02_0X06_Platform.MaxTempBatteryAssemblyNo);
Assert.Equal(0x32, jTNE_0X02_0X06_Platform.MaxTempProbeBatteryNo);
Assert.Equal(0x42, jTNE_0X02_0X06_Platform.MaxTempProbeBatteryValue);
Assert.Equal(0x11, jTNE_0X02_0X06_Platform.MaxVoltageBatteryAssemblyNo);
Assert.Equal(0x15, jTNE_0X02_0X06_Platform.MaxVoltageSingleBatteryNo);
Assert.Equal(123, jTNE_0X02_0X06_Platform.MaxVoltageSingleBatteryValue);
Assert.Equal(0x11, jTNE_0X02_0X06_Platform.MinTempProbeBatteryNo);
Assert.Equal(0x06, jTNE_0X02_0X06_Platform.MinTempProbeBatteryValue);
Assert.Equal(0x07, jTNE_0X02_0X06_Platform.MinVoltageBatteryAssemblyNo);
Assert.Equal(0x09, jTNE_0X02_0X06_Platform.MinVoltageSingleBatteryNo);
Assert.Equal(0x08, jTNE_0X02_0X06_Platform.MinVoltageSingleBatteryValue);
}
}
}

+ 0
- 67
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x07Test.cs Просмотреть файл

@@ -1,67 +0,0 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_0x07Test
{
[Fact]
public void Test1()
{
JTNE_0x02_0x07 jTNE_0X02_0X07 = new JTNE_0x02_0x07();
jTNE_0X02_0X07.AlarmBatteryFlag = 5533;
jTNE_0X02_0X07.AlarmLevel = 0x11;
jTNE_0X02_0X07.AlarmBatteryOthers = new List<uint>
{
1000,1001,1002
};
jTNE_0X02_0X07.AlarmEls = new List<uint>
{
2000,2001,2002
};
jTNE_0X02_0X07.AlarmEngines = new List<uint>
{
3000,3001,3002
};
jTNE_0X02_0X07.AlarmOthers = new List<uint>
{
4000,4001,4002
};
var hex = JTNESerializer.Serialize(jTNE_0X02_0X07).ToHexString();
Assert.Equal("07110000159D03000003E8000003E9000003EA03000007D0000007D1000007D20300000BB800000BB900000BBA0300000FA000000FA100000FA2", hex);
}

[Fact]
public void Test2()
{
var data = "07110000159D03000003E8000003E9000003EA03000007D0000007D1000007D20300000BB800000BB900000BBA0300000FA000000FA100000FA2".ToHexBytes();
JTNE_0x02_0x07 jTNE_0X02_0X07 = JTNESerializer.Deserialize<JTNE_0x02_0x07>(data);
Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x07, jTNE_0X02_0X07.TypeCode);
Assert.Equal(0x11, jTNE_0X02_0X07.AlarmLevel);
Assert.Equal(3, jTNE_0X02_0X07.AlarmBatteryOthers.Count);
Assert.Equal(new List<uint>
{
1000,1001,1002
}, jTNE_0X02_0X07.AlarmBatteryOthers);
Assert.Equal(3, jTNE_0X02_0X07.AlarmEls.Count);
Assert.Equal(new List<uint>
{
2000,2001,2002
}, jTNE_0X02_0X07.AlarmEls);
Assert.Equal(3, jTNE_0X02_0X07.AlarmEngines.Count);
Assert.Equal(new List<uint>
{
3000,3001,3002
}, jTNE_0X02_0X07.AlarmEngines);
Assert.Equal(3, jTNE_0X02_0X07.AlarmOthers.Count);
Assert.Equal(new List<uint>
{
4000,4001,4002
}, jTNE_0X02_0X07.AlarmOthers);
}
}
}

+ 67
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x07_DeviceTest.cs Просмотреть файл

@@ -0,0 +1,67 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_0x07_DeviceTest
{
[Fact]
public void Test1()
{
JTNE_0x02_0x07_Device jTNE_0X02_0X07_Device = new JTNE_0x02_0x07_Device();
jTNE_0X02_0X07_Device.AlarmBatteryFlag = 5533;
jTNE_0X02_0X07_Device.AlarmLevel = 0x11;
jTNE_0X02_0X07_Device.AlarmBatteryOthers = new List<uint>
{
1000,1001,1002
};
jTNE_0X02_0X07_Device.AlarmEls = new List<uint>
{
2000,2001,2002
};
jTNE_0X02_0X07_Device.AlarmEngines = new List<uint>
{
3000,3001,3002
};
jTNE_0X02_0X07_Device.AlarmOthers = new List<uint>
{
4000,4001,4002
};
var hex = JTNESerializer_Device.Serialize(jTNE_0X02_0X07_Device).ToHexString();
Assert.Equal("07110000159D03000003E8000003E9000003EA03000007D0000007D1000007D20300000BB800000BB900000BBA0300000FA000000FA100000FA2", hex);
}

[Fact]
public void Test2()
{
var data = "07110000159D03000003E8000003E9000003EA03000007D0000007D1000007D20300000BB800000BB900000BBA0300000FA000000FA100000FA2".ToHexBytes();
JTNE_0x02_0x07_Device jTNE_0X02_0X07_Device = JTNESerializer_Device.Deserialize<JTNE_0x02_0x07_Device>(data);
Assert.Equal(JTNE_0x02_Body_Device.JTNE_0x02_0x07_Device, jTNE_0X02_0X07_Device.TypeCode);
Assert.Equal(0x11, jTNE_0X02_0X07_Device.AlarmLevel);
Assert.Equal(3, jTNE_0X02_0X07_Device.AlarmBatteryOthers.Count);
Assert.Equal(new List<uint>
{
1000,1001,1002
}, jTNE_0X02_0X07_Device.AlarmBatteryOthers);
Assert.Equal(3, jTNE_0X02_0X07_Device.AlarmEls.Count);
Assert.Equal(new List<uint>
{
2000,2001,2002
}, jTNE_0X02_0X07_Device.AlarmEls);
Assert.Equal(3, jTNE_0X02_0X07_Device.AlarmEngines.Count);
Assert.Equal(new List<uint>
{
3000,3001,3002
}, jTNE_0X02_0X07_Device.AlarmEngines);
Assert.Equal(3, jTNE_0X02_0X07_Device.AlarmOthers.Count);
Assert.Equal(new List<uint>
{
4000,4001,4002
}, jTNE_0X02_0X07_Device.AlarmOthers);
}
}
}

+ 67
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x07_PlatformTest.cs Просмотреть файл

@@ -0,0 +1,67 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_0x07_PlatformTest
{
[Fact]
public void Test1()
{
JTNE_0x02_0x07_Platform jTNE_0X02_0X07_Platform = new JTNE_0x02_0x07_Platform();
jTNE_0X02_0X07_Platform.AlarmBatteryFlag = 5533;
jTNE_0X02_0X07_Platform.AlarmLevel = 0x11;
jTNE_0X02_0X07_Platform.AlarmBatteryOthers = new List<uint>
{
1000,1001,1002
};
jTNE_0X02_0X07_Platform.AlarmEls = new List<uint>
{
2000,2001,2002
};
jTNE_0X02_0X07_Platform.AlarmEngines = new List<uint>
{
3000,3001,3002
};
jTNE_0X02_0X07_Platform.AlarmOthers = new List<uint>
{
4000,4001,4002
};
var hex = JTNESerializer_Platform.Serialize(jTNE_0X02_0X07_Platform).ToHexString();
Assert.Equal("07110000159D03000003E8000003E9000003EA03000007D0000007D1000007D20300000BB800000BB900000BBA0300000FA000000FA100000FA2", hex);
}

[Fact]
public void Test2()
{
var data = "07110000159D03000003E8000003E9000003EA03000007D0000007D1000007D20300000BB800000BB900000BBA0300000FA000000FA100000FA2".ToHexBytes();
JTNE_0x02_0x07_Platform jTNE_0X02_0X07_Platform = JTNESerializer_Platform.Deserialize<JTNE_0x02_0x07_Platform>(data);
Assert.Equal(JTNE_0x02_Body_Platform.JTNE_0x02_0x07_Platform, jTNE_0X02_0X07_Platform.TypeCode);
Assert.Equal(0x11, jTNE_0X02_0X07_Platform.AlarmLevel);
Assert.Equal(3, jTNE_0X02_0X07_Platform.AlarmBatteryOthers.Count);
Assert.Equal(new List<uint>
{
1000,1001,1002
}, jTNE_0X02_0X07_Platform.AlarmBatteryOthers);
Assert.Equal(3, jTNE_0X02_0X07_Platform.AlarmEls.Count);
Assert.Equal(new List<uint>
{
2000,2001,2002
}, jTNE_0X02_0X07_Platform.AlarmEls);
Assert.Equal(3, jTNE_0X02_0X07_Platform.AlarmEngines.Count);
Assert.Equal(new List<uint>
{
3000,3001,3002
}, jTNE_0X02_0X07_Platform.AlarmEngines);
Assert.Equal(3, jTNE_0X02_0X07_Platform.AlarmOthers.Count);
Assert.Equal(new List<uint>
{
4000,4001,4002
}, jTNE_0X02_0X07_Platform.AlarmOthers);
}
}
}

src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x08Test.cs → src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x08_DeviceTest.cs Просмотреть файл

@@ -7,13 +7,13 @@ using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_0x08Test
public class JTNE_0x02_0x08_DeviceTest
{
[Fact]
public void Test1()
{
JTNE_0x02_0x08 jTNE_0X02_0X08 = new JTNE_0x02_0x08();
jTNE_0X02_0X08.BatteryAssemblies = new List<Metadata.BatteryAssembly>();
JTNE_0x02_0x08_Device jTNE_0X02_0X08_Device = new JTNE_0x02_0x08_Device();
jTNE_0X02_0X08_Device.BatteryAssemblies = new List<Metadata.BatteryAssembly>();
Metadata.BatteryAssembly batteryAssembly1 = new Metadata.BatteryAssembly();
batteryAssembly1.BatteryAssemblyCurrent = 123;
batteryAssembly1.BatteryAssemblyNo = 0x01;
@@ -34,9 +34,9 @@ namespace JTNE.Protocol.Test.MessageBody
batteryAssembly2.SingleBatteryVoltages = new List<ushort> {
444,555,666
};
jTNE_0X02_0X08.BatteryAssemblies.Add(batteryAssembly1);
jTNE_0X02_0X08.BatteryAssemblies.Add(batteryAssembly2);
var hex = JTNESerializer.Serialize(jTNE_0X02_0X08).ToHexString();
jTNE_0X02_0X08_Device.BatteryAssemblies.Add(batteryAssembly1);
jTNE_0X02_0X08_Device.BatteryAssemblies.Add(batteryAssembly2);
var hex = JTNESerializer_Device.Serialize(jTNE_0X02_0X08_Device).ToHexString();
Assert.Equal("0802010002007B0037006F03006F00DE014D03000504D2004200DE0301BC022B029A", hex);
}

@@ -44,11 +44,11 @@ namespace JTNE.Protocol.Test.MessageBody
public void Test2()
{
var data = "0802010002007B0037006F03006F00DE014D03000504D2004200DE0301BC022B029A".ToHexBytes();
JTNE_0x02_0x08 jTNE_0X02_0X08 = JTNESerializer.Deserialize<JTNE_0x02_0x08>(data);
Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x08, jTNE_0X02_0X08.TypeCode);
Assert.Equal(2, jTNE_0X02_0X08.BatteryAssemblyCount);
JTNE_0x02_0x08_Device jTNE_0X02_0X08_Device = JTNESerializer_Device.Deserialize<JTNE_0x02_0x08_Device>(data);
Assert.Equal(JTNE_0x02_Body_Device.JTNE_0x02_0x08_Device, jTNE_0X02_0X08_Device.TypeCode);
Assert.Equal(2, jTNE_0X02_0X08_Device.BatteryAssemblyCount);

Metadata.BatteryAssembly batteryAssembly1 = jTNE_0X02_0X08.BatteryAssemblies[0];
Metadata.BatteryAssembly batteryAssembly1 = jTNE_0X02_0X08_Device.BatteryAssemblies[0];
Assert.Equal(123, batteryAssembly1.BatteryAssemblyCurrent);
Assert.Equal(0x01, batteryAssembly1.BatteryAssemblyNo);
Assert.Equal(0x02, batteryAssembly1.BatteryAssemblyVoltage);
@@ -59,7 +59,7 @@ namespace JTNE.Protocol.Test.MessageBody
111,222,333
}, batteryAssembly1.SingleBatteryVoltages);

Metadata.BatteryAssembly batteryAssembly2 = jTNE_0X02_0X08.BatteryAssemblies[1];
Metadata.BatteryAssembly batteryAssembly2 = jTNE_0X02_0X08_Device.BatteryAssemblies[1];
Assert.Equal(1234, batteryAssembly2.BatteryAssemblyCurrent);
Assert.Equal(0x03, batteryAssembly2.BatteryAssemblyNo);
Assert.Equal(0x05, batteryAssembly2.BatteryAssemblyVoltage);

src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x09Test.cs → src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x09_DeviceTest.cs Просмотреть файл

@@ -7,13 +7,13 @@ using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_0x09Test
public class JTNE_0x02_0x09_DeviceTest
{
[Fact]
public void Test1()
{
JTNE_0x02_0x09 jTNE_0X02_0X09 = new JTNE_0x02_0x09();
jTNE_0X02_0X09.BatteryTemperatures = new List<Metadata.BatteryTemperature>();
JTNE_0x02_0x09_Device jTNE_0X02_0X09_Device = new JTNE_0x02_0x09_Device();
jTNE_0X02_0X09_Device.BatteryTemperatures = new List<Metadata.BatteryTemperature>();

Metadata.BatteryTemperature batteryTemperature1 = new Metadata.BatteryTemperature();
batteryTemperature1.BatteryAssemblyNo = 0x01;
@@ -29,9 +29,9 @@ namespace JTNE.Protocol.Test.MessageBody
0x05,0x06,0x07,0x08
};

jTNE_0X02_0X09.BatteryTemperatures.Add(batteryTemperature1);
jTNE_0X02_0X09.BatteryTemperatures.Add(batteryTemperature2);
var hex = JTNESerializer.Serialize(jTNE_0X02_0X09).ToHexString();
jTNE_0X02_0X09_Device.BatteryTemperatures.Add(batteryTemperature1);
jTNE_0X02_0X09_Device.BatteryTemperatures.Add(batteryTemperature2);
var hex = JTNESerializer_Device.Serialize(jTNE_0X02_0X09_Device).ToHexString();
Assert.Equal("09020100040102030402000405060708", hex);
}

@@ -39,11 +39,11 @@ namespace JTNE.Protocol.Test.MessageBody
public void Test2()
{
var data = "09020100040102030402000405060708".ToHexBytes();
JTNE_0x02_0x09 jTNE_0X02_0X09 = JTNESerializer.Deserialize<JTNE_0x02_0x09>(data);
Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x09, jTNE_0X02_0X09.TypeCode);
Assert.Equal(2, jTNE_0X02_0X09.BatteryTemperatureCount);
JTNE_0x02_0x09_Device jTNE_0X02_0X09_Device = JTNESerializer_Device.Deserialize<JTNE_0x02_0x09_Device>(data);
Assert.Equal(JTNE_0x02_Body_Device.JTNE_0x02_0x09_Device, jTNE_0X02_0X09_Device.TypeCode);
Assert.Equal(2, jTNE_0X02_0X09_Device.BatteryTemperatureCount);

Metadata.BatteryTemperature batteryTemperature1 = jTNE_0X02_0X09.BatteryTemperatures[0];
Metadata.BatteryTemperature batteryTemperature1 = jTNE_0X02_0X09_Device.BatteryTemperatures[0];
Assert.Equal(0x01, batteryTemperature1.BatteryAssemblyNo);
Assert.Equal(4, batteryTemperature1.TemperatureProbeCount);
Assert.Equal(new byte[]
@@ -51,7 +51,7 @@ namespace JTNE.Protocol.Test.MessageBody
0x01,0x02,0x03,0x04
}, batteryTemperature1.Temperatures);

Metadata.BatteryTemperature batteryTemperature2 = jTNE_0X02_0X09.BatteryTemperatures[1];
Metadata.BatteryTemperature batteryTemperature2 = jTNE_0X02_0X09_Device.BatteryTemperatures[1];
Assert.Equal(0x02, batteryTemperature2.BatteryAssemblyNo);
Assert.Equal(4, batteryTemperature2.TemperatureProbeCount);
Assert.Equal(new byte[]

+ 0
- 170
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_CompositeTest.cs Просмотреть файл

@@ -1,170 +0,0 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_CompositeTest
{
[Fact]
public void Test1()
{
JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody(0xA1, typeof(JTNE_0x02_0xA1));
JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody(0xA2, typeof(JTNE_0x02_0xA2));

JTNE_0x02 jTNE_0X02 = new JTNE_0x02();
jTNE_0X02.Values = new Dictionary<byte, JTNE_0x02_Body>();
jTNE_0X02.CusotmSerializeObjectValues = new Dictionary<byte, JTNE_0x02_CustomBody>();

JTNE_0x02_0x01 jTNE_0X02_0X01 = new JTNE_0x02_0x01();
jTNE_0X02_0X01.Accelerator = 0x02;
jTNE_0X02_0X01.Brakes = 0x03;
jTNE_0X02_0X01.CarStatus = 0x04;
jTNE_0X02_0X01.ChargeStatus = 0x05;
jTNE_0X02_0X01.DCStatus = 0x06;
jTNE_0X02_0X01.OperationMode = 0x07;
jTNE_0X02_0X01.Resistance = 123;
jTNE_0X02_0X01.SOC = 0x03;
jTNE_0X02_0X01.Speed = 58;
jTNE_0X02_0X01.Stall = 0x02;
jTNE_0X02_0X01.TotalDis = 6666;
jTNE_0X02_0X01.TotalTemp = 99;
jTNE_0X02_0X01.TotalVoltage = 100;
jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x01, jTNE_0X02_0X01);

JTNE_0x02_0x02 jTNE_0X02_0X02 = new JTNE_0x02_0x02();
jTNE_0X02_0X02.Electricals = new List<Metadata.Electrical>();
Metadata.Electrical electrical1 = new Metadata.Electrical();
electrical1.ElControlTemp = 0x01;
electrical1.ElCurrent = 100;
electrical1.ElNo = 0x01;
electrical1.ElSpeed = 65;
electrical1.ElStatus = 0x02;
electrical1.ElTemp = 0x03;
electrical1.ElTorque = 55;
electrical1.ElVoltage = 236;
Metadata.Electrical electrical2 = new Metadata.Electrical();
electrical2.ElControlTemp = 0x02;
electrical2.ElCurrent = 101;
electrical2.ElNo = 0x02;
electrical2.ElSpeed = 66;
electrical2.ElStatus = 0x03;
electrical2.ElTemp = 0x05;
electrical2.ElTorque = 566;
electrical2.ElVoltage = 2136;
jTNE_0X02_0X02.Electricals.Add(electrical1);
jTNE_0X02_0X02.Electricals.Add(electrical2);
jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x02, jTNE_0X02_0X02);

JTNE_0x02_0x03 jTNE_0X02_0X03 = new JTNE_0x02_0x03();
jTNE_0X02_0X03.DCStatus = 0x02;
jTNE_0X02_0X03.FuelBatteryCurrent = 111;
jTNE_0X02_0X03.FuelBatteryVoltage = 2222;
jTNE_0X02_0X03.FuelConsumptionRate = 3222;
jTNE_0X02_0X03.HydrogenSystemMaxConcentrations = 6666;
jTNE_0X02_0X03.HydrogenSystemMaxConcentrationsNo = 0x56;
jTNE_0X02_0X03.HydrogenSystemMaxPressure = 3336;
jTNE_0X02_0X03.HydrogenSystemMaxPressureNo = 0x65;
jTNE_0X02_0X03.HydrogenSystemMaxTemp = 3355;
jTNE_0X02_0X03.HydrogenSystemMaxTempNo = 0x22;
jTNE_0X02_0X03.Temperatures = new byte[]
{
0x01,0x02,0x03
};
jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x03, jTNE_0X02_0X03);

JTNE_0x02_0xA1 jTNE_0X02_0XA1 = new JTNE_0x02_0xA1();
jTNE_0X02_0XA1.UserName = "SmallChi";
jTNE_0X02_0XA1.Age = 18;
jTNE_0X02.CusotmSerializeObjectValues.Add(0xA1, jTNE_0X02_0XA1);

JTNE_0x02_0xA2 jTNE_0X02_0XA2 = new JTNE_0x02_0xA2();
jTNE_0X02_0XA2.CompanyName = "小池有限公司";
jTNE_0X02.CusotmSerializeObjectValues.Add(0xA2, jTNE_0X02_0XA2);


var hex = JTNESerializer.Serialize(jTNE_0X02).ToHexString();
Assert.Equal("01040507003A00001A0A00640063030602007B02030202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502A1000E536D616C6C436869000000000012A20014E5B08FE6B1A0E69C89E99990E585ACE58FB80000", hex);
}

[Fact]
public void Test2()
{
JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody(0xA1, typeof(JTNE_0x02_0xA1));
JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody(0xA2, typeof(JTNE_0x02_0xA2));

var data = "01040507003A00001A0A00640063030602007B02030202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502A1000E536D616C6C436869000000000012A20014E5B08FE6B1A0E69C89E99990E585ACE58FB80000".ToHexBytes();
JTNE_0x02 jTNE_0X02 = JTNESerializer.Deserialize<JTNE_0x02>(data);

JTNE_0x02_0x01 jTNE_0X02_0X01 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x01] as JTNE_0x02_0x01;
Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x01, jTNE_0X02_0X01.TypeCode);
Assert.Equal(0x02, jTNE_0X02_0X01.Accelerator);
Assert.Equal(0x03, jTNE_0X02_0X01.Brakes);
Assert.Equal(0x04, jTNE_0X02_0X01.CarStatus);
Assert.Equal(0x05, jTNE_0X02_0X01.ChargeStatus);
Assert.Equal(0x06, jTNE_0X02_0X01.DCStatus);
Assert.Equal(0x07, jTNE_0X02_0X01.OperationMode);
Assert.Equal(123, jTNE_0X02_0X01.Resistance);
Assert.Equal(0x03, jTNE_0X02_0X01.SOC);
Assert.Equal(58, jTNE_0X02_0X01.Speed);
Assert.Equal(0x02, jTNE_0X02_0X01.Stall);
Assert.Equal((uint)6666, jTNE_0X02_0X01.TotalDis);
Assert.Equal(99, jTNE_0X02_0X01.TotalTemp);
Assert.Equal(100, jTNE_0X02_0X01.TotalVoltage);


JTNE_0x02_0x02 jTNE_0X02_0X02 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x02] as JTNE_0x02_0x02;
Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x02, jTNE_0X02_0X02.TypeCode);
Assert.Equal(2, jTNE_0X02_0X02.ElectricalCount);
Metadata.Electrical electrical1 = jTNE_0X02_0X02.Electricals[0];
Assert.Equal(0x01, electrical1.ElControlTemp);
Assert.Equal(100, electrical1.ElCurrent);
Assert.Equal(0x01, electrical1.ElNo);
Assert.Equal(65, electrical1.ElSpeed);
Assert.Equal(0x02, electrical1.ElStatus);
Assert.Equal(0x03, electrical1.ElTemp);
Assert.Equal(55, electrical1.ElTorque);
Assert.Equal(236, electrical1.ElVoltage);
Metadata.Electrical electrical2 = jTNE_0X02_0X02.Electricals[1];
Assert.Equal(0x02, electrical2.ElControlTemp);
Assert.Equal(101, electrical2.ElCurrent);
Assert.Equal(0x02, electrical2.ElNo);
Assert.Equal(66, electrical2.ElSpeed);
Assert.Equal(0x03, electrical2.ElStatus);
Assert.Equal(0x05, electrical2.ElTemp);
Assert.Equal(566, electrical2.ElTorque);
Assert.Equal(2136, electrical2.ElVoltage);

JTNE_0x02_0x03 jTNE_0X02_0X03 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x03] as JTNE_0x02_0x03;

Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x03, jTNE_0X02_0X03.TypeCode);
Assert.Equal(0x02, jTNE_0X02_0X03.DCStatus);
Assert.Equal(111, jTNE_0X02_0X03.FuelBatteryCurrent);
Assert.Equal(2222, jTNE_0X02_0X03.FuelBatteryVoltage);
Assert.Equal(3222, jTNE_0X02_0X03.FuelConsumptionRate);
Assert.Equal(6666, jTNE_0X02_0X03.HydrogenSystemMaxConcentrations);
Assert.Equal(0x56, jTNE_0X02_0X03.HydrogenSystemMaxConcentrationsNo);
Assert.Equal(3336, jTNE_0X02_0X03.HydrogenSystemMaxPressure);
Assert.Equal(0x65, jTNE_0X02_0X03.HydrogenSystemMaxPressureNo);
Assert.Equal(3355, jTNE_0X02_0X03.HydrogenSystemMaxTemp);
Assert.Equal(0x22, jTNE_0X02_0X03.HydrogenSystemMaxTempNo);
Assert.Equal(new byte[] { 0x01, 0x02, 0x03 }, jTNE_0X02_0X03.Temperatures);


JTNE_0x02_0xA1 jTNE_0X02_0XA1 = JTNESerializer.Deserialize<JTNE_0x02_0xA1>(jTNE_0X02.CusotmValues[0xA1]);
Assert.Equal(0xA1, jTNE_0X02_0XA1.TypeCode);
Assert.Equal(14, jTNE_0X02_0XA1.Length);
Assert.Equal("SmallChi", jTNE_0X02_0XA1.UserName);
Assert.Equal(18, jTNE_0X02_0XA1.Age);

JTNE_0x02_0xA2 jTNE_0X02_0XA2 = JTNESerializer.Deserialize<JTNE_0x02_0xA2>(jTNE_0X02.CusotmValues[0xA2]);
Assert.Equal(0xA2, jTNE_0X02_0XA2.TypeCode);
Assert.Equal(20, jTNE_0X02_0XA2.Length);
Assert.Equal("小池有限公司", jTNE_0X02_0XA2.CompanyName);
}

}
}

+ 170
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_Composite_DeviceTest.cs Просмотреть файл

@@ -0,0 +1,170 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_Composite_DeviceTest
{
[Fact]
public void Test1()
{
JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody_Device(0xA1, typeof(JTNE_0x02_0xA1_Device));
JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody_Device(0xA2, typeof(JTNE_0x02_0xA2_Device));

JTNE_0x02_Device jTNE_0X02_Device = new JTNE_0x02_Device();
jTNE_0X02_Device.Values = new Dictionary<byte, JTNE_0x02_Body_Device>();
jTNE_0X02_Device.CusotmSerializeObjectValues = new Dictionary<byte, JTNE_0x02_CustomBody_Device>();

JTNE_0x02_0x01_Device jTNE_0X02_0X01_Device = new JTNE_0x02_0x01_Device();
jTNE_0X02_0X01_Device.Accelerator = 0x02;
jTNE_0X02_0X01_Device.Brakes = 0x03;
jTNE_0X02_0X01_Device.CarStatus = 0x04;
jTNE_0X02_0X01_Device.ChargeStatus = 0x05;
jTNE_0X02_0X01_Device.DCStatus = 0x06;
jTNE_0X02_0X01_Device.OperationMode = 0x07;
jTNE_0X02_0X01_Device.Resistance = 123;
jTNE_0X02_0X01_Device.SOC = 0x03;
jTNE_0X02_0X01_Device.Speed = 58;
jTNE_0X02_0X01_Device.Stall = 0x02;
jTNE_0X02_0X01_Device.TotalDis = 6666;
jTNE_0X02_0X01_Device.TotalTemp = 99;
jTNE_0X02_0X01_Device.TotalVoltage = 100;
jTNE_0X02_Device.Values.Add(JTNE_0x02_Body_Device.JTNE_0x02_0x01_Device, jTNE_0X02_0X01_Device);

JTNE_0x02_0x02_Device jTNE_0X02_0X02_Device = new JTNE_0x02_0x02_Device();
jTNE_0X02_0X02_Device.Electricals = new List<Metadata.Electrical>();
Metadata.Electrical electrical1 = new Metadata.Electrical();
electrical1.ElControlTemp = 0x01;
electrical1.ElCurrent = 100;
electrical1.ElNo = 0x01;
electrical1.ElSpeed = 65;
electrical1.ElStatus = 0x02;
electrical1.ElTemp = 0x03;
electrical1.ElTorque = 55;
electrical1.ElVoltage = 236;
Metadata.Electrical electrical2 = new Metadata.Electrical();
electrical2.ElControlTemp = 0x02;
electrical2.ElCurrent = 101;
electrical2.ElNo = 0x02;
electrical2.ElSpeed = 66;
electrical2.ElStatus = 0x03;
electrical2.ElTemp = 0x05;
electrical2.ElTorque = 566;
electrical2.ElVoltage = 2136;
jTNE_0X02_0X02_Device.Electricals.Add(electrical1);
jTNE_0X02_0X02_Device.Electricals.Add(electrical2);
jTNE_0X02_Device.Values.Add(JTNE_0x02_Body_Device.JTNE_0x02_0x02_Device, jTNE_0X02_0X02_Device);

JTNE_0x02_0x03_Device jTNE_0X02_0X03_Device = new JTNE_0x02_0x03_Device();
jTNE_0X02_0X03_Device.DCStatus = 0x02;
jTNE_0X02_0X03_Device.FuelBatteryCurrent = 111;
jTNE_0X02_0X03_Device.FuelBatteryVoltage = 2222;
jTNE_0X02_0X03_Device.FuelConsumptionRate = 3222;
jTNE_0X02_0X03_Device.HydrogenSystemMaxConcentrations = 6666;
jTNE_0X02_0X03_Device.HydrogenSystemMaxConcentrationsNo = 0x56;
jTNE_0X02_0X03_Device.HydrogenSystemMaxPressure = 3336;
jTNE_0X02_0X03_Device.HydrogenSystemMaxPressureNo = 0x65;
jTNE_0X02_0X03_Device.HydrogenSystemMaxTemp = 3355;
jTNE_0X02_0X03_Device.HydrogenSystemMaxTempNo = 0x22;
jTNE_0X02_0X03_Device.Temperatures = new byte[]
{
0x01,0x02,0x03
};
jTNE_0X02_Device.Values.Add(JTNE_0x02_Body_Device.JTNE_0x02_0x03_Device, jTNE_0X02_0X03_Device);

JTNE_0x02_0xA1_Device jTNE_0X02_0XA1_Device = new JTNE_0x02_0xA1_Device();
jTNE_0X02_0XA1_Device.UserName = "SmallChi";
jTNE_0X02_0XA1_Device.Age = 18;
jTNE_0X02_Device.CusotmSerializeObjectValues.Add(0xA1, jTNE_0X02_0XA1_Device);

JTNE_0x02_0xA2_Device jTNE_0X02_0XA2_Device = new JTNE_0x02_0xA2_Device();
jTNE_0X02_0XA2_Device.CompanyName = "小池有限公司";
jTNE_0X02_Device.CusotmSerializeObjectValues.Add(0xA2, jTNE_0X02_0XA2_Device);


var hex = JTNESerializer_Device.Serialize(jTNE_0X02_Device).ToHexString();
Assert.Equal("01040507003A00001A0A00640063030602007B02030202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502A1000E536D616C6C436869000000000012A20014E5B08FE6B1A0E69C89E99990E585ACE58FB80000", hex);
}

[Fact]
public void Test2()
{
JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody_Device(0xA1, typeof(JTNE_0x02_0xA1_Device));
JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody_Device(0xA2, typeof(JTNE_0x02_0xA2_Device));

var data = "01040507003A00001A0A00640063030602007B02030202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502A1000E536D616C6C436869000000000012A20014E5B08FE6B1A0E69C89E99990E585ACE58FB80000".ToHexBytes();
JTNE_0x02_Device jTNE_0X02_Device = JTNESerializer_Device.Deserialize<JTNE_0x02_Device>(data);

JTNE_0x02_0x01_Device jTNE_0X02_0X01_Device = jTNE_0X02_Device.Values[JTNE_0x02_Body_Device.JTNE_0x02_0x01_Device] as JTNE_0x02_0x01_Device;
Assert.Equal(JTNE_0x02_Body_Device.JTNE_0x02_0x01_Device, jTNE_0X02_0X01_Device.TypeCode);
Assert.Equal(0x02, jTNE_0X02_0X01_Device.Accelerator);
Assert.Equal(0x03, jTNE_0X02_0X01_Device.Brakes);
Assert.Equal(0x04, jTNE_0X02_0X01_Device.CarStatus);
Assert.Equal(0x05, jTNE_0X02_0X01_Device.ChargeStatus);
Assert.Equal(0x06, jTNE_0X02_0X01_Device.DCStatus);
Assert.Equal(0x07, jTNE_0X02_0X01_Device.OperationMode);
Assert.Equal(123, jTNE_0X02_0X01_Device.Resistance);
Assert.Equal(0x03, jTNE_0X02_0X01_Device.SOC);
Assert.Equal(58, jTNE_0X02_0X01_Device.Speed);
Assert.Equal(0x02, jTNE_0X02_0X01_Device.Stall);
Assert.Equal((uint)6666, jTNE_0X02_0X01_Device.TotalDis);
Assert.Equal(99, jTNE_0X02_0X01_Device.TotalTemp);
Assert.Equal(100, jTNE_0X02_0X01_Device.TotalVoltage);


JTNE_0x02_0x02_Device jTNE_0X02_0X02_Device = jTNE_0X02_Device.Values[JTNE_0x02_Body_Device.JTNE_0x02_0x02_Device] as JTNE_0x02_0x02_Device;
Assert.Equal(JTNE_0x02_Body_Device.JTNE_0x02_0x02_Device, jTNE_0X02_0X02_Device.TypeCode);
Assert.Equal(2, jTNE_0X02_0X02_Device.ElectricalCount);
Metadata.Electrical electrical1 = jTNE_0X02_0X02_Device.Electricals[0];
Assert.Equal(0x01, electrical1.ElControlTemp);
Assert.Equal(100, electrical1.ElCurrent);
Assert.Equal(0x01, electrical1.ElNo);
Assert.Equal(65, electrical1.ElSpeed);
Assert.Equal(0x02, electrical1.ElStatus);
Assert.Equal(0x03, electrical1.ElTemp);
Assert.Equal(55, electrical1.ElTorque);
Assert.Equal(236, electrical1.ElVoltage);
Metadata.Electrical electrical2 = jTNE_0X02_0X02_Device.Electricals[1];
Assert.Equal(0x02, electrical2.ElControlTemp);
Assert.Equal(101, electrical2.ElCurrent);
Assert.Equal(0x02, electrical2.ElNo);
Assert.Equal(66, electrical2.ElSpeed);
Assert.Equal(0x03, electrical2.ElStatus);
Assert.Equal(0x05, electrical2.ElTemp);
Assert.Equal(566, electrical2.ElTorque);
Assert.Equal(2136, electrical2.ElVoltage);

JTNE_0x02_0x03_Device jTNE_0X02_0X03_Device = jTNE_0X02_Device.Values[JTNE_0x02_Body_Device.JTNE_0x02_0x03_Device] as JTNE_0x02_0x03_Device;

Assert.Equal(JTNE_0x02_Body_Device.JTNE_0x02_0x03_Device, jTNE_0X02_0X03_Device.TypeCode);
Assert.Equal(0x02, jTNE_0X02_0X03_Device.DCStatus);
Assert.Equal(111, jTNE_0X02_0X03_Device.FuelBatteryCurrent);
Assert.Equal(2222, jTNE_0X02_0X03_Device.FuelBatteryVoltage);
Assert.Equal(3222, jTNE_0X02_0X03_Device.FuelConsumptionRate);
Assert.Equal(6666, jTNE_0X02_0X03_Device.HydrogenSystemMaxConcentrations);
Assert.Equal(0x56, jTNE_0X02_0X03_Device.HydrogenSystemMaxConcentrationsNo);
Assert.Equal(3336, jTNE_0X02_0X03_Device.HydrogenSystemMaxPressure);
Assert.Equal(0x65, jTNE_0X02_0X03_Device.HydrogenSystemMaxPressureNo);
Assert.Equal(3355, jTNE_0X02_0X03_Device.HydrogenSystemMaxTemp);
Assert.Equal(0x22, jTNE_0X02_0X03_Device.HydrogenSystemMaxTempNo);
Assert.Equal(new byte[] { 0x01, 0x02, 0x03 }, jTNE_0X02_0X03_Device.Temperatures);


JTNE_0x02_0xA1_Device jTNE_0X02_0XA1_Device = JTNESerializer_Device.Deserialize<JTNE_0x02_0xA1_Device>(jTNE_0X02_Device.CusotmValues[0xA1]);
Assert.Equal(0xA1, jTNE_0X02_0XA1_Device.TypeCode);
Assert.Equal(14, jTNE_0X02_0XA1_Device.Length);
Assert.Equal("SmallChi", jTNE_0X02_0XA1_Device.UserName);
Assert.Equal(18, jTNE_0X02_0XA1_Device.Age);

JTNE_0x02_0xA2_Device jTNE_0X02_0XA2_Device = JTNESerializer_Device.Deserialize<JTNE_0x02_0xA2_Device>(jTNE_0X02_Device.CusotmValues[0xA2]);
Assert.Equal(0xA2, jTNE_0X02_0XA2_Device.TypeCode);
Assert.Equal(20, jTNE_0X02_0XA2_Device.Length);
Assert.Equal("小池有限公司", jTNE_0X02_0XA2_Device.CompanyName);
}

}
}

+ 166
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_Composite_PlatformTest.cs Просмотреть файл

@@ -0,0 +1,166 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_Composite_PlatformTest
{
[Fact]
public void Test1()
{
JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody_Platform(0xA1, typeof(JTNE_0x02_0xA1_Platform));
JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody_Platform(0xA2, typeof(JTNE_0x02_0xA2_Platform));

JTNE_0x02_Platform jTNE_0X02_Platform = new JTNE_0x02_Platform();
jTNE_0X02_Platform.Values = new Dictionary<byte, JTNE_0x02_Body_Platform>();
jTNE_0X02_Platform.CusotmSerializeObjectValues = new Dictionary<byte, JTNE_0x02_CustomBody_Platform>();

JTNE_0x02_0x01_Platform jTNE_0X02_0X01_Platform = new JTNE_0x02_0x01_Platform();
jTNE_0X02_0X01_Platform.CarStatus = 0x04;
jTNE_0X02_0X01_Platform.ChargeStatus = 0x05;
jTNE_0X02_0X01_Platform.DCStatus = 0x06;
jTNE_0X02_0X01_Platform.OperationMode = 0x07;
jTNE_0X02_0X01_Platform.Resistance = 123;
jTNE_0X02_0X01_Platform.SOC = 0x03;
jTNE_0X02_0X01_Platform.Speed = 58;
jTNE_0X02_0X01_Platform.Stall = 0x02;
jTNE_0X02_0X01_Platform.TotalDis = 6666;
jTNE_0X02_0X01_Platform.TotalTemp = 99;
jTNE_0X02_0X01_Platform.TotalVoltage = 100;
jTNE_0X02_Platform.Values.Add(JTNE_0x02_Body_Platform.JTNE_0x02_0x01_Platform, jTNE_0X02_0X01_Platform);

JTNE_0x02_0x02_Platform jTNE_0X02_0X02_Platform = new JTNE_0x02_0x02_Platform();
jTNE_0X02_0X02_Platform.Electricals = new List<Metadata.Electrical>();
Metadata.Electrical electrical1 = new Metadata.Electrical();
electrical1.ElControlTemp = 0x01;
electrical1.ElCurrent = 100;
electrical1.ElNo = 0x01;
electrical1.ElSpeed = 65;
electrical1.ElStatus = 0x02;
electrical1.ElTemp = 0x03;
electrical1.ElTorque = 55;
electrical1.ElVoltage = 236;
Metadata.Electrical electrical2 = new Metadata.Electrical();
electrical2.ElControlTemp = 0x02;
electrical2.ElCurrent = 101;
electrical2.ElNo = 0x02;
electrical2.ElSpeed = 66;
electrical2.ElStatus = 0x03;
electrical2.ElTemp = 0x05;
electrical2.ElTorque = 566;
electrical2.ElVoltage = 2136;
jTNE_0X02_0X02_Platform.Electricals.Add(electrical1);
jTNE_0X02_0X02_Platform.Electricals.Add(electrical2);
jTNE_0X02_Platform.Values.Add(JTNE_0x02_Body_Platform.JTNE_0x02_0x02_Platform, jTNE_0X02_0X02_Platform);

JTNE_0x02_0x03_Platform jTNE_0X02_0X03_Platform = new JTNE_0x02_0x03_Platform();
jTNE_0X02_0X03_Platform.DCStatus = 0x02;
jTNE_0X02_0X03_Platform.FuelBatteryCurrent = 111;
jTNE_0X02_0X03_Platform.FuelBatteryVoltage = 2222;
jTNE_0X02_0X03_Platform.FuelConsumptionRate = 3222;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxConcentrations = 6666;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxConcentrationsNo = 0x56;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxPressure = 3336;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxPressureNo = 0x65;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxTemp = 3355;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxTempNo = 0x22;
jTNE_0X02_0X03_Platform.Temperatures = new byte[]
{
0x01,0x02,0x03
};
jTNE_0X02_Platform.Values.Add(JTNE_0x02_Body_Platform.JTNE_0x02_0x03_Platform, jTNE_0X02_0X03_Platform);

JTNE_0x02_0xA1_Platform jTNE_0X02_0XA1_Platform = new JTNE_0x02_0xA1_Platform();
jTNE_0X02_0XA1_Platform.UserName = "SmallChi";
jTNE_0X02_0XA1_Platform.Age = 18;
jTNE_0X02_Platform.CusotmSerializeObjectValues.Add(0xA1, jTNE_0X02_0XA1_Platform);

JTNE_0x02_0xA2_Platform jTNE_0X02_0XA2_Platform = new JTNE_0x02_0xA2_Platform();
jTNE_0X02_0XA2_Platform.CompanyName = "小池有限公司";
jTNE_0X02_Platform.CusotmSerializeObjectValues.Add(0xA2, jTNE_0X02_0XA2_Platform);


var hex = JTNESerializer_Platform.Serialize(jTNE_0X02_Platform).ToHexString();
Assert.Equal("01040507003A00001A0A00640063030602007B0202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502A1000E536D616C6C436869000000000012A20014E5B08FE6B1A0E69C89E99990E585ACE58FB80000", hex);
}

[Fact]
public void Test2()
{
JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody_Platform(0xA1, typeof(JTNE_0x02_0xA1_Platform));
JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody_Platform(0xA2, typeof(JTNE_0x02_0xA2_Platform));

var data = "01040507003A00001A0A00640063030602007B0202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502A1000E536D616C6C436869000000000012A20014E5B08FE6B1A0E69C89E99990E585ACE58FB80000".ToHexBytes();
JTNE_0x02_Platform jTNE_0X02_Platform = JTNESerializer_Platform.Deserialize<JTNE_0x02_Platform>(data);

JTNE_0x02_0x01_Platform jTNE_0X02_0X01_Platform = jTNE_0X02_Platform.Values[JTNE_0x02_Body_Platform.JTNE_0x02_0x01_Platform] as JTNE_0x02_0x01_Platform;
Assert.Equal(JTNE_0x02_Body_Platform.JTNE_0x02_0x01_Platform, jTNE_0X02_0X01_Platform.TypeCode);
Assert.Equal(0x04, jTNE_0X02_0X01_Platform.CarStatus);
Assert.Equal(0x05, jTNE_0X02_0X01_Platform.ChargeStatus);
Assert.Equal(0x06, jTNE_0X02_0X01_Platform.DCStatus);
Assert.Equal(0x07, jTNE_0X02_0X01_Platform.OperationMode);
Assert.Equal(123, jTNE_0X02_0X01_Platform.Resistance);
Assert.Equal(0x03, jTNE_0X02_0X01_Platform.SOC);
Assert.Equal(58, jTNE_0X02_0X01_Platform.Speed);
Assert.Equal(0x02, jTNE_0X02_0X01_Platform.Stall);
Assert.Equal((uint)6666, jTNE_0X02_0X01_Platform.TotalDis);
Assert.Equal(99, jTNE_0X02_0X01_Platform.TotalTemp);
Assert.Equal(100, jTNE_0X02_0X01_Platform.TotalVoltage);


JTNE_0x02_0x02_Platform jTNE_0X02_0X02_Platform = jTNE_0X02_Platform.Values[JTNE_0x02_Body_Platform.JTNE_0x02_0x02_Platform] as JTNE_0x02_0x02_Platform;
Assert.Equal(JTNE_0x02_Body_Platform.JTNE_0x02_0x02_Platform, jTNE_0X02_0X02_Platform.TypeCode);
Assert.Equal(2, jTNE_0X02_0X02_Platform.ElectricalCount);
Metadata.Electrical electrical1 = jTNE_0X02_0X02_Platform.Electricals[0];
Assert.Equal(0x01, electrical1.ElControlTemp);
Assert.Equal(100, electrical1.ElCurrent);
Assert.Equal(0x01, electrical1.ElNo);
Assert.Equal(65, electrical1.ElSpeed);
Assert.Equal(0x02, electrical1.ElStatus);
Assert.Equal(0x03, electrical1.ElTemp);
Assert.Equal(55, electrical1.ElTorque);
Assert.Equal(236, electrical1.ElVoltage);
Metadata.Electrical electrical2 = jTNE_0X02_0X02_Platform.Electricals[1];
Assert.Equal(0x02, electrical2.ElControlTemp);
Assert.Equal(101, electrical2.ElCurrent);
Assert.Equal(0x02, electrical2.ElNo);
Assert.Equal(66, electrical2.ElSpeed);
Assert.Equal(0x03, electrical2.ElStatus);
Assert.Equal(0x05, electrical2.ElTemp);
Assert.Equal(566, electrical2.ElTorque);
Assert.Equal(2136, electrical2.ElVoltage);

JTNE_0x02_0x03_Platform jTNE_0X02_0X03_Platform = jTNE_0X02_Platform.Values[JTNE_0x02_Body_Platform.JTNE_0x02_0x03_Platform] as JTNE_0x02_0x03_Platform;

Assert.Equal(JTNE_0x02_Body_Platform.JTNE_0x02_0x03_Platform, jTNE_0X02_0X03_Platform.TypeCode);
Assert.Equal(0x02, jTNE_0X02_0X03_Platform.DCStatus);
Assert.Equal(111, jTNE_0X02_0X03_Platform.FuelBatteryCurrent);
Assert.Equal(2222, jTNE_0X02_0X03_Platform.FuelBatteryVoltage);
Assert.Equal(3222, jTNE_0X02_0X03_Platform.FuelConsumptionRate);
Assert.Equal(6666, jTNE_0X02_0X03_Platform.HydrogenSystemMaxConcentrations);
Assert.Equal(0x56, jTNE_0X02_0X03_Platform.HydrogenSystemMaxConcentrationsNo);
Assert.Equal(3336, jTNE_0X02_0X03_Platform.HydrogenSystemMaxPressure);
Assert.Equal(0x65, jTNE_0X02_0X03_Platform.HydrogenSystemMaxPressureNo);
Assert.Equal(3355, jTNE_0X02_0X03_Platform.HydrogenSystemMaxTemp);
Assert.Equal(0x22, jTNE_0X02_0X03_Platform.HydrogenSystemMaxTempNo);
Assert.Equal(new byte[] { 0x01, 0x02, 0x03 }, jTNE_0X02_0X03_Platform.Temperatures);


JTNE_0x02_0xA1_Platform jTNE_0X02_0XA1_Platform = JTNESerializer_Device.Deserialize<JTNE_0x02_0xA1_Platform>(jTNE_0X02_Platform.CusotmValues[0xA1]);
Assert.Equal(0xA1, jTNE_0X02_0XA1_Platform.TypeCode);
Assert.Equal(14, jTNE_0X02_0XA1_Platform.Length);
Assert.Equal("SmallChi", jTNE_0X02_0XA1_Platform.UserName);
Assert.Equal(18, jTNE_0X02_0XA1_Platform.Age);

JTNE_0x02_0xA2_Platform jTNE_0X02_0XA2_Platform = JTNESerializer_Device.Deserialize<JTNE_0x02_0xA2_Platform>(jTNE_0X02_Platform.CusotmValues[0xA2]);
Assert.Equal(0xA2, jTNE_0X02_0XA2_Platform.TypeCode);
Assert.Equal(20, jTNE_0X02_0XA2_Platform.Length);
Assert.Equal("小池有限公司", jTNE_0X02_0XA2_Platform.CompanyName);
}

}
}

+ 0
- 139
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_CustomBodyTest.cs Просмотреть файл

@@ -1,139 +0,0 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;
using JTNE.Protocol.Formatters;
using JTNE.Protocol.Attributes;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_CustomBodyTest
{

[Fact]
public void Test1()
{
JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody(0xA1, typeof(JTNE_0x02_0xA1));
JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody(0xA2, typeof(JTNE_0x02_0xA2));

JTNE_0x02 jTNE_0X02 = new JTNE_0x02();
jTNE_0X02.CusotmSerializeObjectValues = new Dictionary<byte, JTNE_0x02_CustomBody>();

JTNE_0x02_0xA1 jTNE_0X02_0XA1 = new JTNE_0x02_0xA1();
jTNE_0X02_0XA1.UserName = "SmallChi";
jTNE_0X02_0XA1.Age = 18;
jTNE_0X02.CusotmSerializeObjectValues.Add(0xA1, jTNE_0X02_0XA1);

JTNE_0x02_0xA2 jTNE_0X02_0XA2 = new JTNE_0x02_0xA2();
jTNE_0X02_0XA2.CompanyName = "小池有限公司";
jTNE_0X02.CusotmSerializeObjectValues.Add(0xA2, jTNE_0X02_0XA2);

var hex = JTNESerializer.Serialize(jTNE_0X02).ToHexString();
Assert.Equal("A1000E536D616C6C436869000000000012A20014E5B08FE6B1A0E69C89E99990E585ACE58FB80000", hex);
}

[Fact]
public void Test2()
{
JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody(0xA1, typeof(JTNE_0x02_0xA1));
JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody(0xA2, typeof(JTNE_0x02_0xA2));

var data = "A1000E536D616C6C436869000000000012A20014E5B08FE6B1A0E69C89E99990E585ACE58FB80000".ToHexBytes();
JTNE_0x02 jTNE_0X02 = JTNESerializer.Deserialize<JTNE_0x02>(data);
Assert.Empty(jTNE_0X02.Values);

JTNE_0x02_0xA1 jTNE_0X02_0XA1 = JTNESerializer.Deserialize<JTNE_0x02_0xA1>(jTNE_0X02.CusotmValues[0xA1]);
Assert.Equal(0xA1, jTNE_0X02_0XA1.TypeCode);
Assert.Equal(14, jTNE_0X02_0XA1.Length);
Assert.Equal("SmallChi", jTNE_0X02_0XA1.UserName);
Assert.Equal(18, jTNE_0X02_0XA1.Age);

JTNE_0x02_0xA2 jTNE_0X02_0XA2 = JTNESerializer.Deserialize<JTNE_0x02_0xA2>(jTNE_0X02.CusotmValues[0xA2]);
Assert.Equal(0xA2, jTNE_0X02_0XA2.TypeCode);
Assert.Equal(20, jTNE_0X02_0XA2.Length);
Assert.Equal("小池有限公司", jTNE_0X02_0XA2.CompanyName);
}
}

/// <summary>
///自定义0xA1消息
/// </summary>
[JTNEFormatter(typeof(JTNE_0x02_0xA1_Formatter))]
public class JTNE_0x02_0xA1: JTNE_0x02_CustomBody
{
public override ushort Length { get; set; } = 14;

public override byte TypeCode { get; set; } = 0xA1;

public string UserName { get; set; }

public ushort Age { get; set; }
}

/// <summary>
///自定义0xA2消息
/// </summary>
[JTNEFormatter(typeof(JTNE_0x02_0xA2_Formatter))]
public class JTNE_0x02_0xA2 : JTNE_0x02_CustomBody
{
public override ushort Length { get; set; } = 20;

public override byte TypeCode { get; set; } = 0xA2;

public string CompanyName { get; set; }
}

/// <summary>
/// 自定义0xA1消息序列化器
/// </summary>
public class JTNE_0x02_0xA1_Formatter : IJTNEFormatter<JTNE_0x02_0xA1>
{
public JTNE_0x02_0xA1 Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x02_0xA1 jTNE_0X02_0XA1 = new JTNE_0x02_0xA1();
jTNE_0X02_0XA1.TypeCode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0XA1.Length = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X02_0XA1.UserName = JTNEBinaryExtensions.ReadStringLittle(bytes, ref offset,12);
jTNE_0X02_0XA1.Age = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
readSize = offset;
return jTNE_0X02_0XA1;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x02_0xA1 value)
{
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.TypeCode);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.Length);
offset += JTNEBinaryExtensions.WriteStringLittle(bytes, offset, value.UserName,12);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.Age);
return offset;
}
}
/// <summary>
/// 自定义0xA2消息序列化器
/// </summary>
public class JTNE_0x02_0xA2_Formatter : IJTNEFormatter<JTNE_0x02_0xA2>
{
public JTNE_0x02_0xA2 Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x02_0xA2 jTNE_0X02_0XA2 = new JTNE_0x02_0xA2();
jTNE_0X02_0XA2.TypeCode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0XA2.Length = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X02_0XA2.CompanyName = JTNEBinaryExtensions.ReadStringLittle(bytes, ref offset, 20);
readSize = offset;
return jTNE_0X02_0XA2;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x02_0xA2 value)
{
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.TypeCode);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.Length);
offset += JTNEBinaryExtensions.WriteStringLittle(bytes, offset, value.CompanyName, 20);
return offset;
}
}

}

+ 139
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_CustomBody_DeviceTest.cs Просмотреть файл

@@ -0,0 +1,139 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;
using JTNE.Protocol.Formatters;
using JTNE.Protocol.Attributes;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_CustomBody_DeviceTest
{

[Fact]
public void Test1()
{
JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody_Device(0xA1, typeof(JTNE_0x02_0xA1_Device));
JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody_Device(0xA2, typeof(JTNE_0x02_0xA2_Device));

JTNE_0x02_Device jTNE_0X02_Device = new JTNE_0x02_Device();
jTNE_0X02_Device.CusotmSerializeObjectValues = new Dictionary<byte, JTNE_0x02_CustomBody_Device>();

JTNE_0x02_0xA1_Device jTNE_0X02_0XA1_Device = new JTNE_0x02_0xA1_Device();
jTNE_0X02_0XA1_Device.UserName = "SmallChi";
jTNE_0X02_0XA1_Device.Age = 18;
jTNE_0X02_Device.CusotmSerializeObjectValues.Add(0xA1, jTNE_0X02_0XA1_Device);

JTNE_0x02_0xA2_Device jTNE_0X02_0XA2_Device = new JTNE_0x02_0xA2_Device();
jTNE_0X02_0XA2_Device.CompanyName = "小池有限公司";
jTNE_0X02_Device.CusotmSerializeObjectValues.Add(0xA2, jTNE_0X02_0XA2_Device);

var hex = JTNESerializer_Device.Serialize(jTNE_0X02_Device).ToHexString();
Assert.Equal("A1000E536D616C6C436869000000000012A20014E5B08FE6B1A0E69C89E99990E585ACE58FB80000", hex);
}

[Fact]
public void Test2()
{
JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody_Device(0xA1, typeof(JTNE_0x02_0xA1_Device));
JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody_Device(0xA2, typeof(JTNE_0x02_0xA2_Device));

var data = "A1000E536D616C6C436869000000000012A20014E5B08FE6B1A0E69C89E99990E585ACE58FB80000".ToHexBytes();
JTNE_0x02_Device jTNE_0X02_Device = JTNESerializer_Device.Deserialize<JTNE_0x02_Device>(data);
Assert.Empty(jTNE_0X02_Device.Values);

JTNE_0x02_0xA1_Device jTNE_0X02_0XA1_Device = JTNESerializer_Device.Deserialize<JTNE_0x02_0xA1_Device>(jTNE_0X02_Device.CusotmValues[0xA1]);
Assert.Equal(0xA1, jTNE_0X02_0XA1_Device.TypeCode);
Assert.Equal(14, jTNE_0X02_0XA1_Device.Length);
Assert.Equal("SmallChi", jTNE_0X02_0XA1_Device.UserName);
Assert.Equal(18, jTNE_0X02_0XA1_Device.Age);

JTNE_0x02_0xA2_Device jTNE_0X02_0XA2_Device = JTNESerializer_Device.Deserialize<JTNE_0x02_0xA2_Device>(jTNE_0X02_Device.CusotmValues[0xA2]);
Assert.Equal(0xA2, jTNE_0X02_0XA2_Device.TypeCode);
Assert.Equal(20, jTNE_0X02_0XA2_Device.Length);
Assert.Equal("小池有限公司", jTNE_0X02_0XA2_Device.CompanyName);
}
}

/// <summary>
///自定义0xA1消息
/// </summary>
[JTNEFormatter(typeof(JTNE_0x02_0xA1_Device_Formatter))]
public class JTNE_0x02_0xA1_Device : JTNE_0x02_CustomBody_Device
{
public override ushort Length { get; set; } = 14;

public override byte TypeCode { get; set; } = 0xA1;

public string UserName { get; set; }

public ushort Age { get; set; }
}

/// <summary>
///自定义0xA2消息
/// </summary>
[JTNEFormatter(typeof(JTNE_0x02_0xA2_Device_Formatter))]
public class JTNE_0x02_0xA2_Device : JTNE_0x02_CustomBody_Device
{
public override ushort Length { get; set; } = 20;

public override byte TypeCode { get; set; } = 0xA2;

public string CompanyName { get; set; }
}

/// <summary>
/// 自定义0xA1消息序列化器
/// </summary>
public class JTNE_0x02_0xA1_Device_Formatter : IJTNEFormatter<JTNE_0x02_0xA1_Device>
{
public JTNE_0x02_0xA1_Device Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x02_0xA1_Device jTNE_0X02_0XA1_Device = new JTNE_0x02_0xA1_Device();
jTNE_0X02_0XA1_Device.TypeCode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0XA1_Device.Length = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X02_0XA1_Device.UserName = JTNEBinaryExtensions.ReadStringLittle(bytes, ref offset,12);
jTNE_0X02_0XA1_Device.Age = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
readSize = offset;
return jTNE_0X02_0XA1_Device;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x02_0xA1_Device value)
{
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.TypeCode);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.Length);
offset += JTNEBinaryExtensions.WriteStringLittle(bytes, offset, value.UserName,12);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.Age);
return offset;
}
}
/// <summary>
/// 自定义0xA2消息序列化器
/// </summary>
public class JTNE_0x02_0xA2_Device_Formatter : IJTNEFormatter<JTNE_0x02_0xA2_Device>
{
public JTNE_0x02_0xA2_Device Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x02_0xA2_Device jTNE_0X02_0XA2_Device = new JTNE_0x02_0xA2_Device();
jTNE_0X02_0XA2_Device.TypeCode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0XA2_Device.Length = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X02_0XA2_Device.CompanyName = JTNEBinaryExtensions.ReadStringLittle(bytes, ref offset, 20);
readSize = offset;
return jTNE_0X02_0XA2_Device;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x02_0xA2_Device value)
{
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.TypeCode);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.Length);
offset += JTNEBinaryExtensions.WriteStringLittle(bytes, offset, value.CompanyName, 20);
return offset;
}
}

}

+ 139
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_CustomBody_PlatformTest.cs Просмотреть файл

@@ -0,0 +1,139 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;
using JTNE.Protocol.Formatters;
using JTNE.Protocol.Attributes;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_CustomBody_PlatformTest
{

[Fact]
public void Test1()
{
JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody_Platform(0xA1, typeof(JTNE_0x02_0xA1_Platform));
JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody_Platform(0xA2, typeof(JTNE_0x02_0xA2_Platform));

JTNE_0x02_Platform jTNE_0X02_Platform = new JTNE_0x02_Platform();
jTNE_0X02_Platform.CusotmSerializeObjectValues = new Dictionary<byte, JTNE_0x02_CustomBody_Platform>();

JTNE_0x02_0xA1_Platform jTNE_0X02_0XA1_Platform = new JTNE_0x02_0xA1_Platform();
jTNE_0X02_0XA1_Platform.UserName = "SmallChi";
jTNE_0X02_0XA1_Platform.Age = 18;
jTNE_0X02_Platform.CusotmSerializeObjectValues.Add(0xA1, jTNE_0X02_0XA1_Platform);

JTNE_0x02_0xA2_Platform jTNE_0X02_0XA2_Platform = new JTNE_0x02_0xA2_Platform();
jTNE_0X02_0XA2_Platform.CompanyName = "小池有限公司";
jTNE_0X02_Platform.CusotmSerializeObjectValues.Add(0xA2, jTNE_0X02_0XA2_Platform);

var hex = JTNESerializer_Platform.Serialize(jTNE_0X02_Platform).ToHexString();
Assert.Equal("A1000E536D616C6C436869000000000012A20014E5B08FE6B1A0E69C89E99990E585ACE58FB80000", hex);
}

[Fact]
public void Test2()
{
JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody_Platform(0xA1, typeof(JTNE_0x02_0xA1_Platform));
JTNEGlobalConfigs.Instance.Register_JTNE0x02CustomBody_Platform(0xA2, typeof(JTNE_0x02_0xA2_Platform));

var data = "A1000E536D616C6C436869000000000012A20014E5B08FE6B1A0E69C89E99990E585ACE58FB80000".ToHexBytes();
JTNE_0x02_Platform jTNE_0X02_Platform = JTNESerializer_Platform.Deserialize<JTNE_0x02_Platform>(data);
Assert.Empty(jTNE_0X02_Platform.Values);

JTNE_0x02_0xA1_Platform jTNE_0X02_0XA1_Platform = JTNESerializer_Device.Deserialize<JTNE_0x02_0xA1_Platform>(jTNE_0X02_Platform.CusotmValues[0xA1]);
Assert.Equal(0xA1, jTNE_0X02_0XA1_Platform.TypeCode);
Assert.Equal(14, jTNE_0X02_0XA1_Platform.Length);
Assert.Equal("SmallChi", jTNE_0X02_0XA1_Platform.UserName);
Assert.Equal(18, jTNE_0X02_0XA1_Platform.Age);

JTNE_0x02_0xA2_Platform jTNE_0X02_0XA2_Platform = JTNESerializer_Device.Deserialize<JTNE_0x02_0xA2_Platform>(jTNE_0X02_Platform.CusotmValues[0xA2]);
Assert.Equal(0xA2, jTNE_0X02_0XA2_Platform.TypeCode);
Assert.Equal(20, jTNE_0X02_0XA2_Platform.Length);
Assert.Equal("小池有限公司", jTNE_0X02_0XA2_Platform.CompanyName);
}
}

/// <summary>
///自定义0xA1消息
/// </summary>
[JTNEFormatter(typeof(JTNE_0x02_0xA1_Platform_Formatter))]
public class JTNE_0x02_0xA1_Platform : JTNE_0x02_CustomBody_Platform
{
public override ushort Length { get; set; } = 14;

public override byte TypeCode { get; set; } = 0xA1;

public string UserName { get; set; }

public ushort Age { get; set; }
}

/// <summary>
///自定义0xA2消息
/// </summary>
[JTNEFormatter(typeof(JTNE_0x02_0xA2_Platform_Formatter))]
public class JTNE_0x02_0xA2_Platform : JTNE_0x02_CustomBody_Platform
{
public override ushort Length { get; set; } = 20;

public override byte TypeCode { get; set; } = 0xA2;

public string CompanyName { get; set; }
}

/// <summary>
/// 自定义0xA1消息序列化器
/// </summary>
public class JTNE_0x02_0xA1_Platform_Formatter : IJTNEFormatter<JTNE_0x02_0xA1_Platform>
{
public JTNE_0x02_0xA1_Platform Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x02_0xA1_Platform jTNE_0X02_0XA1_Platform = new JTNE_0x02_0xA1_Platform();
jTNE_0X02_0XA1_Platform.TypeCode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0XA1_Platform.Length = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X02_0XA1_Platform.UserName = JTNEBinaryExtensions.ReadStringLittle(bytes, ref offset,12);
jTNE_0X02_0XA1_Platform.Age = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
readSize = offset;
return jTNE_0X02_0XA1_Platform;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x02_0xA1_Platform value)
{
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.TypeCode);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.Length);
offset += JTNEBinaryExtensions.WriteStringLittle(bytes, offset, value.UserName,12);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.Age);
return offset;
}
}
/// <summary>
/// 自定义0xA2消息序列化器
/// </summary>
public class JTNE_0x02_0xA2_Platform_Formatter : IJTNEFormatter<JTNE_0x02_0xA2_Platform>
{
public JTNE_0x02_0xA2_Platform Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x02_0xA2_Platform jTNE_0X02_0XA2_Platform = new JTNE_0x02_0xA2_Platform();
jTNE_0X02_0XA2_Platform.TypeCode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0XA2_Platform.Length = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X02_0XA2_Platform.CompanyName = JTNEBinaryExtensions.ReadStringLittle(bytes, ref offset, 20);
readSize = offset;
return jTNE_0X02_0XA2_Platform;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x02_0xA2_Platform value)
{
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.TypeCode);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.Length);
offset += JTNEBinaryExtensions.WriteStringLittle(bytes, offset, value.CompanyName, 20);
return offset;
}
}

}

+ 143
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_DeviceTest.cs Просмотреть файл

@@ -0,0 +1,143 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_DeviceTest
{
[Fact]
public void Test1()
{
JTNE_0x02_Device jTNE_0X02_Device = new JTNE_0x02_Device();
jTNE_0X02_Device.Values = new Dictionary<byte, JTNE_0x02_Body_Device>();

JTNE_0x02_0x01_Device jTNE_0X02_0X01_Device = new JTNE_0x02_0x01_Device();
jTNE_0X02_0X01_Device.Accelerator = 0x02;
jTNE_0X02_0X01_Device.Brakes = 0x03;
jTNE_0X02_0X01_Device.CarStatus = 0x04;
jTNE_0X02_0X01_Device.ChargeStatus = 0x05;
jTNE_0X02_0X01_Device.DCStatus = 0x06;
jTNE_0X02_0X01_Device.OperationMode = 0x07;
jTNE_0X02_0X01_Device.Resistance = 123;
jTNE_0X02_0X01_Device.SOC = 0x03;
jTNE_0X02_0X01_Device.Speed = 58;
jTNE_0X02_0X01_Device.Stall = 0x02;
jTNE_0X02_0X01_Device.TotalDis = 6666;
jTNE_0X02_0X01_Device.TotalTemp = 99;
jTNE_0X02_0X01_Device.TotalVoltage = 100;
jTNE_0X02_Device.Values.Add(JTNE_0x02_Body_Device.JTNE_0x02_0x01_Device, jTNE_0X02_0X01_Device);

JTNE_0x02_0x02_Device jTNE_0X02_0X02_Device = new JTNE_0x02_0x02_Device();
jTNE_0X02_0X02_Device.Electricals = new List<Metadata.Electrical>();
Metadata.Electrical electrical1 = new Metadata.Electrical();
electrical1.ElControlTemp = 0x01;
electrical1.ElCurrent = 100;
electrical1.ElNo = 0x01;
electrical1.ElSpeed = 65;
electrical1.ElStatus = 0x02;
electrical1.ElTemp = 0x03;
electrical1.ElTorque = 55;
electrical1.ElVoltage = 236;
Metadata.Electrical electrical2 = new Metadata.Electrical();
electrical2.ElControlTemp = 0x02;
electrical2.ElCurrent = 101;
electrical2.ElNo = 0x02;
electrical2.ElSpeed = 66;
electrical2.ElStatus = 0x03;
electrical2.ElTemp = 0x05;
electrical2.ElTorque = 566;
electrical2.ElVoltage = 2136;
jTNE_0X02_0X02_Device.Electricals.Add(electrical1);
jTNE_0X02_0X02_Device.Electricals.Add(electrical2);
jTNE_0X02_Device.Values.Add(JTNE_0x02_Body_Device.JTNE_0x02_0x02_Device, jTNE_0X02_0X02_Device);

JTNE_0x02_0x03_Device jTNE_0X02_0X03_Device = new JTNE_0x02_0x03_Device();
jTNE_0X02_0X03_Device.DCStatus = 0x02;
jTNE_0X02_0X03_Device.FuelBatteryCurrent = 111;
jTNE_0X02_0X03_Device.FuelBatteryVoltage = 2222;
jTNE_0X02_0X03_Device.FuelConsumptionRate = 3222;
jTNE_0X02_0X03_Device.HydrogenSystemMaxConcentrations = 6666;
jTNE_0X02_0X03_Device.HydrogenSystemMaxConcentrationsNo = 0x56;
jTNE_0X02_0X03_Device.HydrogenSystemMaxPressure = 3336;
jTNE_0X02_0X03_Device.HydrogenSystemMaxPressureNo = 0x65;
jTNE_0X02_0X03_Device.HydrogenSystemMaxTemp = 3355;
jTNE_0X02_0X03_Device.HydrogenSystemMaxTempNo = 0x22;
jTNE_0X02_0X03_Device.Temperatures = new byte[]
{
0x01,0x02,0x03
};
jTNE_0X02_Device.Values.Add(JTNE_0x02_Body_Device.JTNE_0x02_0x03_Device, jTNE_0X02_0X03_Device);

var hex = JTNESerializer_Device.Serialize(jTNE_0X02_Device).ToHexString();
//01 04 05 07 00 3A 00 00 1A 0A 00 64 00 63 03 06 02 00 7B 02 03 -21
//02 02 01 02 01 00 41 00 37 03 00 EC 00 64 02 03 02 00 42 02 36 05 08 58 00 65 -26
//03 08 AE 00 6F 0C 96 00 03 01 02 03 0D 1B 22 1A 0A 56 0D 08 65 02
Assert.Equal("01040507003A00001A0A00640063030602007B02030202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502", hex);
}
[Fact]
public void Test2()
{
var data = "01040507003A00001A0A00640063030602007B02030202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502".ToHexBytes();
JTNE_0x02_Device jTNE_0X02_Device = JTNESerializer_Device.Deserialize<JTNE_0x02_Device>(data);

JTNE_0x02_0x01_Device jTNE_0X02_0X01_Device = jTNE_0X02_Device.Values[JTNE_0x02_Body_Device.JTNE_0x02_0x01_Device] as JTNE_0x02_0x01_Device;
Assert.Equal(JTNE_0x02_Body_Device.JTNE_0x02_0x01_Device, jTNE_0X02_0X01_Device.TypeCode);
Assert.Equal(0x02, jTNE_0X02_0X01_Device.Accelerator);
Assert.Equal(0x03, jTNE_0X02_0X01_Device.Brakes);
Assert.Equal(0x04, jTNE_0X02_0X01_Device.CarStatus);
Assert.Equal(0x05, jTNE_0X02_0X01_Device.ChargeStatus);
Assert.Equal(0x06, jTNE_0X02_0X01_Device.DCStatus);
Assert.Equal(0x07, jTNE_0X02_0X01_Device.OperationMode);
Assert.Equal(123, jTNE_0X02_0X01_Device.Resistance);
Assert.Equal(0x03, jTNE_0X02_0X01_Device.SOC);
Assert.Equal(58, jTNE_0X02_0X01_Device.Speed);
Assert.Equal(0x02, jTNE_0X02_0X01_Device.Stall);
Assert.Equal((uint)6666, jTNE_0X02_0X01_Device.TotalDis);
Assert.Equal(99, jTNE_0X02_0X01_Device.TotalTemp);
Assert.Equal(100, jTNE_0X02_0X01_Device.TotalVoltage);


JTNE_0x02_0x02_Device jTNE_0X02_0X02_Device = jTNE_0X02_Device.Values[JTNE_0x02_Body_Device.JTNE_0x02_0x02_Device] as JTNE_0x02_0x02_Device;
Assert.Equal(JTNE_0x02_Body_Device.JTNE_0x02_0x02_Device, jTNE_0X02_0X02_Device.TypeCode);
Assert.Equal(2, jTNE_0X02_0X02_Device.ElectricalCount);
Metadata.Electrical electrical1 = jTNE_0X02_0X02_Device.Electricals[0];
Assert.Equal(0x01, electrical1.ElControlTemp);
Assert.Equal(100, electrical1.ElCurrent);
Assert.Equal(0x01, electrical1.ElNo);
Assert.Equal(65, electrical1.ElSpeed);
Assert.Equal(0x02, electrical1.ElStatus);
Assert.Equal(0x03, electrical1.ElTemp);
Assert.Equal(55, electrical1.ElTorque);
Assert.Equal(236, electrical1.ElVoltage);
Metadata.Electrical electrical2 = jTNE_0X02_0X02_Device.Electricals[1];
Assert.Equal(0x02, electrical2.ElControlTemp);
Assert.Equal(101, electrical2.ElCurrent);
Assert.Equal(0x02, electrical2.ElNo);
Assert.Equal(66, electrical2.ElSpeed);
Assert.Equal(0x03, electrical2.ElStatus);
Assert.Equal(0x05, electrical2.ElTemp);
Assert.Equal(566, electrical2.ElTorque);
Assert.Equal(2136, electrical2.ElVoltage);

JTNE_0x02_0x03_Device jTNE_0X02_0X03_Device = jTNE_0X02_Device.Values[JTNE_0x02_Body_Device.JTNE_0x02_0x03_Device] as JTNE_0x02_0x03_Device;

Assert.Equal(JTNE_0x02_Body_Device.JTNE_0x02_0x03_Device, jTNE_0X02_0X03_Device.TypeCode);
Assert.Equal(0x02, jTNE_0X02_0X03_Device.DCStatus);
Assert.Equal(111, jTNE_0X02_0X03_Device.FuelBatteryCurrent);
Assert.Equal(2222, jTNE_0X02_0X03_Device.FuelBatteryVoltage);
Assert.Equal(3222, jTNE_0X02_0X03_Device.FuelConsumptionRate);
Assert.Equal(6666, jTNE_0X02_0X03_Device.HydrogenSystemMaxConcentrations);
Assert.Equal(0x56, jTNE_0X02_0X03_Device.HydrogenSystemMaxConcentrationsNo);
Assert.Equal(3336, jTNE_0X02_0X03_Device.HydrogenSystemMaxPressure);
Assert.Equal(0x65, jTNE_0X02_0X03_Device.HydrogenSystemMaxPressureNo);
Assert.Equal(3355, jTNE_0X02_0X03_Device.HydrogenSystemMaxTemp);
Assert.Equal(0x22, jTNE_0X02_0X03_Device.HydrogenSystemMaxTempNo);
Assert.Equal(new byte[] { 0x01, 0x02, 0x03 }, jTNE_0X02_0X03_Device.Temperatures);
}
}
}

+ 139
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_PlatformTest.cs Просмотреть файл

@@ -0,0 +1,139 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x02_PlatformTest
{
[Fact]
public void Test1()
{
JTNE_0x02_Platform jTNE_0X02_Platform = new JTNE_0x02_Platform();
jTNE_0X02_Platform.Values = new Dictionary<byte, JTNE_0x02_Body_Platform>();

JTNE_0x02_0x01_Platform jTNE_0X02_0X01_Platform = new JTNE_0x02_0x01_Platform();
jTNE_0X02_0X01_Platform.CarStatus = 0x04;
jTNE_0X02_0X01_Platform.ChargeStatus = 0x05;
jTNE_0X02_0X01_Platform.DCStatus = 0x06;
jTNE_0X02_0X01_Platform.OperationMode = 0x07;
jTNE_0X02_0X01_Platform.Resistance = 123;
jTNE_0X02_0X01_Platform.SOC = 0x03;
jTNE_0X02_0X01_Platform.Speed = 58;
jTNE_0X02_0X01_Platform.Stall = 0x02;
jTNE_0X02_0X01_Platform.TotalDis = 6666;
jTNE_0X02_0X01_Platform.TotalTemp = 99;
jTNE_0X02_0X01_Platform.TotalVoltage = 100;
jTNE_0X02_Platform.Values.Add(JTNE_0x02_Body_Platform.JTNE_0x02_0x01_Platform, jTNE_0X02_0X01_Platform);

JTNE_0x02_0x02_Platform jTNE_0X02_0X02_Platform = new JTNE_0x02_0x02_Platform();
jTNE_0X02_0X02_Platform.Electricals = new List<Metadata.Electrical>();
Metadata.Electrical electrical1 = new Metadata.Electrical();
electrical1.ElControlTemp = 0x01;
electrical1.ElCurrent = 100;
electrical1.ElNo = 0x01;
electrical1.ElSpeed = 65;
electrical1.ElStatus = 0x02;
electrical1.ElTemp = 0x03;
electrical1.ElTorque = 55;
electrical1.ElVoltage = 236;
Metadata.Electrical electrical2 = new Metadata.Electrical();
electrical2.ElControlTemp = 0x02;
electrical2.ElCurrent = 101;
electrical2.ElNo = 0x02;
electrical2.ElSpeed = 66;
electrical2.ElStatus = 0x03;
electrical2.ElTemp = 0x05;
electrical2.ElTorque = 566;
electrical2.ElVoltage = 2136;
jTNE_0X02_0X02_Platform.Electricals.Add(electrical1);
jTNE_0X02_0X02_Platform.Electricals.Add(electrical2);
jTNE_0X02_Platform.Values.Add(JTNE_0x02_Body_Platform.JTNE_0x02_0x02_Platform, jTNE_0X02_0X02_Platform);

JTNE_0x02_0x03_Platform jTNE_0X02_0X03_Platform = new JTNE_0x02_0x03_Platform();
jTNE_0X02_0X03_Platform.DCStatus = 0x02;
jTNE_0X02_0X03_Platform.FuelBatteryCurrent = 111;
jTNE_0X02_0X03_Platform.FuelBatteryVoltage = 2222;
jTNE_0X02_0X03_Platform.FuelConsumptionRate = 3222;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxConcentrations = 6666;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxConcentrationsNo = 0x56;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxPressure = 3336;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxPressureNo = 0x65;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxTemp = 3355;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxTempNo = 0x22;
jTNE_0X02_0X03_Platform.Temperatures = new byte[]
{
0x01,0x02,0x03
};
jTNE_0X02_Platform.Values.Add(JTNE_0x02_Body_Platform.JTNE_0x02_0x03_Platform, jTNE_0X02_0X03_Platform);

var hex = JTNESerializer_Platform.Serialize(jTNE_0X02_Platform).ToHexString();
//01 04 05 07 00 3A 00 00 1A 0A 00 64 00 63 03 06 02 00 7B 02 03 -21
//02 02 01 02 01 00 41 00 37 03 00 EC 00 64 02 03 02 00 42 02 36 05 08 58 00 65 -26
//03 08 AE 00 6F 0C 96 00 03 01 02 03 0D 1B 22 1A 0A 56 0D 08 65 02
Assert.Equal("01040507003A00001A0A00640063030602007B0202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502", hex);
}
[Fact]
public void Test2()
{
var data = "01040507003A00001A0A00640063030602007B0202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502".ToHexBytes();
JTNE_0x02_Platform jTNE_0X02_Platform = JTNESerializer_Platform.Deserialize<JTNE_0x02_Platform>(data);

JTNE_0x02_0x01_Platform jTNE_0X02_0X01_Platform = jTNE_0X02_Platform.Values[JTNE_0x02_Body_Platform.JTNE_0x02_0x01_Platform] as JTNE_0x02_0x01_Platform;
Assert.Equal(JTNE_0x02_Body_Platform.JTNE_0x02_0x01_Platform, jTNE_0X02_0X01_Platform.TypeCode);
Assert.Equal(0x04, jTNE_0X02_0X01_Platform.CarStatus);
Assert.Equal(0x05, jTNE_0X02_0X01_Platform.ChargeStatus);
Assert.Equal(0x06, jTNE_0X02_0X01_Platform.DCStatus);
Assert.Equal(0x07, jTNE_0X02_0X01_Platform.OperationMode);
Assert.Equal(123, jTNE_0X02_0X01_Platform.Resistance);
Assert.Equal(0x03, jTNE_0X02_0X01_Platform.SOC);
Assert.Equal(58, jTNE_0X02_0X01_Platform.Speed);
Assert.Equal(0x02, jTNE_0X02_0X01_Platform.Stall);
Assert.Equal((uint)6666, jTNE_0X02_0X01_Platform.TotalDis);
Assert.Equal(99, jTNE_0X02_0X01_Platform.TotalTemp);
Assert.Equal(100, jTNE_0X02_0X01_Platform.TotalVoltage);


JTNE_0x02_0x02_Platform jTNE_0X02_0X02_Platform = jTNE_0X02_Platform.Values[JTNE_0x02_Body_Platform.JTNE_0x02_0x02_Platform] as JTNE_0x02_0x02_Platform;
Assert.Equal(JTNE_0x02_Body_Platform.JTNE_0x02_0x02_Platform, jTNE_0X02_0X02_Platform.TypeCode);
Assert.Equal(2, jTNE_0X02_0X02_Platform.ElectricalCount);
Metadata.Electrical electrical1 = jTNE_0X02_0X02_Platform.Electricals[0];
Assert.Equal(0x01, electrical1.ElControlTemp);
Assert.Equal(100, electrical1.ElCurrent);
Assert.Equal(0x01, electrical1.ElNo);
Assert.Equal(65, electrical1.ElSpeed);
Assert.Equal(0x02, electrical1.ElStatus);
Assert.Equal(0x03, electrical1.ElTemp);
Assert.Equal(55, electrical1.ElTorque);
Assert.Equal(236, electrical1.ElVoltage);
Metadata.Electrical electrical2 = jTNE_0X02_0X02_Platform.Electricals[1];
Assert.Equal(0x02, electrical2.ElControlTemp);
Assert.Equal(101, electrical2.ElCurrent);
Assert.Equal(0x02, electrical2.ElNo);
Assert.Equal(66, electrical2.ElSpeed);
Assert.Equal(0x03, electrical2.ElStatus);
Assert.Equal(0x05, electrical2.ElTemp);
Assert.Equal(566, electrical2.ElTorque);
Assert.Equal(2136, electrical2.ElVoltage);

JTNE_0x02_0x03_Platform jTNE_0X02_0X03_Platform = jTNE_0X02_Platform.Values[JTNE_0x02_Body_Platform.JTNE_0x02_0x03_Platform] as JTNE_0x02_0x03_Platform;

Assert.Equal(JTNE_0x02_Body_Platform.JTNE_0x02_0x03_Platform, jTNE_0X02_0X03_Platform.TypeCode);
Assert.Equal(0x02, jTNE_0X02_0X03_Platform.DCStatus);
Assert.Equal(111, jTNE_0X02_0X03_Platform.FuelBatteryCurrent);
Assert.Equal(2222, jTNE_0X02_0X03_Platform.FuelBatteryVoltage);
Assert.Equal(3222, jTNE_0X02_0X03_Platform.FuelConsumptionRate);
Assert.Equal(6666, jTNE_0X02_0X03_Platform.HydrogenSystemMaxConcentrations);
Assert.Equal(0x56, jTNE_0X02_0X03_Platform.HydrogenSystemMaxConcentrationsNo);
Assert.Equal(3336, jTNE_0X02_0X03_Platform.HydrogenSystemMaxPressure);
Assert.Equal(0x65, jTNE_0X02_0X03_Platform.HydrogenSystemMaxPressureNo);
Assert.Equal(3355, jTNE_0X02_0X03_Platform.HydrogenSystemMaxTemp);
Assert.Equal(0x22, jTNE_0X02_0X03_Platform.HydrogenSystemMaxTempNo);
Assert.Equal(new byte[] { 0x01, 0x02, 0x03 }, jTNE_0X02_0X03_Platform.Temperatures);
}
}
}

+ 0
- 144
src/JTNE.Protocol.Test/MessageBody/JTNE_0x03Test.cs Просмотреть файл

@@ -1,144 +0,0 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x03Test
{
[Fact]
public void Test1()
{
JTNE_0x03 jTNE_0X03 = new JTNE_0x03();
JTNE_0x02 jTNE_0X02 = new JTNE_0x02();
jTNE_0X02.Values = new Dictionary<byte, JTNE_0x02_Body>();

JTNE_0x02_0x01 jTNE_0X02_0X01 = new JTNE_0x02_0x01();
jTNE_0X02_0X01.Accelerator = 0x02;
jTNE_0X02_0X01.Brakes = 0x03;
jTNE_0X02_0X01.CarStatus = 0x04;
jTNE_0X02_0X01.ChargeStatus = 0x05;
jTNE_0X02_0X01.DCStatus = 0x06;
jTNE_0X02_0X01.OperationMode = 0x07;
jTNE_0X02_0X01.Resistance = 123;
jTNE_0X02_0X01.SOC = 0x03;
jTNE_0X02_0X01.Speed = 58;
jTNE_0X02_0X01.Stall = 0x02;
jTNE_0X02_0X01.TotalDis = 6666;
jTNE_0X02_0X01.TotalTemp = 99;
jTNE_0X02_0X01.TotalVoltage = 100;
jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x01, jTNE_0X02_0X01);

JTNE_0x02_0x02 jTNE_0X02_0X02 = new JTNE_0x02_0x02();
jTNE_0X02_0X02.Electricals = new List<Metadata.Electrical>();
Metadata.Electrical electrical1 = new Metadata.Electrical();
electrical1.ElControlTemp = 0x01;
electrical1.ElCurrent = 100;
electrical1.ElNo = 0x01;
electrical1.ElSpeed = 65;
electrical1.ElStatus = 0x02;
electrical1.ElTemp = 0x03;
electrical1.ElTorque = 55;
electrical1.ElVoltage = 236;
Metadata.Electrical electrical2 = new Metadata.Electrical();
electrical2.ElControlTemp = 0x02;
electrical2.ElCurrent = 101;
electrical2.ElNo = 0x02;
electrical2.ElSpeed = 66;
electrical2.ElStatus = 0x03;
electrical2.ElTemp = 0x05;
electrical2.ElTorque = 566;
electrical2.ElVoltage = 2136;
jTNE_0X02_0X02.Electricals.Add(electrical1);
jTNE_0X02_0X02.Electricals.Add(electrical2);
jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x02, jTNE_0X02_0X02);

JTNE_0x02_0x03 jTNE_0X02_0X03 = new JTNE_0x02_0x03();
jTNE_0X02_0X03.DCStatus = 0x02;
jTNE_0X02_0X03.FuelBatteryCurrent = 111;
jTNE_0X02_0X03.FuelBatteryVoltage = 2222;
jTNE_0X02_0X03.FuelConsumptionRate = 3222;
jTNE_0X02_0X03.HydrogenSystemMaxConcentrations = 6666;
jTNE_0X02_0X03.HydrogenSystemMaxConcentrationsNo = 0x56;
jTNE_0X02_0X03.HydrogenSystemMaxPressure = 3336;
jTNE_0X02_0X03.HydrogenSystemMaxPressureNo = 0x65;
jTNE_0X02_0X03.HydrogenSystemMaxTemp = 3355;
jTNE_0X02_0X03.HydrogenSystemMaxTempNo = 0x22;
jTNE_0X02_0X03.Temperatures = new byte[]
{
0x01,0x02,0x03
};
jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x03, jTNE_0X02_0X03);
jTNE_0X03.Supplement = jTNE_0X02;
var hex = JTNESerializer.Serialize(jTNE_0X03).ToHexString();
//01 04 05 07 00 3A 00 00 1A 0A 00 64 00 63 03 06 02 00 7B 02 03 -21
//02 02 01 02 01 00 41 00 37 03 00 EC 00 64 02 03 02 00 42 02 36 05 08 58 00 65 -26
//03 08 AE 00 6F 0C 96 00 03 01 02 03 0D 1B 22 1A 0A 56 0D 08 65 02
Assert.Equal("01040507003A00001A0A00640063030602007B02030202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502", hex);
}
[Fact]
public void Test2()
{
var data = "01040507003A00001A0A00640063030602007B02030202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502".ToHexBytes();
JTNE_0x03 jTNE_0X03 = JTNESerializer.Deserialize<JTNE_0x03>(data);
JTNE_0x02 jTNE_0X02 = jTNE_0X03.Supplement;
JTNE_0x02_0x01 jTNE_0X02_0X01 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x01] as JTNE_0x02_0x01;
Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x01, jTNE_0X02_0X01.TypeCode);
Assert.Equal(0x02, jTNE_0X02_0X01.Accelerator);
Assert.Equal(0x03, jTNE_0X02_0X01.Brakes);
Assert.Equal(0x04, jTNE_0X02_0X01.CarStatus);
Assert.Equal(0x05, jTNE_0X02_0X01.ChargeStatus);
Assert.Equal(0x06, jTNE_0X02_0X01.DCStatus);
Assert.Equal(0x07, jTNE_0X02_0X01.OperationMode);
Assert.Equal(123, jTNE_0X02_0X01.Resistance);
Assert.Equal(0x03, jTNE_0X02_0X01.SOC);
Assert.Equal(58, jTNE_0X02_0X01.Speed);
Assert.Equal(0x02, jTNE_0X02_0X01.Stall);
Assert.Equal((uint)6666, jTNE_0X02_0X01.TotalDis);
Assert.Equal(99, jTNE_0X02_0X01.TotalTemp);
Assert.Equal(100, jTNE_0X02_0X01.TotalVoltage);


JTNE_0x02_0x02 jTNE_0X02_0X02 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x02] as JTNE_0x02_0x02;
Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x02, jTNE_0X02_0X02.TypeCode);
Assert.Equal(2, jTNE_0X02_0X02.ElectricalCount);
Metadata.Electrical electrical1 = jTNE_0X02_0X02.Electricals[0];
Assert.Equal(0x01, electrical1.ElControlTemp);
Assert.Equal(100, electrical1.ElCurrent);
Assert.Equal(0x01, electrical1.ElNo);
Assert.Equal(65, electrical1.ElSpeed);
Assert.Equal(0x02, electrical1.ElStatus);
Assert.Equal(0x03, electrical1.ElTemp);
Assert.Equal(55, electrical1.ElTorque);
Assert.Equal(236, electrical1.ElVoltage);
Metadata.Electrical electrical2 = jTNE_0X02_0X02.Electricals[1];
Assert.Equal(0x02, electrical2.ElControlTemp);
Assert.Equal(101, electrical2.ElCurrent);
Assert.Equal(0x02, electrical2.ElNo);
Assert.Equal(66, electrical2.ElSpeed);
Assert.Equal(0x03, electrical2.ElStatus);
Assert.Equal(0x05, electrical2.ElTemp);
Assert.Equal(566, electrical2.ElTorque);
Assert.Equal(2136, electrical2.ElVoltage);

JTNE_0x02_0x03 jTNE_0X02_0X03 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x03] as JTNE_0x02_0x03;

Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x03, jTNE_0X02_0X03.TypeCode);
Assert.Equal(0x02, jTNE_0X02_0X03.DCStatus);
Assert.Equal(111, jTNE_0X02_0X03.FuelBatteryCurrent);
Assert.Equal(2222, jTNE_0X02_0X03.FuelBatteryVoltage);
Assert.Equal(3222, jTNE_0X02_0X03.FuelConsumptionRate);
Assert.Equal(6666, jTNE_0X02_0X03.HydrogenSystemMaxConcentrations);
Assert.Equal(0x56, jTNE_0X02_0X03.HydrogenSystemMaxConcentrationsNo);
Assert.Equal(3336, jTNE_0X02_0X03.HydrogenSystemMaxPressure);
Assert.Equal(0x65, jTNE_0X02_0X03.HydrogenSystemMaxPressureNo);
Assert.Equal(3355, jTNE_0X02_0X03.HydrogenSystemMaxTemp);
Assert.Equal(0x22, jTNE_0X02_0X03.HydrogenSystemMaxTempNo);
Assert.Equal(new byte[] { 0x01, 0x02, 0x03 }, jTNE_0X02_0X03.Temperatures);
}
}
}

+ 144
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x03_DeviceTest.cs Просмотреть файл

@@ -0,0 +1,144 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x03_DeviceTest
{
[Fact]
public void Test1()
{
JTNE_0x03_Device jTNE_0X03_Device = new JTNE_0x03_Device();
JTNE_0x02_Device jTNE_0X02_Device = new JTNE_0x02_Device();
jTNE_0X02_Device.Values = new Dictionary<byte, JTNE_0x02_Body_Device>();

JTNE_0x02_0x01_Device jTNE_0X02_0X01_Device = new JTNE_0x02_0x01_Device();
jTNE_0X02_0X01_Device.Accelerator = 0x02;
jTNE_0X02_0X01_Device.Brakes = 0x03;
jTNE_0X02_0X01_Device.CarStatus = 0x04;
jTNE_0X02_0X01_Device.ChargeStatus = 0x05;
jTNE_0X02_0X01_Device.DCStatus = 0x06;
jTNE_0X02_0X01_Device.OperationMode = 0x07;
jTNE_0X02_0X01_Device.Resistance = 123;
jTNE_0X02_0X01_Device.SOC = 0x03;
jTNE_0X02_0X01_Device.Speed = 58;
jTNE_0X02_0X01_Device.Stall = 0x02;
jTNE_0X02_0X01_Device.TotalDis = 6666;
jTNE_0X02_0X01_Device.TotalTemp = 99;
jTNE_0X02_0X01_Device.TotalVoltage = 100;
jTNE_0X02_Device.Values.Add(JTNE_0x02_Body_Device.JTNE_0x02_0x01_Device, jTNE_0X02_0X01_Device);

JTNE_0x02_0x02_Device jTNE_0X02_0X02_Device = new JTNE_0x02_0x02_Device();
jTNE_0X02_0X02_Device.Electricals = new List<Metadata.Electrical>();
Metadata.Electrical electrical1 = new Metadata.Electrical();
electrical1.ElControlTemp = 0x01;
electrical1.ElCurrent = 100;
electrical1.ElNo = 0x01;
electrical1.ElSpeed = 65;
electrical1.ElStatus = 0x02;
electrical1.ElTemp = 0x03;
electrical1.ElTorque = 55;
electrical1.ElVoltage = 236;
Metadata.Electrical electrical2 = new Metadata.Electrical();
electrical2.ElControlTemp = 0x02;
electrical2.ElCurrent = 101;
electrical2.ElNo = 0x02;
electrical2.ElSpeed = 66;
electrical2.ElStatus = 0x03;
electrical2.ElTemp = 0x05;
electrical2.ElTorque = 566;
electrical2.ElVoltage = 2136;
jTNE_0X02_0X02_Device.Electricals.Add(electrical1);
jTNE_0X02_0X02_Device.Electricals.Add(electrical2);
jTNE_0X02_Device.Values.Add(JTNE_0x02_Body_Device.JTNE_0x02_0x02_Device, jTNE_0X02_0X02_Device);

JTNE_0x02_0x03_Device jTNE_0X02_0X03_Device = new JTNE_0x02_0x03_Device();
jTNE_0X02_0X03_Device.DCStatus = 0x02;
jTNE_0X02_0X03_Device.FuelBatteryCurrent = 111;
jTNE_0X02_0X03_Device.FuelBatteryVoltage = 2222;
jTNE_0X02_0X03_Device.FuelConsumptionRate = 3222;
jTNE_0X02_0X03_Device.HydrogenSystemMaxConcentrations = 6666;
jTNE_0X02_0X03_Device.HydrogenSystemMaxConcentrationsNo = 0x56;
jTNE_0X02_0X03_Device.HydrogenSystemMaxPressure = 3336;
jTNE_0X02_0X03_Device.HydrogenSystemMaxPressureNo = 0x65;
jTNE_0X02_0X03_Device.HydrogenSystemMaxTemp = 3355;
jTNE_0X02_0X03_Device.HydrogenSystemMaxTempNo = 0x22;
jTNE_0X02_0X03_Device.Temperatures = new byte[]
{
0x01,0x02,0x03
};
jTNE_0X02_Device.Values.Add(JTNE_0x02_Body_Device.JTNE_0x02_0x03_Device, jTNE_0X02_0X03_Device);
jTNE_0X03_Device.Supplement = jTNE_0X02_Device;
var hex = JTNESerializer_Device.Serialize(jTNE_0X03_Device).ToHexString();
//01 04 05 07 00 3A 00 00 1A 0A 00 64 00 63 03 06 02 00 7B 02 03 -21
//02 02 01 02 01 00 41 00 37 03 00 EC 00 64 02 03 02 00 42 02 36 05 08 58 00 65 -26
//03 08 AE 00 6F 0C 96 00 03 01 02 03 0D 1B 22 1A 0A 56 0D 08 65 02
Assert.Equal("01040507003A00001A0A00640063030602007B02030202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502", hex);
}
[Fact]
public void Test2()
{
var data = "01040507003A00001A0A00640063030602007B02030202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502".ToHexBytes();
JTNE_0x03_Device jTNE_0X03_Device = JTNESerializer_Device.Deserialize<JTNE_0x03_Device>(data);
JTNE_0x02_Device jTNE_0X02_Device = jTNE_0X03_Device.Supplement;
JTNE_0x02_0x01_Device jTNE_0X02_0X01_Device = jTNE_0X02_Device.Values[JTNE_0x02_Body_Device.JTNE_0x02_0x01_Device] as JTNE_0x02_0x01_Device;
Assert.Equal(JTNE_0x02_Body_Device.JTNE_0x02_0x01_Device, jTNE_0X02_0X01_Device.TypeCode);
Assert.Equal(0x02, jTNE_0X02_0X01_Device.Accelerator);
Assert.Equal(0x03, jTNE_0X02_0X01_Device.Brakes);
Assert.Equal(0x04, jTNE_0X02_0X01_Device.CarStatus);
Assert.Equal(0x05, jTNE_0X02_0X01_Device.ChargeStatus);
Assert.Equal(0x06, jTNE_0X02_0X01_Device.DCStatus);
Assert.Equal(0x07, jTNE_0X02_0X01_Device.OperationMode);
Assert.Equal(123, jTNE_0X02_0X01_Device.Resistance);
Assert.Equal(0x03, jTNE_0X02_0X01_Device.SOC);
Assert.Equal(58, jTNE_0X02_0X01_Device.Speed);
Assert.Equal(0x02, jTNE_0X02_0X01_Device.Stall);
Assert.Equal((uint)6666, jTNE_0X02_0X01_Device.TotalDis);
Assert.Equal(99, jTNE_0X02_0X01_Device.TotalTemp);
Assert.Equal(100, jTNE_0X02_0X01_Device.TotalVoltage);


JTNE_0x02_0x02_Device jTNE_0X02_0X02_Device = jTNE_0X02_Device.Values[JTNE_0x02_Body_Device.JTNE_0x02_0x02_Device] as JTNE_0x02_0x02_Device;
Assert.Equal(JTNE_0x02_Body_Device.JTNE_0x02_0x02_Device, jTNE_0X02_0X02_Device.TypeCode);
Assert.Equal(2, jTNE_0X02_0X02_Device.ElectricalCount);
Metadata.Electrical electrical1 = jTNE_0X02_0X02_Device.Electricals[0];
Assert.Equal(0x01, electrical1.ElControlTemp);
Assert.Equal(100, electrical1.ElCurrent);
Assert.Equal(0x01, electrical1.ElNo);
Assert.Equal(65, electrical1.ElSpeed);
Assert.Equal(0x02, electrical1.ElStatus);
Assert.Equal(0x03, electrical1.ElTemp);
Assert.Equal(55, electrical1.ElTorque);
Assert.Equal(236, electrical1.ElVoltage);
Metadata.Electrical electrical2 = jTNE_0X02_0X02_Device.Electricals[1];
Assert.Equal(0x02, electrical2.ElControlTemp);
Assert.Equal(101, electrical2.ElCurrent);
Assert.Equal(0x02, electrical2.ElNo);
Assert.Equal(66, electrical2.ElSpeed);
Assert.Equal(0x03, electrical2.ElStatus);
Assert.Equal(0x05, electrical2.ElTemp);
Assert.Equal(566, electrical2.ElTorque);
Assert.Equal(2136, electrical2.ElVoltage);

JTNE_0x02_0x03_Device jTNE_0X02_0X03_Device = jTNE_0X02_Device.Values[JTNE_0x02_Body_Device.JTNE_0x02_0x03_Device] as JTNE_0x02_0x03_Device;

Assert.Equal(JTNE_0x02_Body_Device.JTNE_0x02_0x03_Device, jTNE_0X02_0X03_Device.TypeCode);
Assert.Equal(0x02, jTNE_0X02_0X03_Device.DCStatus);
Assert.Equal(111, jTNE_0X02_0X03_Device.FuelBatteryCurrent);
Assert.Equal(2222, jTNE_0X02_0X03_Device.FuelBatteryVoltage);
Assert.Equal(3222, jTNE_0X02_0X03_Device.FuelConsumptionRate);
Assert.Equal(6666, jTNE_0X02_0X03_Device.HydrogenSystemMaxConcentrations);
Assert.Equal(0x56, jTNE_0X02_0X03_Device.HydrogenSystemMaxConcentrationsNo);
Assert.Equal(3336, jTNE_0X02_0X03_Device.HydrogenSystemMaxPressure);
Assert.Equal(0x65, jTNE_0X02_0X03_Device.HydrogenSystemMaxPressureNo);
Assert.Equal(3355, jTNE_0X02_0X03_Device.HydrogenSystemMaxTemp);
Assert.Equal(0x22, jTNE_0X02_0X03_Device.HydrogenSystemMaxTempNo);
Assert.Equal(new byte[] { 0x01, 0x02, 0x03 }, jTNE_0X02_0X03_Device.Temperatures);
}
}
}

+ 140
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x03_PlatformTest.cs Просмотреть файл

@@ -0,0 +1,140 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x03_PlatformTest
{
[Fact]
public void Test1()
{
JTNE_0x03_Platform jTNE_0X03_Platform = new JTNE_0x03_Platform();
JTNE_0x02_Platform jTNE_0X02_Platform = new JTNE_0x02_Platform();
jTNE_0X02_Platform.Values = new Dictionary<byte, JTNE_0x02_Body_Platform>();

JTNE_0x02_0x01_Platform jTNE_0X02_0X01_Platform = new JTNE_0x02_0x01_Platform();
jTNE_0X02_0X01_Platform.CarStatus = 0x04;
jTNE_0X02_0X01_Platform.ChargeStatus = 0x05;
jTNE_0X02_0X01_Platform.DCStatus = 0x06;
jTNE_0X02_0X01_Platform.OperationMode = 0x07;
jTNE_0X02_0X01_Platform.Resistance = 123;
jTNE_0X02_0X01_Platform.SOC = 0x03;
jTNE_0X02_0X01_Platform.Speed = 58;
jTNE_0X02_0X01_Platform.Stall = 0x02;
jTNE_0X02_0X01_Platform.TotalDis = 6666;
jTNE_0X02_0X01_Platform.TotalTemp = 99;
jTNE_0X02_0X01_Platform.TotalVoltage = 100;
jTNE_0X02_Platform.Values.Add(JTNE_0x02_Body_Platform.JTNE_0x02_0x01_Platform, jTNE_0X02_0X01_Platform);

JTNE_0x02_0x02_Platform jTNE_0X02_0X02_Platform = new JTNE_0x02_0x02_Platform();
jTNE_0X02_0X02_Platform.Electricals = new List<Metadata.Electrical>();
Metadata.Electrical electrical1 = new Metadata.Electrical();
electrical1.ElControlTemp = 0x01;
electrical1.ElCurrent = 100;
electrical1.ElNo = 0x01;
electrical1.ElSpeed = 65;
electrical1.ElStatus = 0x02;
electrical1.ElTemp = 0x03;
electrical1.ElTorque = 55;
electrical1.ElVoltage = 236;
Metadata.Electrical electrical2 = new Metadata.Electrical();
electrical2.ElControlTemp = 0x02;
electrical2.ElCurrent = 101;
electrical2.ElNo = 0x02;
electrical2.ElSpeed = 66;
electrical2.ElStatus = 0x03;
electrical2.ElTemp = 0x05;
electrical2.ElTorque = 566;
electrical2.ElVoltage = 2136;
jTNE_0X02_0X02_Platform.Electricals.Add(electrical1);
jTNE_0X02_0X02_Platform.Electricals.Add(electrical2);
jTNE_0X02_Platform.Values.Add(JTNE_0x02_Body_Platform.JTNE_0x02_0x02_Platform, jTNE_0X02_0X02_Platform);

JTNE_0x02_0x03_Platform jTNE_0X02_0X03_Platform = new JTNE_0x02_0x03_Platform();
jTNE_0X02_0X03_Platform.DCStatus = 0x02;
jTNE_0X02_0X03_Platform.FuelBatteryCurrent = 111;
jTNE_0X02_0X03_Platform.FuelBatteryVoltage = 2222;
jTNE_0X02_0X03_Platform.FuelConsumptionRate = 3222;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxConcentrations = 6666;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxConcentrationsNo = 0x56;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxPressure = 3336;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxPressureNo = 0x65;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxTemp = 3355;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxTempNo = 0x22;
jTNE_0X02_0X03_Platform.Temperatures = new byte[]
{
0x01,0x02,0x03
};
jTNE_0X02_Platform.Values.Add(JTNE_0x02_Body_Platform.JTNE_0x02_0x03_Platform, jTNE_0X02_0X03_Platform);
jTNE_0X03_Platform.Supplement = jTNE_0X02_Platform;
var hex = JTNESerializer_Platform.Serialize(jTNE_0X03_Platform).ToHexString();
//01 04 05 07 00 3A 00 00 1A 0A 00 64 00 63 03 06 02 00 7B 02 03 -21
//02 02 01 02 01 00 41 00 37 03 00 EC 00 64 02 03 02 00 42 02 36 05 08 58 00 65 -26
//03 08 AE 00 6F 0C 96 00 03 01 02 03 0D 1B 22 1A 0A 56 0D 08 65 02
Assert.Equal("01040507003A00001A0A00640063030602007B0202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502", hex);
}
[Fact]
public void Test2()
{
var data = "01040507003A00001A0A00640063030602007B0202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502".ToHexBytes();
JTNE_0x03_Platform jTNE_0X03_Platform = JTNESerializer_Platform.Deserialize<JTNE_0x03_Platform>(data);
JTNE_0x02_Platform jTNE_0X02_Platform = jTNE_0X03_Platform.Supplement;
JTNE_0x02_0x01_Platform jTNE_0X02_0X01_Platform = jTNE_0X02_Platform.Values[JTNE_0x02_Body_Platform.JTNE_0x02_0x01_Platform] as JTNE_0x02_0x01_Platform;
Assert.Equal(JTNE_0x02_Body_Platform.JTNE_0x02_0x01_Platform, jTNE_0X02_0X01_Platform.TypeCode);
Assert.Equal(0x04, jTNE_0X02_0X01_Platform.CarStatus);
Assert.Equal(0x05, jTNE_0X02_0X01_Platform.ChargeStatus);
Assert.Equal(0x06, jTNE_0X02_0X01_Platform.DCStatus);
Assert.Equal(0x07, jTNE_0X02_0X01_Platform.OperationMode);
Assert.Equal(123, jTNE_0X02_0X01_Platform.Resistance);
Assert.Equal(0x03, jTNE_0X02_0X01_Platform.SOC);
Assert.Equal(58, jTNE_0X02_0X01_Platform.Speed);
Assert.Equal(0x02, jTNE_0X02_0X01_Platform.Stall);
Assert.Equal((uint)6666, jTNE_0X02_0X01_Platform.TotalDis);
Assert.Equal(99, jTNE_0X02_0X01_Platform.TotalTemp);
Assert.Equal(100, jTNE_0X02_0X01_Platform.TotalVoltage);


JTNE_0x02_0x02_Platform jTNE_0X02_0X02_Platform = jTNE_0X02_Platform.Values[JTNE_0x02_Body_Platform.JTNE_0x02_0x02_Platform] as JTNE_0x02_0x02_Platform;
Assert.Equal(JTNE_0x02_Body_Platform.JTNE_0x02_0x02_Platform, jTNE_0X02_0X02_Platform.TypeCode);
Assert.Equal(2, jTNE_0X02_0X02_Platform.ElectricalCount);
Metadata.Electrical electrical1 = jTNE_0X02_0X02_Platform.Electricals[0];
Assert.Equal(0x01, electrical1.ElControlTemp);
Assert.Equal(100, electrical1.ElCurrent);
Assert.Equal(0x01, electrical1.ElNo);
Assert.Equal(65, electrical1.ElSpeed);
Assert.Equal(0x02, electrical1.ElStatus);
Assert.Equal(0x03, electrical1.ElTemp);
Assert.Equal(55, electrical1.ElTorque);
Assert.Equal(236, electrical1.ElVoltage);
Metadata.Electrical electrical2 = jTNE_0X02_0X02_Platform.Electricals[1];
Assert.Equal(0x02, electrical2.ElControlTemp);
Assert.Equal(101, electrical2.ElCurrent);
Assert.Equal(0x02, electrical2.ElNo);
Assert.Equal(66, electrical2.ElSpeed);
Assert.Equal(0x03, electrical2.ElStatus);
Assert.Equal(0x05, electrical2.ElTemp);
Assert.Equal(566, electrical2.ElTorque);
Assert.Equal(2136, electrical2.ElVoltage);

JTNE_0x02_0x03_Platform jTNE_0X02_0X03_Platform = jTNE_0X02_Platform.Values[JTNE_0x02_Body_Platform.JTNE_0x02_0x03_Platform] as JTNE_0x02_0x03_Platform;

Assert.Equal(JTNE_0x02_Body_Platform.JTNE_0x02_0x03_Platform, jTNE_0X02_0X03_Platform.TypeCode);
Assert.Equal(0x02, jTNE_0X02_0X03_Platform.DCStatus);
Assert.Equal(111, jTNE_0X02_0X03_Platform.FuelBatteryCurrent);
Assert.Equal(2222, jTNE_0X02_0X03_Platform.FuelBatteryVoltage);
Assert.Equal(3222, jTNE_0X02_0X03_Platform.FuelConsumptionRate);
Assert.Equal(6666, jTNE_0X02_0X03_Platform.HydrogenSystemMaxConcentrations);
Assert.Equal(0x56, jTNE_0X02_0X03_Platform.HydrogenSystemMaxConcentrationsNo);
Assert.Equal(3336, jTNE_0X02_0X03_Platform.HydrogenSystemMaxPressure);
Assert.Equal(0x65, jTNE_0X02_0X03_Platform.HydrogenSystemMaxPressureNo);
Assert.Equal(3355, jTNE_0X02_0X03_Platform.HydrogenSystemMaxTemp);
Assert.Equal(0x22, jTNE_0X02_0X03_Platform.HydrogenSystemMaxTempNo);
Assert.Equal(new byte[] { 0x01, 0x02, 0x03 }, jTNE_0X02_0X03_Platform.Temperatures);
}
}
}

+ 0
- 31
src/JTNE.Protocol.Test/MessageBody/JTNE_0x04Test.cs Просмотреть файл

@@ -1,31 +0,0 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x04Test
{
[Fact]
public void Test1()
{
JTNE_0x04 jTNE_0X04 = new JTNE_0x04();
jTNE_0X04.LogoutTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X04.LogoutNum = 4444;
var hex = JTNESerializer.Serialize(jTNE_0X04).ToHexString();
Assert.Equal("130116173738115C", hex);
}

[Fact]
public void Test2()
{
var data = "130116173738115C".ToHexBytes();
JTNE_0x04 jTNE_0X04 = JTNESerializer.Deserialize<JTNE_0x04>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X04.LogoutTime);
Assert.Equal(4444, jTNE_0X04.LogoutNum);
}
}
}

+ 31
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x04_DeviceTest.cs Просмотреть файл

@@ -0,0 +1,31 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x04_DeviceTest
{
[Fact]
public void Test1()
{
JTNE_0x04_Device jTNE_0X04_Device = new JTNE_0x04_Device();
jTNE_0X04_Device.LogoutTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X04_Device.LogoutNum = 4444;
var hex = JTNESerializer_Device.Serialize(jTNE_0X04_Device).ToHexString();
Assert.Equal("130116173738115C", hex);
}

[Fact]
public void Test2()
{
var data = "130116173738115C".ToHexBytes();
JTNE_0x04_Device jTNE_0X04_Device = JTNESerializer_Device.Deserialize<JTNE_0x04_Device>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X04_Device.LogoutTime);
Assert.Equal(4444, jTNE_0X04_Device.LogoutNum);
}
}
}

+ 31
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x04_PlatformTest.cs Просмотреть файл

@@ -0,0 +1,31 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x04_PlatformTest
{
[Fact]
public void Test1()
{
JTNE_0x04_Platform jTNE_0X04_Platform = new JTNE_0x04_Platform();
jTNE_0X04_Platform.LogoutTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X04_Platform.LogoutNum = 4444;
var hex = JTNESerializer_Platform.Serialize(jTNE_0X04_Platform).ToHexString();
Assert.Equal("130116173738115C", hex);
}

[Fact]
public void Test2()
{
var data = "130116173738115C".ToHexBytes();
JTNE_0x04_Platform jTNE_0X04_Platform = JTNESerializer_Platform.Deserialize<JTNE_0x04_Platform>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X04_Platform.LogoutTime);
Assert.Equal(4444, jTNE_0X04_Platform.LogoutNum);
}
}
}

+ 0
- 37
src/JTNE.Protocol.Test/MessageBody/JTNE_0x05Test.cs Просмотреть файл

@@ -1,37 +0,0 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x05Test
{
[Fact]
public void Test1()
{
JTNE_0x05 jTNE_0X05 = new JTNE_0x05();
jTNE_0X05.LoginTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X05.LoginNum = 6666;
jTNE_0X05.PlatformUserName = "SmallChi518";
jTNE_0X05.PlatformPassword = "1234567890123456789";
jTNE_0X05.EncryptMethod = 0x00;
var hex = JTNESerializer.Serialize(jTNE_0X05).ToHexString();
Assert.Equal("1301161737381A0A536D616C6C43686935313800313233343536373839303132333435363738390000", hex);
}

[Fact]
public void Test2()
{
var data = "1301161737381A0A536D616C6C43686935313800313233343536373839303132333435363738390000".ToHexBytes();
JTNE_0x05 jTNE_0X05 = JTNESerializer.Deserialize<JTNE_0x05>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X05.LoginTime);
Assert.Equal(6666, jTNE_0X05.LoginNum);
Assert.Equal("SmallChi518", jTNE_0X05.PlatformUserName);
Assert.Equal("1234567890123456789", jTNE_0X05.PlatformPassword);
Assert.Equal(0x00, jTNE_0X05.EncryptMethod);
}
}
}

+ 37
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x05_PlatformTest.cs Просмотреть файл

@@ -0,0 +1,37 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x05_PlatformTest
{
[Fact]
public void Test1()
{
JTNE_0x05_Platform jTNE_0X05_Platform = new JTNE_0x05_Platform();
jTNE_0X05_Platform.LoginTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X05_Platform.LoginNum = 6666;
jTNE_0X05_Platform.PlatformUserName = "SmallChi518";
jTNE_0X05_Platform.PlatformPassword = "1234567890123456789";
jTNE_0X05_Platform.EncryptMethod = 0x00;
var hex = JTNESerializer_Platform.Serialize(jTNE_0X05_Platform).ToHexString();
Assert.Equal("1301161737381A0A536D616C6C43686935313800313233343536373839303132333435363738390000", hex);
}

[Fact]
public void Test2()
{
var data = "1301161737381A0A536D616C6C43686935313800313233343536373839303132333435363738390000".ToHexBytes();
JTNE_0x05_Platform jTNE_0X05_Platform = JTNESerializer_Platform.Deserialize<JTNE_0x05_Platform>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X05_Platform.LoginTime);
Assert.Equal(6666, jTNE_0X05_Platform.LoginNum);
Assert.Equal("SmallChi518", jTNE_0X05_Platform.PlatformUserName);
Assert.Equal("1234567890123456789", jTNE_0X05_Platform.PlatformPassword);
Assert.Equal(0x00, jTNE_0X05_Platform.EncryptMethod);
}
}
}

+ 0
- 31
src/JTNE.Protocol.Test/MessageBody/JTNE_0x06Test.cs Просмотреть файл

@@ -1,31 +0,0 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x06Test
{
[Fact]
public void Test1()
{
JTNE_0x06 jTNE_0X06 = new JTNE_0x06();
jTNE_0X06.LogoutTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X06.LogoutNum = 6666;
var hex = JTNESerializer.Serialize(jTNE_0X06).ToHexString();
Assert.Equal("1301161737381A0A", hex);
}

[Fact]
public void Test2()
{
var data = "1301161737381A0A".ToHexBytes();
JTNE_0x06 jTNE_0X06 = JTNESerializer.Deserialize<JTNE_0x06>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X06.LogoutTime);
Assert.Equal(6666, jTNE_0X06.LogoutNum);
}
}
}

+ 31
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x06_PlatformTest.cs Просмотреть файл

@@ -0,0 +1,31 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x06_PlatformTest
{
[Fact]
public void Test1()
{
JTNE_0x06_Platform jTNE_0X06_Platform = new JTNE_0x06_Platform();
jTNE_0X06_Platform.LogoutTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X06_Platform.LogoutNum = 6666;
var hex = JTNESerializer_Platform.Serialize(jTNE_0X06_Platform).ToHexString();
Assert.Equal("1301161737381A0A", hex);
}

[Fact]
public void Test2()
{
var data = "1301161737381A0A".ToHexBytes();
JTNE_0x06_Platform jTNE_0X06_Platform = JTNESerializer_Platform.Deserialize<JTNE_0x06_Platform>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X06_Platform.LogoutTime);
Assert.Equal(6666, jTNE_0X06_Platform.LogoutNum);
}
}
}

src/JTNE.Protocol.Test/MessageBody/JTNE_0x80Reply_CustomBodyTest.cs → src/JTNE.Protocol.Test/MessageBody/JTNE_0x80Reply_CustomBody_DeviceTest.cs Просмотреть файл

@@ -9,100 +9,100 @@ using JTNE.Protocol.Attributes;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x80Reply_CustomBodyTest
public class JTNE_0x80Reply_CustomBody_DeviceTest
{
[Fact]
public void Test1()
{
JTNEGlobalConfigs.Instance.Register_JTNE0x81CustomBody(0x80, typeof(JTNE_0x80Reply_0x80));
JTNEGlobalConfigs.Instance.Register_JTNE0x81CustomBody(0x81, typeof(JTNE_0x80Reply_0x81));
JTNEGlobalConfigs.Instance.Register_JTNE0x81CustomBody(0x80, typeof(JTNE_0x80Reply_0x80_Device));
JTNEGlobalConfigs.Instance.Register_JTNE0x81CustomBody(0x81, typeof(JTNE_0x80Reply_0x81_Device));
JTNEGlobalConfigs.Instance.Register_JTNE0x81CustomDepenedBody(0x81, 0x80);

JTNE_0x80Reply jTNE_0x80Reply = new JTNE_0x80Reply();
JTNE_0x81 jTNE_0X81 = new JTNE_0x81 {
JTNE_0x80Reply_Device jTNE_0x80Reply = new JTNE_0x80Reply_Device();
JTNE_0x81_Device jTNE_0X81_Device = new JTNE_0x81_Device {
OperateTime= DateTime.Parse("2019-01-22 23:55:56"),
ParamNum=2,
ParamList = new List<JTNE_0x81_Body> {
new JTNE_0x80Reply_0x80{
ParamList = new List<JTNE_0x81_Body_Device> {
new JTNE_0x80Reply_0x80_Device{
ParamValue=6
},
new JTNE_0x80Reply_0x81{
new JTNE_0x80Reply_0x81_Device{
ParamLength=6,
ParamValue=new byte[]{ 1,2,3,4,5,6 }
}
}
};
jTNE_0x80Reply.JTNE_Reply0x80 = jTNE_0X81;
var hex = JTNESerializer.Serialize(jTNE_0x80Reply).ToHexString();
jTNE_0x80Reply.JTNE_Reply0x80_Device = jTNE_0X81_Device;
var hex = JTNESerializer_Device.Serialize(jTNE_0x80Reply).ToHexString();
Assert.Equal("13011617373802800681010203040506", hex);
}
[Fact]
public void Test1_1()
{
JTNEGlobalConfigs.Instance.Register_JTNE0x81CustomBody(0x80, typeof(JTNE_0x80Reply_0x80));
JTNEGlobalConfigs.Instance.Register_JTNE0x81CustomBody(0x81, typeof(JTNE_0x80Reply_0x81));
JTNEGlobalConfigs.Instance.Register_JTNE0x81CustomBody(0x80, typeof(JTNE_0x80Reply_0x80_Device));
JTNEGlobalConfigs.Instance.Register_JTNE0x81CustomBody(0x81, typeof(JTNE_0x80Reply_0x81_Device));
JTNEGlobalConfigs.Instance.Register_JTNE0x81CustomDepenedBody(0x81, 0x80);

var data = "13011617373802800681010203040506".ToHexBytes();
JTNE_0x80Reply jTNE_0x80Reply = JTNESerializer.Deserialize<JTNE_0x80Reply>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0x80Reply.JTNE_Reply0x80.OperateTime);
Assert.Equal(jTNE_0x80Reply.JTNE_Reply0x80.ParamList.Count, jTNE_0x80Reply.JTNE_Reply0x80.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new List<JTNE_0x81_Body> {
new JTNE_0x80Reply_0x80{
JTNE_0x80Reply_Device jTNE_0x80Reply_Device = JTNESerializer_Device.Deserialize<JTNE_0x80Reply_Device>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0x80Reply_Device.JTNE_Reply0x80_Device.OperateTime);
Assert.Equal(jTNE_0x80Reply_Device.JTNE_Reply0x80_Device.ParamList.Count, jTNE_0x80Reply_Device.JTNE_Reply0x80_Device.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new List<JTNE_0x81_Body_Device> {
new JTNE_0x80Reply_0x80_Device{
ParamValue=6
},
new JTNE_0x80Reply_0x81{
new JTNE_0x80Reply_0x81_Device{
ParamLength=6,
ParamValue=new byte[]{ 1,2,3,4,5,6 }
}
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0x80Reply.JTNE_Reply0x80.ParamList));
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0x80Reply_Device.JTNE_Reply0x80_Device.ParamList));
}
}
[JTNEFormatter(typeof(JTNE_0x80Reply_0x80Formatter))]
public class JTNE_0x80Reply_0x80 : JTNE_0x81_Body
[JTNEFormatter(typeof(JTNE_0x80Reply_0x80_Device_Formatter))]
public class JTNE_0x80Reply_0x80_Device : JTNE_0x81_Body_Device
{
public override byte ParamId { get; set; }= 0x80;
public override byte ParamLength { get; set; } = 1;
public byte ParamValue { get; set; }
}
[JTNEFormatter(typeof(JTNE_0x80Reply_0x81Formatter))]
public class JTNE_0x80Reply_0x81 : JTNE_0x81_Body
[JTNEFormatter(typeof(JTNE_0x80Reply_0x81_Device_Formatter))]
public class JTNE_0x80Reply_0x81_Device : JTNE_0x81_Body_Device
{
public override byte ParamId { get; set; } = 0x81;
public override byte ParamLength { get; set; }
public byte[] ParamValue { get; set; }
}

public class JTNE_0x80Reply_0x80Formatter : IJTNEFormatter<JTNE_0x80Reply_0x80>
public class JTNE_0x80Reply_0x80_Device_Formatter : IJTNEFormatter<JTNE_0x80Reply_0x80_Device>
{
public JTNE_0x80Reply_0x80 Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
public JTNE_0x80Reply_0x80_Device Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x80Reply_0x80 jTNE_0x80Reply_0x80 = new JTNE_0x80Reply_0x80();
jTNE_0x80Reply_0x80.ParamValue = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
JTNE_0x80Reply_0x80_Device jTNE_0x80Reply_0x80_Device = new JTNE_0x80Reply_0x80_Device();
jTNE_0x80Reply_0x80_Device.ParamValue = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
readSize = offset;
return jTNE_0x80Reply_0x80;
return jTNE_0x80Reply_0x80_Device;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x80Reply_0x80 value)
public int Serialize(ref byte[] bytes, int offset, JTNE_0x80Reply_0x80_Device value)
{
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.ParamValue);
return offset;
}
}
public class JTNE_0x80Reply_0x81Formatter : IJTNEFormatter<JTNE_0x80Reply_0x81>
public class JTNE_0x80Reply_0x81_Device_Formatter : IJTNEFormatter<JTNE_0x80Reply_0x81_Device>
{
public JTNE_0x80Reply_0x81 Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
public JTNE_0x80Reply_0x81_Device Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x80Reply_0x81 jTNE_0x80Reply_0x80Reply = new JTNE_0x80Reply_0x81();
jTNE_0x80Reply_0x80Reply.ParamValue = JTNEBinaryExtensions.ReadBytesLittle(bytes, ref offset);
jTNE_0x80Reply_0x80Reply.ParamLength = (byte)bytes.Length;
JTNE_0x80Reply_0x81_Device jTNE_0x80Reply_0x80Reply_Device = new JTNE_0x80Reply_0x81_Device();
jTNE_0x80Reply_0x80Reply_Device.ParamValue = JTNEBinaryExtensions.ReadBytesLittle(bytes, ref offset);
jTNE_0x80Reply_0x80Reply_Device.ParamLength = (byte)bytes.Length;
readSize = offset;
return jTNE_0x80Reply_0x80Reply;
return jTNE_0x80Reply_0x80Reply_Device;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x80Reply_0x81 value)
public int Serialize(ref byte[] bytes, int offset, JTNE_0x80Reply_0x81_Device value)
{
offset += JTNEBinaryExtensions.WriteBytesLittle(bytes, offset, value.ParamValue);
return offset;

src/JTNE.Protocol.Test/MessageBody/JTNE_0x80ReplyTest.cs → src/JTNE.Protocol.Test/MessageBody/JTNE_0x80Reply_DeviceTest.cs Просмотреть файл

@@ -7,26 +7,26 @@ using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x80ReplyTest
public class JTNE_0x80Reply_DeviceTest
{
[Fact]
public void Test1()
{
JTNE_0x80Reply jTNE_0x80Reply = new JTNE_0x80Reply();
JTNE_0x81 jTNE_0X81 = new JTNE_0x81
JTNE_0x80Reply_Device jTNE_0x80Reply_Device = new JTNE_0x80Reply_Device();
JTNE_0x81_Device jTNE_0X81_Device = new JTNE_0x81_Device
{
OperateTime = DateTime.Parse("2019-01-22 23:55:56"),
ParamNum = 1,
ParamList = new List<JTNE_0x81_Body> {
new JTNE_0x81_0x01{
ParamList = new List<JTNE_0x81_Body_Device> {
new JTNE_0x81_0x01_Device{
ParamId=0x01,
ParamLength=2,
ParamValue=10
}
}
};
jTNE_0x80Reply.JTNE_Reply0x80 = jTNE_0X81;
var hex = JTNESerializer.Serialize(jTNE_0x80Reply).ToHexString();
jTNE_0x80Reply_Device.JTNE_Reply0x80_Device = jTNE_0X81_Device;
var hex = JTNESerializer_Device.Serialize(jTNE_0x80Reply_Device).ToHexString();
Assert.Equal("1301161737380101000A", hex);
}

@@ -34,34 +34,34 @@ namespace JTNE.Protocol.Test.MessageBody
public void Test1_1()
{
var data = "1301161737380101000A".ToHexBytes();
JTNE_0x80Reply jTNE_0x80Reply = JTNESerializer.Deserialize<JTNE_0x80Reply>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0x80Reply.JTNE_Reply0x80.OperateTime);
Assert.Equal(1, jTNE_0x80Reply.JTNE_Reply0x80.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject( new JTNE_0x81_0x01
JTNE_0x80Reply_Device jTNE_0x80Reply_Device = JTNESerializer_Device.Deserialize<JTNE_0x80Reply_Device>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0x80Reply_Device.JTNE_Reply0x80_Device.OperateTime);
Assert.Equal(1, jTNE_0x80Reply_Device.JTNE_Reply0x80_Device.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject( new JTNE_0x81_0x01_Device
{
ParamId = 0x01,
ParamLength = 2,
ParamValue = 10
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0x80Reply.JTNE_Reply0x80.ParamList[0]));
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0x80Reply_Device.JTNE_Reply0x80_Device.ParamList[0]));
}
[Fact]
public void Test2()
{
JTNE_0x80Reply jTNE_0x80Reply = new JTNE_0x80Reply();
JTNE_0x81 jTNE_0X81 = new JTNE_0x81
JTNE_0x80Reply_Device jTNE_0x80Reply_Device = new JTNE_0x80Reply_Device();
JTNE_0x81_Device jTNE_0X81_Device = new JTNE_0x81_Device
{
OperateTime = DateTime.Parse("2019-01-22 23:55:56"),
ParamNum = 1,
ParamList = new List<JTNE_0x81_Body> {
new JTNE_0x81_0x02{
ParamList = new List<JTNE_0x81_Body_Device> {
new JTNE_0x81_0x02_Device{
ParamId=0x02,
ParamLength=2,
ParamValue=20
}
}
};
jTNE_0x80Reply.JTNE_Reply0x80 = jTNE_0X81;
var hex = JTNESerializer.Serialize(jTNE_0x80Reply).ToHexString();
jTNE_0x80Reply_Device.JTNE_Reply0x80_Device = jTNE_0X81_Device;
var hex = JTNESerializer_Device.Serialize(jTNE_0x80Reply_Device).ToHexString();
Assert.Equal("13011617373801020014", hex);
}

@@ -69,37 +69,37 @@ namespace JTNE.Protocol.Test.MessageBody
public void Test2_1()
{
var data = "13011617373801020014".ToHexBytes();
JTNE_0x80Reply jTNE_0x80Reply = JTNESerializer.Deserialize<JTNE_0x80Reply>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0x80Reply.JTNE_Reply0x80.OperateTime);
Assert.Equal(1, jTNE_0x80Reply.JTNE_Reply0x80.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new JTNE_0x81_0x02
JTNE_0x80Reply_Device jTNE_0x80Reply_Device = JTNESerializer_Device.Deserialize<JTNE_0x80Reply_Device>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0x80Reply_Device.JTNE_Reply0x80_Device.OperateTime);
Assert.Equal(1, jTNE_0x80Reply_Device.JTNE_Reply0x80_Device.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new JTNE_0x81_0x02_Device
{
ParamId = 0x02,
ParamLength = 2,
ParamValue = 20
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0x80Reply.JTNE_Reply0x80.ParamList[0]));
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0x80Reply_Device.JTNE_Reply0x80_Device.ParamList[0]));
}
[Fact]
public void Test4()
{
JTNE_0x80Reply jTNE_0x80Reply = new JTNE_0x80Reply();
JTNE_0x81 jTNE_0X81 = new JTNE_0x81
JTNE_0x80Reply_Device jTNE_0x80Reply_Device = new JTNE_0x80Reply_Device();
JTNE_0x81_Device jTNE_0X81_Device = new JTNE_0x81_Device
{
OperateTime = DateTime.Parse("2019-01-22 23:55:56"),
ParamNum=3,
ParamList = new List<JTNE_0x81_Body> {
new JTNE_0x81_0x04{
ParamList = new List<JTNE_0x81_Body_Device> {
new JTNE_0x81_0x04_Device{
ParamValue=8
},new JTNE_0x81_0x05{
},new JTNE_0x81_0x05_Device{
ParamValue=new byte[]{ 1, 2, 3, 4, 5, 6, 7, 8 }
},
new JTNE_0x81_0x06{
new JTNE_0x81_0x06_Device{
ParamValue=40
}
}
};
jTNE_0x80Reply.JTNE_Reply0x80 = jTNE_0X81;
var hex = JTNESerializer.Serialize(jTNE_0x80Reply).ToHexString();
jTNE_0x80Reply_Device.JTNE_Reply0x80_Device = jTNE_0X81_Device;
var hex = JTNESerializer_Device.Serialize(jTNE_0x80Reply_Device).ToHexString();
Assert.Equal("130116173738030408050102030405060708060028", hex);
}

@@ -107,43 +107,43 @@ namespace JTNE.Protocol.Test.MessageBody
public void Test4_1()
{
var data = "130116173738030408050102030405060708060028".ToHexBytes();
JTNE_0x80Reply jTNE_0x80Reply = JTNESerializer.Deserialize<JTNE_0x80Reply>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0x80Reply.JTNE_Reply0x80.OperateTime);
Assert.Equal(jTNE_0x80Reply.JTNE_Reply0x80.ParamList.Count, jTNE_0x80Reply.JTNE_Reply0x80.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new List<JTNE_0x81_Body> {
new JTNE_0x81_0x04{
JTNE_0x80Reply_Device jTNE_0x80Reply_Device = JTNESerializer_Device.Deserialize<JTNE_0x80Reply_Device>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0x80Reply_Device.JTNE_Reply0x80_Device.OperateTime);
Assert.Equal(jTNE_0x80Reply_Device.JTNE_Reply0x80_Device.ParamList.Count, jTNE_0x80Reply_Device.JTNE_Reply0x80_Device.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new List<JTNE_0x81_Body_Device> {
new JTNE_0x81_0x04_Device{
ParamValue=8
},new JTNE_0x81_0x05{
},new JTNE_0x81_0x05_Device{
ParamValue=new byte[]{1,2,3,4,5,6,7,8 },
ParamLength=8
}, new JTNE_0x81_0x06{
}, new JTNE_0x81_0x06_Device{
ParamValue=40
}
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0x80Reply.JTNE_Reply0x80.ParamList));
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0x80Reply_Device.JTNE_Reply0x80_Device.ParamList));
}


[Fact]
public void Test5()
{
JTNE_0x80Reply jTNE_0x80Reply = new JTNE_0x80Reply();
JTNE_0x81 jTNE_0X81 = new JTNE_0x81
JTNE_0x80Reply_Device jTNE_0x80Reply_Device = new JTNE_0x80Reply_Device();
JTNE_0x81_Device jTNE_0X81_Device = new JTNE_0x81_Device
{
OperateTime = DateTime.Parse("2019-01-22 23:55:56"),
ParamNum=3,
ParamList = new List<JTNE_0x81_Body> {
new JTNE_0x81_0x0D{
ParamList = new List<JTNE_0x81_Body_Device> {
new JTNE_0x81_0x0D_Device{
ParamValue=8
},new JTNE_0x81_0x0E{
},new JTNE_0x81_0x0E_Device{
ParamValue=new byte[]{ 1, 2, 3, 4, 5, 6, 7, 8 }
},
new JTNE_0x81_0x0F{
new JTNE_0x81_0x0F_Device{
ParamValue=40
}
}
};
jTNE_0x80Reply.JTNE_Reply0x80 = jTNE_0X81;
var hex = JTNESerializer.Serialize(jTNE_0x80Reply).ToHexString();
jTNE_0x80Reply_Device.JTNE_Reply0x80_Device = jTNE_0X81_Device;
var hex = JTNESerializer_Device.Serialize(jTNE_0x80Reply_Device).ToHexString();
Assert.Equal("130116173738030D080E01020304050607080F0028", hex);
}

@@ -151,39 +151,39 @@ namespace JTNE.Protocol.Test.MessageBody
public void Test5_1()
{
var data = "130116173738030D080E01020304050607080F0028".ToHexBytes();
JTNE_0x80Reply jTNE_0x80Reply = JTNESerializer.Deserialize<JTNE_0x80Reply>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0x80Reply.JTNE_Reply0x80.OperateTime);
Assert.Equal(jTNE_0x80Reply.JTNE_Reply0x80.ParamList.Count, jTNE_0x80Reply.JTNE_Reply0x80.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new List<JTNE_0x81_Body> {
new JTNE_0x81_0x0D{
JTNE_0x80Reply_Device jTNE_0x80Reply_Device = JTNESerializer_Device.Deserialize<JTNE_0x80Reply_Device>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0x80Reply_Device.JTNE_Reply0x80_Device.OperateTime);
Assert.Equal(jTNE_0x80Reply_Device.JTNE_Reply0x80_Device.ParamList.Count, jTNE_0x80Reply_Device.JTNE_Reply0x80_Device.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new List<JTNE_0x81_Body_Device> {
new JTNE_0x81_0x0D_Device{
ParamValue=8
},new JTNE_0x81_0x0E{
},new JTNE_0x81_0x0E_Device{
ParamValue=new byte[]{1,2,3,4,5,6,7,8 },
ParamLength=8
}, new JTNE_0x81_0x0F{
}, new JTNE_0x81_0x0F_Device{
ParamValue=40
}
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0x80Reply.JTNE_Reply0x80.ParamList));
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0x80Reply_Device.JTNE_Reply0x80_Device.ParamList));
}


[Fact]
public void Test3()
{
JTNE_0x80Reply jTNE_0x80Reply = new JTNE_0x80Reply();
JTNE_0x81 jTNE_0X81 = new JTNE_0x81 {
JTNE_0x80Reply_Device jTNE_0x80Reply_Device = new JTNE_0x80Reply_Device();
JTNE_0x81_Device jTNE_0X81_Device = new JTNE_0x81_Device {
OperateTime= DateTime.Parse("2019-01-22 23:55:56"),
ParamNum=1,
ParamList = new List<JTNE_0x81_Body> {
new JTNE_0x81_0x03{
ParamList = new List<JTNE_0x81_Body_Device> {
new JTNE_0x81_0x03_Device{
ParamId=0x03,
ParamLength=2,
ParamValue=30
}
}
};
jTNE_0x80Reply.JTNE_Reply0x80 = jTNE_0X81;
var hex = JTNESerializer.Serialize(jTNE_0x80Reply).ToHexString();
jTNE_0x80Reply_Device.JTNE_Reply0x80_Device = jTNE_0X81_Device;
var hex = JTNESerializer_Device.Serialize(jTNE_0x80Reply_Device).ToHexString();
Assert.Equal("1301161737380103001E", hex);
}

@@ -191,64 +191,64 @@ namespace JTNE.Protocol.Test.MessageBody
public void Test3_1()
{
var data = "1301161737380103001E".ToHexBytes();
JTNE_0x80Reply jTNE_0x80Reply = JTNESerializer.Deserialize<JTNE_0x80Reply>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0x80Reply.JTNE_Reply0x80.OperateTime);
Assert.Equal(1, jTNE_0x80Reply.JTNE_Reply0x80.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new JTNE_0x81_0x03
JTNE_0x80Reply_Device jTNE_0x80Reply_Device = JTNESerializer_Device.Deserialize<JTNE_0x80Reply_Device>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0x80Reply_Device.JTNE_Reply0x80_Device.OperateTime);
Assert.Equal(1, jTNE_0x80Reply_Device.JTNE_Reply0x80_Device.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new JTNE_0x81_0x03_Device
{
ParamId = 0x03,
ParamLength = 2,
ParamValue = 30
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0x80Reply.JTNE_Reply0x80.ParamList[0]));
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0x80Reply_Device.JTNE_Reply0x80_Device.ParamList[0]));
}
[Fact]
public void TestAll()
{
JTNE_0x80Reply jTNE_0x80Reply = new JTNE_0x80Reply();
JTNE_0x81 jTNE_0X81 = new JTNE_0x81 {
JTNE_0x80Reply_Device jTNE_0x80Reply_Device = new JTNE_0x80Reply_Device();
JTNE_0x81_Device jTNE_0X81_Device = new JTNE_0x81_Device {
OperateTime = DateTime.Parse("2019-01-22 23:55:56"),
ParamNum=12,
ParamList = new List<JTNE_0x81_Body> {
new JTNE_0x81_0x01{
ParamList = new List<JTNE_0x81_Body_Device> {
new JTNE_0x81_0x01_Device{
ParamValue=10
},
new JTNE_0x81_0x02{
new JTNE_0x81_0x02_Device{
ParamValue=20
},
new JTNE_0x81_0x03{
new JTNE_0x81_0x03_Device{
ParamValue=30
},
new JTNE_0x81_0x06{
new JTNE_0x81_0x06_Device{
ParamValue=40
},
new JTNE_0x81_0x07{
new JTNE_0x81_0x07_Device{
ParamValue="abcde"
},
new JTNE_0x81_0x08{
new JTNE_0x81_0x08_Device{
ParamValue="12345"
},
new JTNE_0x81_0x09{
new JTNE_0x81_0x09_Device{
ParamValue=50
},
new JTNE_0x81_0x0A{
new JTNE_0x81_0x0A_Device{
ParamValue=60
},
new JTNE_0x81_0x0B{
new JTNE_0x81_0x0B_Device{
ParamValue=70
},
new JTNE_0x81_0x0C{
new JTNE_0x81_0x0C_Device{
ParamValue=80
},
new JTNE_0x81_0x0F{
new JTNE_0x81_0x0F_Device{
ParamValue=90
},
new JTNE_0x81_0x10{
new JTNE_0x81_0x10_Device{
ParamValue=0x01
}
}
};
jTNE_0x80Reply.JTNE_Reply0x80 = jTNE_0X81;
var hex = JTNESerializer.Serialize(jTNE_0x80Reply).ToHexString();
jTNE_0x80Reply_Device.JTNE_Reply0x80_Device = jTNE_0X81_Device;
var hex = JTNESerializer_Device.Serialize(jTNE_0x80Reply_Device).ToHexString();
Assert.Equal("1301161737380C01000A02001403001E06002807616263646508313233343509320A003C0B00460C500F005A1001", hex);
}

@@ -256,47 +256,47 @@ namespace JTNE.Protocol.Test.MessageBody
public void TestAll_1()
{
var data = "1301161737380C01000A02001403001E06002807616263646508313233343509320A003C0B00460C500F005A1001".ToHexBytes();
JTNE_0x80Reply jTNE_0x80Reply = JTNESerializer.Deserialize<JTNE_0x80Reply>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0x80Reply.JTNE_Reply0x80.OperateTime);
Assert.Equal(12, jTNE_0x80Reply.JTNE_Reply0x80.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new List<JTNE_0x81_Body> {
new JTNE_0x81_0x01{
JTNE_0x80Reply_Device jTNE_0x80Reply_Device = JTNESerializer_Device.Deserialize<JTNE_0x80Reply_Device>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0x80Reply_Device.JTNE_Reply0x80_Device.OperateTime);
Assert.Equal(12, jTNE_0x80Reply_Device.JTNE_Reply0x80_Device.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new List<JTNE_0x81_Body_Device> {
new JTNE_0x81_0x01_Device{
ParamValue=10
},
new JTNE_0x81_0x02{
new JTNE_0x81_0x02_Device{
ParamValue=20
},
new JTNE_0x81_0x03{
new JTNE_0x81_0x03_Device{
ParamValue=30
},
new JTNE_0x81_0x06{
new JTNE_0x81_0x06_Device{
ParamValue=40
},
new JTNE_0x81_0x07{
new JTNE_0x81_0x07_Device{
ParamValue="abcde"
},
new JTNE_0x81_0x08{
new JTNE_0x81_0x08_Device{
ParamValue="12345"
},
new JTNE_0x81_0x09{
new JTNE_0x81_0x09_Device{
ParamValue=50
},
new JTNE_0x81_0x0A{
new JTNE_0x81_0x0A_Device{
ParamValue=60
},
new JTNE_0x81_0x0B{
new JTNE_0x81_0x0B_Device{
ParamValue=70
},
new JTNE_0x81_0x0C{
new JTNE_0x81_0x0C_Device{
ParamValue=80
},
new JTNE_0x81_0x0F{
new JTNE_0x81_0x0F_Device{
ParamValue=90
},
new JTNE_0x81_0x10{
new JTNE_0x81_0x10_Device{
ParamValue=0x01
}
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0x80Reply.JTNE_Reply0x80.ParamList));
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0x80Reply_Device.JTNE_Reply0x80_Device.ParamList));
}
}
}

+ 0
- 33
src/JTNE.Protocol.Test/MessageBody/JTNE_0x80Test.cs Просмотреть файл

@@ -1,33 +0,0 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x80Test
{
[Fact]
public void Test1()
{
JTNE_0x80 jTNE_0X80 = new JTNE_0x80();
jTNE_0X80.QueryTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X80.ParamNum = 2;
jTNE_0X80.ParamList = new byte[] {0x01,0x02 };
var hex = JTNESerializer.Serialize(jTNE_0X80).ToHexString();
Assert.Equal("130116173738020102", hex);
}

[Fact]
public void Test2()
{
var data = "130116173738020102".ToHexBytes();
JTNE_0x80 jTNE_0X80 = JTNESerializer.Deserialize<JTNE_0x80>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X80.QueryTime);
Assert.Equal(2, jTNE_0X80.ParamNum);
Assert.Equal(new byte[] { 0x01, 0x02 }, jTNE_0X80.ParamList);
}
}
}

+ 34
- 0
src/JTNE.Protocol.Test/MessageBody/JTNE_0x80_DeviceTest.cs Просмотреть файл

@@ -0,0 +1,34 @@
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x80_DeviceTest
{
[Fact]
public void Test1()
{
JTNE_0x80_Device jTNE_0X80_Device = new JTNE_0x80_Device();
jTNE_0X80_Device.QueryTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X80_Device.ParamNum = 2;
jTNE_0X80_Device.ParamList = new byte[] {0x01,0x02 };
var hex = JTNESerializer_Device.Serialize(jTNE_0X80_Device).ToHexString();
Assert.Equal("130116173738020102", hex);
}

[Fact]
public void Test2()
{
var data = "130116173738020102".ToHexBytes();
JTNE_0x80_Device jTNE_0X80_Device
= JTNESerializer_Device.Deserialize<JTNE_0x80_Device>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X80_Device.QueryTime);
Assert.Equal(2, jTNE_0X80_Device.ParamNum);
Assert.Equal(new byte[] { 0x01, 0x02 }, jTNE_0X80_Device.ParamList);
}
}
}

src/JTNE.Protocol.Test/MessageBody/JTNE_0x81_CustomBodyTest.cs → src/JTNE.Protocol.Test/MessageBody/JTNE_0x81_CustomBody_DeviceTest.cs Просмотреть файл

@@ -9,100 +9,100 @@ using JTNE.Protocol.Attributes;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x81_CustomBodyTest
public class JTNE_0x81_CustomBody_DeviceTest
{
[Fact]
public void Test1()
{
JTNEGlobalConfigs.Instance.Register_JTNE0x81CustomBody(0x80, typeof(JTNE_0x81_0x80));
JTNEGlobalConfigs.Instance.Register_JTNE0x81CustomBody(0x81, typeof(JTNE_0x81_0x81));
JTNEGlobalConfigs.Instance.Register_JTNE0x81CustomBody(0x80, typeof(JTNE_0x81_0x80_Device));
JTNEGlobalConfigs.Instance.Register_JTNE0x81CustomBody(0x81, typeof(JTNE_0x81_0x81_Device));
JTNEGlobalConfigs.Instance.Register_JTNE0x81CustomDepenedBody(0x81, 0x80);




JTNE_0x81 jTNE_0X81 = new JTNE_0x81();
JTNE_0x81_Device jTNE_0X81 = new JTNE_0x81_Device();
jTNE_0X81.OperateTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X81.ParamNum = 2;
jTNE_0X81.ParamList = new List<JTNE_0x81_Body> {
new JTNE_0x81_0x80{
jTNE_0X81.ParamList = new List<JTNE_0x81_Body_Device> {
new JTNE_0x81_0x80_Device{
ParamValue=6
},
new JTNE_0x81_0x81{
new JTNE_0x81_0x81_Device{
ParamLength=6,
ParamValue=new byte[]{ 1,2,3,4,5,6 }
}
};
var hex = JTNESerializer.Serialize(jTNE_0X81).ToHexString();
var hex = JTNESerializer_Device.Serialize(jTNE_0X81).ToHexString();
Assert.Equal("13011617373802800681010203040506", hex);
}
[Fact]
public void Test1_1()
{
JTNEGlobalConfigs.Instance.Register_JTNE0x81CustomBody(0x80, typeof(JTNE_0x81_0x80));
JTNEGlobalConfigs.Instance.Register_JTNE0x81CustomBody(0x81, typeof(JTNE_0x81_0x81));
JTNEGlobalConfigs.Instance.Register_JTNE0x81CustomBody(0x80, typeof(JTNE_0x81_0x80_Device));
JTNEGlobalConfigs.Instance.Register_JTNE0x81CustomBody(0x81, typeof(JTNE_0x81_0x81_Device));
JTNEGlobalConfigs.Instance.Register_JTNE0x81CustomDepenedBody(0x81, 0x80);

var data = "13011617373802800681010203040506".ToHexBytes();
JTNE_0x81 jTNE_0X81 = JTNESerializer.Deserialize<JTNE_0x81>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X81.OperateTime);
Assert.Equal(jTNE_0X81.ParamList.Count, jTNE_0X81.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new List<JTNE_0x81_Body> {
new JTNE_0x81_0x80{
JTNE_0x81_Device jTNE_0X81_Device = JTNESerializer_Device.Deserialize<JTNE_0x81_Device>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X81_Device.OperateTime);
Assert.Equal(jTNE_0X81_Device.ParamList.Count, jTNE_0X81_Device.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new List<JTNE_0x81_Body_Device> {
new JTNE_0x81_0x80_Device{
ParamValue=6
},
new JTNE_0x81_0x81{
new JTNE_0x81_0x81_Device{
ParamLength=6,
ParamValue=new byte[]{ 1,2,3,4,5,6 }
}
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0X81.ParamList));
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0X81_Device.ParamList));
}
}
[JTNEFormatter(typeof(JTNE_0x81_0x80Formatter))]
public class JTNE_0x81_0x80 : JTNE_0x81_Body
[JTNEFormatter(typeof(JTNE_0x81_0x80_Device_Formatter))]
public class JTNE_0x81_0x80_Device : JTNE_0x81_Body_Device
{
public override byte ParamId { get; set; }= 0x80;
public override byte ParamLength { get; set; } = 1;
public byte ParamValue { get; set; }
}
[JTNEFormatter(typeof(JTNE_0x81_0x81Formatter))]
public class JTNE_0x81_0x81 : JTNE_0x81_Body
[JTNEFormatter(typeof(JTNE_0x81_0x81_Device_Formatter))]
public class JTNE_0x81_0x81_Device : JTNE_0x81_Body_Device
{
public override byte ParamId { get; set; } = 0x81;
public override byte ParamLength { get; set; }
public byte[] ParamValue { get; set; }
}

public class JTNE_0x81_0x80Formatter : IJTNEFormatter<JTNE_0x81_0x80>
public class JTNE_0x81_0x80_Device_Formatter : IJTNEFormatter<JTNE_0x81_0x80_Device>
{
public JTNE_0x81_0x80 Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
public JTNE_0x81_0x80_Device Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x81_0x80 jTNE_0x81_0x80 = new JTNE_0x81_0x80();
jTNE_0x81_0x80.ParamValue = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
JTNE_0x81_0x80_Device jTNE_0x81_0x80_Device = new JTNE_0x81_0x80_Device();
jTNE_0x81_0x80_Device.ParamValue = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
readSize = offset;
return jTNE_0x81_0x80;
return jTNE_0x81_0x80_Device;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x81_0x80 value)
public int Serialize(ref byte[] bytes, int offset, JTNE_0x81_0x80_Device value)
{
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.ParamValue);
return offset;
}
}
public class JTNE_0x81_0x81Formatter : IJTNEFormatter<JTNE_0x81_0x81>
public class JTNE_0x81_0x81_Device_Formatter : IJTNEFormatter<JTNE_0x81_0x81_Device>
{
public JTNE_0x81_0x81 Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
public JTNE_0x81_0x81_Device Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x81_0x81 jTNE_0x81_0x81 = new JTNE_0x81_0x81();
jTNE_0x81_0x81.ParamValue = JTNEBinaryExtensions.ReadBytesLittle(bytes, ref offset);
jTNE_0x81_0x81.ParamLength = (byte)bytes.Length;
JTNE_0x81_0x81_Device jTNE_0x81_0x81_Device = new JTNE_0x81_0x81_Device();
jTNE_0x81_0x81_Device.ParamValue = JTNEBinaryExtensions.ReadBytesLittle(bytes, ref offset);
jTNE_0x81_0x81_Device.ParamLength = (byte)bytes.Length;
readSize = offset;
return jTNE_0x81_0x81;
return jTNE_0x81_0x81_Device;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x81_0x81 value)
public int Serialize(ref byte[] bytes, int offset, JTNE_0x81_0x81_Device value)
{
offset += JTNEBinaryExtensions.WriteBytesLittle(bytes, offset, value.ParamValue);
return offset;

src/JTNE.Protocol.Test/MessageBody/JTNE_0x81Test.cs → src/JTNE.Protocol.Test/MessageBody/JTNE_0x81_DeviceTest.cs Просмотреть файл

@@ -7,22 +7,22 @@ using JTNE.Protocol.Extensions;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x81Test
public class JTNE_0x81_DeviceTest
{
[Fact]
public void Test1()
{
JTNE_0x81 jTNE_0X81 = new JTNE_0x81();
jTNE_0X81.OperateTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X81.ParamNum = 1;
jTNE_0X81.ParamList = new List<JTNE_0x81_Body> {
new JTNE_0x81_0x01{
JTNE_0x81_Device jTNE_0X81_Device = new JTNE_0x81_Device();
jTNE_0X81_Device.OperateTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X81_Device.ParamNum = 1;
jTNE_0X81_Device.ParamList = new List<JTNE_0x81_Body_Device> {
new JTNE_0x81_0x01_Device{
ParamId=0x01,
ParamLength=2,
ParamValue=10
}
};
var hex = JTNESerializer.Serialize(jTNE_0X81).ToHexString();
var hex = JTNESerializer_Device.Serialize(jTNE_0X81_Device).ToHexString();
Assert.Equal("1301161737380101000A", hex);
}

@@ -30,30 +30,30 @@ namespace JTNE.Protocol.Test.MessageBody
public void Test1_1()
{
var data = "1301161737380101000A".ToHexBytes();
JTNE_0x81 jTNE_0X81 = JTNESerializer.Deserialize<JTNE_0x81>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X81.OperateTime);
Assert.Equal(1, jTNE_0X81.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject( new JTNE_0x81_0x01
JTNE_0x81_Device jTNE_0X81_Device = JTNESerializer_Device.Deserialize<JTNE_0x81_Device>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X81_Device.OperateTime);
Assert.Equal(1, jTNE_0X81_Device.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject( new JTNE_0x81_0x01_Device
{
ParamId = 0x01,
ParamLength = 2,
ParamValue = 10
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0X81.ParamList[0] ));
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0X81_Device.ParamList[0] ));
}
[Fact]
public void Test2()
{
JTNE_0x81 jTNE_0X81 = new JTNE_0x81();
jTNE_0X81.OperateTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X81.ParamNum = 1;
jTNE_0X81.ParamList = new List<JTNE_0x81_Body> {
new JTNE_0x81_0x02{
JTNE_0x81_Device jTNE_0X81_Device = new JTNE_0x81_Device();
jTNE_0X81_Device.OperateTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X81_Device.ParamNum = 1;
jTNE_0X81_Device.ParamList = new List<JTNE_0x81_Body_Device> {
new JTNE_0x81_0x02_Device{
ParamId=0x02,
ParamLength=2,
ParamValue=20
}
};
var hex = JTNESerializer.Serialize(jTNE_0X81).ToHexString();
var hex = JTNESerializer_Device.Serialize(jTNE_0X81_Device).ToHexString();
Assert.Equal("13011617373801020014", hex);
}

@@ -61,33 +61,33 @@ namespace JTNE.Protocol.Test.MessageBody
public void Test2_1()
{
var data = "13011617373801020014".ToHexBytes();
JTNE_0x81 jTNE_0X81 = JTNESerializer.Deserialize<JTNE_0x81>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X81.OperateTime);
Assert.Equal(1, jTNE_0X81.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new JTNE_0x81_0x02
JTNE_0x81_Device jTNE_0X81_Device = JTNESerializer_Device.Deserialize<JTNE_0x81_Device>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X81_Device.OperateTime);
Assert.Equal(1, jTNE_0X81_Device.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new JTNE_0x81_0x02_Device
{
ParamId = 0x02,
ParamLength = 2,
ParamValue = 20
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0X81.ParamList[0]));
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0X81_Device.ParamList[0]));
}
[Fact]
public void Test4()
{
JTNE_0x81 jTNE_0X81 = new JTNE_0x81();
jTNE_0X81.OperateTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X81.ParamList = new List<JTNE_0x81_Body> {
new JTNE_0x81_0x04{
JTNE_0x81_Device jTNE_0X81_Device = new JTNE_0x81_Device();
jTNE_0X81_Device.OperateTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X81_Device.ParamList = new List<JTNE_0x81_Body_Device> {
new JTNE_0x81_0x04_Device{
ParamValue=8
},new JTNE_0x81_0x05{
},new JTNE_0x81_0x05_Device{
ParamValue=new byte[]{ 1, 2, 3, 4, 5, 6, 7, 8 }
},
new JTNE_0x81_0x06{
new JTNE_0x81_0x06_Device{
ParamValue=40
}
};
jTNE_0X81.ParamNum =(byte)jTNE_0X81.ParamList.Count;
var hex = JTNESerializer.Serialize(jTNE_0X81).ToHexString();
jTNE_0X81_Device.ParamNum =(byte)jTNE_0X81_Device.ParamList.Count;
var hex = JTNESerializer_Device.Serialize(jTNE_0X81_Device).ToHexString();
Assert.Equal("130116173738030408050102030405060708060028", hex);
}

@@ -95,39 +95,39 @@ namespace JTNE.Protocol.Test.MessageBody
public void Test4_1()
{
var data = "130116173738030408050102030405060708060028".ToHexBytes();
JTNE_0x81 jTNE_0X81 = JTNESerializer.Deserialize<JTNE_0x81>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X81.OperateTime);
Assert.Equal(jTNE_0X81.ParamList.Count, jTNE_0X81.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new List<JTNE_0x81_Body> {
new JTNE_0x81_0x04{
JTNE_0x81_Device jTNE_0X81_Device = JTNESerializer_Device.Deserialize<JTNE_0x81_Device>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X81_Device.OperateTime);
Assert.Equal(jTNE_0X81_Device.ParamList.Count, jTNE_0X81_Device.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new List<JTNE_0x81_Body_Device> {
new JTNE_0x81_0x04_Device{
ParamValue=8
},new JTNE_0x81_0x05{
},new JTNE_0x81_0x05_Device{
ParamValue=new byte[]{1,2,3,4,5,6,7,8 },
ParamLength=8
}, new JTNE_0x81_0x06{
}, new JTNE_0x81_0x06_Device{
ParamValue=40
}
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0X81.ParamList));
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0X81_Device.ParamList));
}


[Fact]
public void Test5()
{
JTNE_0x81 jTNE_0X81 = new JTNE_0x81();
jTNE_0X81.OperateTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X81.ParamList = new List<JTNE_0x81_Body> {
new JTNE_0x81_0x0D{
JTNE_0x81_Device jTNE_0X81_Device = new JTNE_0x81_Device();
jTNE_0X81_Device.OperateTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X81_Device.ParamList = new List<JTNE_0x81_Body_Device> {
new JTNE_0x81_0x0D_Device{
ParamValue=8
},new JTNE_0x81_0x0E{
},new JTNE_0x81_0x0E_Device{
ParamValue=new byte[]{ 1, 2, 3, 4, 5, 6, 7, 8 }
},
new JTNE_0x81_0x0F{
new JTNE_0x81_0x0F_Device{
ParamValue=40
}
};
jTNE_0X81.ParamNum = (byte)jTNE_0X81.ParamList.Count;
var hex = JTNESerializer.Serialize(jTNE_0X81).ToHexString();
jTNE_0X81_Device.ParamNum = (byte)jTNE_0X81_Device.ParamList.Count;
var hex = JTNESerializer_Device.Serialize(jTNE_0X81_Device).ToHexString();
Assert.Equal("130116173738030D080E01020304050607080F0028", hex);
}

@@ -135,36 +135,36 @@ namespace JTNE.Protocol.Test.MessageBody
public void Test5_1()
{
var data = "130116173738030D080E01020304050607080F0028".ToHexBytes();
JTNE_0x81 jTNE_0X81 = JTNESerializer.Deserialize<JTNE_0x81>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X81.OperateTime);
Assert.Equal(jTNE_0X81.ParamList.Count, jTNE_0X81.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new List<JTNE_0x81_Body> {
new JTNE_0x81_0x0D{
JTNE_0x81_Device jTNE_0X81_Device = JTNESerializer_Device.Deserialize<JTNE_0x81_Device>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X81_Device.OperateTime);
Assert.Equal(jTNE_0X81_Device.ParamList.Count, jTNE_0X81_Device.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new List<JTNE_0x81_Body_Device> {
new JTNE_0x81_0x0D_Device{
ParamValue=8
},new JTNE_0x81_0x0E{
},new JTNE_0x81_0x0E_Device{
ParamValue=new byte[]{1,2,3,4,5,6,7,8 },
ParamLength=8
}, new JTNE_0x81_0x0F{
}, new JTNE_0x81_0x0F_Device{
ParamValue=40
}
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0X81.ParamList));
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0X81_Device.ParamList));
}


[Fact]
public void Test3()
{
JTNE_0x81 jTNE_0X81 = new JTNE_0x81();
jTNE_0X81.OperateTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X81.ParamNum = 1;
jTNE_0X81.ParamList = new List<JTNE_0x81_Body> {
new JTNE_0x81_0x03{
JTNE_0x81_Device jTNE_0X81_Device = new JTNE_0x81_Device();
jTNE_0X81_Device.OperateTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X81_Device.ParamNum = 1;
jTNE_0X81_Device.ParamList = new List<JTNE_0x81_Body_Device> {
new JTNE_0x81_0x03_Device{
ParamId=0x03,
ParamLength=2,
ParamValue=30
}
};
var hex = JTNESerializer.Serialize(jTNE_0X81).ToHexString();
var hex = JTNESerializer_Device.Serialize(jTNE_0X81_Device).ToHexString();
Assert.Equal("1301161737380103001E", hex);
}

@@ -172,61 +172,61 @@ namespace JTNE.Protocol.Test.MessageBody
public void Test3_1()
{
var data = "1301161737380103001E".ToHexBytes();
JTNE_0x81 jTNE_0X81 = JTNESerializer.Deserialize<JTNE_0x81>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X81.OperateTime);
Assert.Equal(1, jTNE_0X81.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new JTNE_0x81_0x03
JTNE_0x81_Device jTNE_0X81_Device = JTNESerializer_Device.Deserialize<JTNE_0x81_Device>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X81_Device.OperateTime);
Assert.Equal(1, jTNE_0X81_Device.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new JTNE_0x81_0x03_Device
{
ParamId = 0x03,
ParamLength = 2,
ParamValue = 30
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0X81.ParamList[0]));
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0X81_Device.ParamList[0]));
}
[Fact]
public void TestAll()
{
JTNE_0x81 jTNE_0X81 = new JTNE_0x81();
jTNE_0X81.OperateTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X81.ParamNum = 12;
jTNE_0X81.ParamList = new List<JTNE_0x81_Body> {
new JTNE_0x81_0x01{
JTNE_0x81_Device jTNE_0X81_Device = new JTNE_0x81_Device();
jTNE_0X81_Device.OperateTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X81_Device.ParamNum = 12;
jTNE_0X81_Device.ParamList = new List<JTNE_0x81_Body_Device> {
new JTNE_0x81_0x01_Device{
ParamValue=10
},
new JTNE_0x81_0x02{
new JTNE_0x81_0x02_Device{
ParamValue=20
},
new JTNE_0x81_0x03{
new JTNE_0x81_0x03_Device{
ParamValue=30
},
new JTNE_0x81_0x06{
new JTNE_0x81_0x06_Device{
ParamValue=40
},
new JTNE_0x81_0x07{
new JTNE_0x81_0x07_Device{
ParamValue="abcde"
},
new JTNE_0x81_0x08{
new JTNE_0x81_0x08_Device{
ParamValue="12345"
},
new JTNE_0x81_0x09{
new JTNE_0x81_0x09_Device{
ParamValue=50
},
new JTNE_0x81_0x0A{
new JTNE_0x81_0x0A_Device{
ParamValue=60
},
new JTNE_0x81_0x0B{
new JTNE_0x81_0x0B_Device{
ParamValue=70
},
new JTNE_0x81_0x0C{
new JTNE_0x81_0x0C_Device{
ParamValue=80
},
new JTNE_0x81_0x0F{
new JTNE_0x81_0x0F_Device{
ParamValue=90
},
new JTNE_0x81_0x10{
new JTNE_0x81_0x10_Device{
ParamValue=0x01
}
};
var hex = JTNESerializer.Serialize(jTNE_0X81).ToHexString();
var hex = JTNESerializer_Device.Serialize(jTNE_0X81_Device).ToHexString();
Assert.Equal("1301161737380C01000A02001403001E06002807616263646508313233343509320A003C0B00460C500F005A1001", hex);
}

@@ -234,47 +234,47 @@ namespace JTNE.Protocol.Test.MessageBody
public void TestAll_1()
{
var data = "1301161737380C01000A02001403001E06002807616263646508313233343509320A003C0B00460C500F005A1001".ToHexBytes();
JTNE_0x81 jTNE_0X81 = JTNESerializer.Deserialize<JTNE_0x81>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X81.OperateTime);
Assert.Equal(12, jTNE_0X81.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new List<JTNE_0x81_Body> {
new JTNE_0x81_0x01{
JTNE_0x81_Device jTNE_0X81_Device = JTNESerializer_Device.Deserialize<JTNE_0x81_Device>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X81_Device.OperateTime);
Assert.Equal(12, jTNE_0X81_Device.ParamNum);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new List<JTNE_0x81_Body_Device> {
new JTNE_0x81_0x01_Device{
ParamValue=10
},
new JTNE_0x81_0x02{
new JTNE_0x81_0x02_Device{
ParamValue=20
},
new JTNE_0x81_0x03{
new JTNE_0x81_0x03_Device{
ParamValue=30
},
new JTNE_0x81_0x06{
new JTNE_0x81_0x06_Device{
ParamValue=40
},
new JTNE_0x81_0x07{
new JTNE_0x81_0x07_Device{
ParamValue="abcde"
},
new JTNE_0x81_0x08{
new JTNE_0x81_0x08_Device{
ParamValue="12345"
},
new JTNE_0x81_0x09{
new JTNE_0x81_0x09_Device{
ParamValue=50
},
new JTNE_0x81_0x0A{
new JTNE_0x81_0x0A_Device{
ParamValue=60
},
new JTNE_0x81_0x0B{
new JTNE_0x81_0x0B_Device{
ParamValue=70
},
new JTNE_0x81_0x0C{
new JTNE_0x81_0x0C_Device{
ParamValue=80
},
new JTNE_0x81_0x0F{
new JTNE_0x81_0x0F_Device{
ParamValue=90
},
new JTNE_0x81_0x10{
new JTNE_0x81_0x10_Device{
ParamValue=0x01
}
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0X81.ParamList));
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0X81_Device.ParamList));
}
}
}

src/JTNE.Protocol.Test/MessageBody/JTNE_0x82_CustomBodyTest.cs → src/JTNE.Protocol.Test/MessageBody/JTNE_0x82_CustomBody_DeviceTest.cs Просмотреть файл

@@ -9,57 +9,57 @@ using JTNE.Protocol.Attributes;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x82_CustomBodyTest
public class JTNE_0x82_CustomBody_DeviceTest
{
[Fact]
public void Test1()
{
JTNEGlobalConfigs.Instance.Register_JTNE0x82CustomBody(0x80, typeof(JTNE_0x82_0x80));
JTNEGlobalConfigs.Instance.Register_JTNE0x82CustomBody(0x80, typeof(JTNE_0x82_0x80_Device));

JTNE_0x82 jTNE_0X82 = new JTNE_0x82();
jTNE_0X82.ControlTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X82.ParamID = 0x80;
jTNE_0X82.Parameter = new JTNE_0x82_0x80
JTNE_0x82_Device jTNE_0X82_Device = new JTNE_0x82_Device();
jTNE_0X82_Device.ControlTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X82_Device.ParamID = 0x80;
jTNE_0X82_Device.Parameter = new JTNE_0x82_0x80_Device
{
ParamValue=100
};
var hex = JTNESerializer.Serialize(jTNE_0X82).ToHexString();
var hex = JTNESerializer_Device.Serialize(jTNE_0X82_Device).ToHexString();
Assert.Equal("1301161737388064", hex);
}
[Fact]
public void Test1_1()
{
JTNEGlobalConfigs.Instance.Register_JTNE0x82CustomBody(0x80, typeof(JTNE_0x82_0x80));
JTNEGlobalConfigs.Instance.Register_JTNE0x82CustomBody(0x80, typeof(JTNE_0x82_0x80_Device));

var data = "1301161737388064".ToHexBytes();
JTNE_0x82 jTNE_0x82 = JTNESerializer.Deserialize<JTNE_0x82>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0x82.ControlTime);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new JTNE_0x82_0x80
JTNE_0x82_Device jTNE_0x82_Device = JTNESerializer_Device.Deserialize<JTNE_0x82_Device>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0x82_Device.ControlTime);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new JTNE_0x82_0x80_Device
{
ParamValue = 100
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0x82.Parameter));
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0x82_Device.Parameter));
}
}
[JTNEFormatter(typeof(JTNE_0x82_0x80Formatter))]
public class JTNE_0x82_0x80 : JTNE_0x82_Body
[JTNEFormatter(typeof(JTNE_0x82_0x80_Device_Formatter))]
public class JTNE_0x82_0x80_Device : JTNE_0x82_Body_Device
{
public override byte ParamId { get; set; }= 0x80;
public override byte ParamLength { get; set; } = 1;
public byte ParamValue { get; set; }
}

public class JTNE_0x82_0x80Formatter : IJTNEFormatter<JTNE_0x82_0x80>
public class JTNE_0x82_0x80_Device_Formatter : IJTNEFormatter<JTNE_0x82_0x80_Device>
{
public JTNE_0x82_0x80 Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
public JTNE_0x82_0x80_Device Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x82_0x80 jTNE_0x82_0x80 = new JTNE_0x82_0x80();
jTNE_0x82_0x80.ParamValue = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
JTNE_0x82_0x80_Device jTNE_0x82_0x80_Device = new JTNE_0x82_0x80_Device();
jTNE_0x82_0x80_Device.ParamValue = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
readSize = offset;
return jTNE_0x82_0x80;
return jTNE_0x82_0x80_Device;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x82_0x80 value)
public int Serialize(ref byte[] bytes, int offset, JTNE_0x82_0x80_Device value)
{
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.ParamValue);
return offset;

src/JTNE.Protocol.Test/MessageBody/JTNE_0x82Test.cs → src/JTNE.Protocol.Test/MessageBody/JTNE_0x82_DeviceTest.cs Просмотреть файл

@@ -8,15 +8,15 @@ using System.Linq;

namespace JTNE.Protocol.Test.MessageBody
{
public class JTNE_0x82Test
public class JTNE_0x82_DeviceTest
{
[Fact]
public void Test1()
{
JTNE_0x82 jTNE_0X82 = new JTNE_0x82();
jTNE_0X82.ControlTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X82.ParamID =0x02;
var hex = JTNESerializer.Serialize(jTNE_0X82).ToHexString();
JTNE_0x82_Device jTNE_0X82_Device = new JTNE_0x82_Device();
jTNE_0X82_Device.ControlTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X82_Device.ParamID =0x02;
var hex = JTNESerializer_Device.Serialize(jTNE_0X82_Device).ToHexString();
Assert.Equal("13011617373802", hex);
}

@@ -24,18 +24,18 @@ namespace JTNE.Protocol.Test.MessageBody
public void Test2()
{
var data = "13011617373802".ToHexBytes();
JTNE_0x82 jTNE_0X82 = JTNESerializer.Deserialize<JTNE_0x82>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X82.ControlTime);
Assert.Equal(0x02, jTNE_0X82.ParamID);
JTNE_0x82_Device jTNE_0X82_Device = JTNESerializer_Device.Deserialize<JTNE_0x82_Device>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X82_Device.ControlTime);
Assert.Equal(0x02, jTNE_0X82_Device.ParamID);
}

[Fact]
public void Test3()
{
JTNE_0x82 jTNE_0X82 = new JTNE_0x82();
jTNE_0X82.ControlTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X82.ParamID = 0x01;
jTNE_0X82.Parameter = new JTNE_0x82_0x01 {
JTNE_0x82_Device jTNE_0X82_Device = new JTNE_0x82_Device();
jTNE_0X82_Device.ControlTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X82_Device.ParamID = 0x01;
jTNE_0X82_Device.Parameter = new JTNE_0x82_0x01_Device {
UpgradeCommand = new Metadata.UpgradeCommand {
DialName="TK",
DialUserName="TKUser",
@@ -49,7 +49,7 @@ namespace JTNE.Protocol.Test.MessageBody
ConnectTimeLimit=10
}
};
var hex = JTNESerializer.Serialize(jTNE_0X82).ToHexString();
var hex = JTNESerializer_Device.Serialize(jTNE_0X82_Device).ToHexString();
Assert.Equal("13011617373801687474703A2F2F7777772E62616964752E636F6D3A383338333B544B3B544B557365723B544B5077643B62642E636F6D3B383338333B4D616E7566616374757265724E616D653B322E303B312E303B3130", hex);
}

@@ -57,10 +57,10 @@ namespace JTNE.Protocol.Test.MessageBody
public void Test4()
{
var data = "13011617373801687474703A2F2F7777772E62616964752E636F6D3A383338333B544B3B544B557365723B544B5077643B62642E636F6D3B383338333B4D616E7566616374757265724E616D653B322E303B312E303B3130".ToHexBytes();
JTNE_0x82 jTNE_0X82 = JTNESerializer.Deserialize<JTNE_0x82>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X82.ControlTime);
Assert.Equal(0x01, jTNE_0X82.ParamID);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new JTNE_0x82_0x01
JTNE_0x82_Device jTNE_0X82_Device = JTNESerializer_Device.Deserialize<JTNE_0x82_Device>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X82_Device.ControlTime);
Assert.Equal(0x01, jTNE_0X82_Device.ParamID);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new JTNE_0x82_0x01_Device
{
UpgradeCommand = new Metadata.UpgradeCommand
{
@@ -75,22 +75,22 @@ namespace JTNE.Protocol.Test.MessageBody
ServerPort = 8383,
ConnectTimeLimit = 10
}
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0X82.Parameter));
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0X82_Device.Parameter));
}

[Fact]
public void Test5()
{
JTNE_0x82 jTNE_0X82 = new JTNE_0x82();
jTNE_0X82.ControlTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X82.ParamID = 0x06;
jTNE_0X82.Parameter = new JTNE_0x82_0x06
JTNE_0x82_Device jTNE_0X82_Device = new JTNE_0x82_Device();
jTNE_0X82_Device.ControlTime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X82_Device.ParamID = 0x06;
jTNE_0X82_Device.Parameter = new JTNE_0x82_0x06_Device
{
AlarmCommand=new Metadata.AlarmCommand {
AlarmLevel= Enums.JTNEAlarmLevel.一级报警
}
};
var hex = JTNESerializer.Serialize(jTNE_0X82).ToHexString();
var hex = JTNESerializer_Device.Serialize(jTNE_0X82_Device).ToHexString();
Assert.Equal("1301161737380601", hex);
}

@@ -98,16 +98,16 @@ namespace JTNE.Protocol.Test.MessageBody
public void Test6()
{
var data = "1301161737380601".ToHexBytes();
JTNE_0x82 jTNE_0X82 = JTNESerializer.Deserialize<JTNE_0x82>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X82.ControlTime);
Assert.Equal(0x06, jTNE_0X82.ParamID);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new JTNE_0x82_0x06
JTNE_0x82_Device jTNE_0X82_Device = JTNESerializer_Device.Deserialize<JTNE_0x82_Device>(data);
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X82_Device.ControlTime);
Assert.Equal(0x06, jTNE_0X82_Device.ParamID);
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(new JTNE_0x82_0x06_Device
{
AlarmCommand = new Metadata.AlarmCommand
{
AlarmLevel = Enums.JTNEAlarmLevel.一级报警
}
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0X82.Parameter));
}), Newtonsoft.Json.JsonConvert.SerializeObject(jTNE_0X82_Device.Parameter));
}
}
}

src/JTNE.Protocol.Test/Package/JTNE_0x01_PackageTest.cs → src/JTNE.Protocol.Test/Package/JTNE_0x01_Package_DeviceTest.cs Просмотреть файл

@@ -9,28 +9,28 @@ using JTNE.Protocol.Internal;

namespace JTNE.Protocol.Test.Package
{
public class JTNE_0x01_PackageTest
public class JTNE_0x01_Package_DeviceTest
{
[Fact]
public void Test1()
{
JTNEPackage jTNEPackage = new JTNEPackage();
JTNEPackage_Device jTNEPackage = new JTNEPackage_Device();
jTNEPackage.AskId = JTNEAskId.CMD.ToByteValue();
jTNEPackage.MsgId = JTNEMsgId.login.ToByteValue();
jTNEPackage.MsgId = JTNEMsgId_Device.login.ToByteValue();
jTNEPackage.VIN = "123456789";
JTNE_0x01 jTNE_0X01 = new JTNE_0x01();
jTNE_0X01.PDATime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X01.LoginNum = 1;
jTNE_0X01.BatteryLength = 0x04;
jTNE_0X01.SIM = "12345678998765432100";
jTNE_0X01.BatteryNos = new List<string>()
JTNE_0x01_Device jTNE_0X01_Device = new JTNE_0x01_Device();
jTNE_0X01_Device.PDATime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X01_Device.LoginNum = 1;
jTNE_0X01_Device.BatteryLength = 0x04;
jTNE_0X01_Device.SIM = "12345678998765432100";
jTNE_0X01_Device.BatteryNos = new List<string>()
{
"1234",
"4567",
"9870"
};
jTNEPackage.Bodies = jTNE_0X01;
var hex = JTNESerializer.Serialize(jTNEPackage).ToHexString();
jTNEPackage.Bodies = jTNE_0X01_Device;
var hex = JTNESerializer_Device.Serialize(jTNEPackage).ToHexString();
Assert.Equal("232301FE313233343536373839000000000000000001002A130116173738000131323334353637383939383736353433323130300304313233343435363739383730FD", hex);
}

@@ -38,20 +38,20 @@ namespace JTNE.Protocol.Test.Package
public void Test2()
{
var data = "232301FE313233343536373839000000000000000001002A130116173738000131323334353637383939383736353433323130300304313233343435363739383730FD".ToHexBytes();
JTNEPackage jTNEPackage = JTNESerializer.Deserialize(data);
JTNEPackage_Device jTNEPackage = JTNESerializer_Device.Deserialize(data);
Assert.Equal(JTNEAskId.CMD.ToByteValue(), jTNEPackage.AskId);
Assert.Equal(JTNEMsgId.login.ToByteValue(), jTNEPackage.MsgId);
Assert.Equal(JTNEMsgId_Device.login.ToByteValue(), jTNEPackage.MsgId);
Assert.Equal("123456789", jTNEPackage.VIN);

JTNE_0x01 jTNE_0X01 = jTNEPackage.Bodies as JTNE_0x01;
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X01.PDATime);
Assert.Equal(1, jTNE_0X01.LoginNum);
Assert.Equal(0x04, jTNE_0X01.BatteryLength);
Assert.Equal("12345678998765432100", jTNE_0X01.SIM);
Assert.Equal(3, jTNE_0X01.BatteryCount);
Assert.Equal("1234", jTNE_0X01.BatteryNos[0]);
Assert.Equal("4567", jTNE_0X01.BatteryNos[1]);
Assert.Equal("9870", jTNE_0X01.BatteryNos[2]);
JTNE_0x01_Device jTNE_0X01_Device = jTNEPackage.Bodies as JTNE_0x01_Device;
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X01_Device.PDATime);
Assert.Equal(1, jTNE_0X01_Device.LoginNum);
Assert.Equal(0x04, jTNE_0X01_Device.BatteryLength);
Assert.Equal("12345678998765432100", jTNE_0X01_Device.SIM);
Assert.Equal(3, jTNE_0X01_Device.BatteryCount);
Assert.Equal("1234", jTNE_0X01_Device.BatteryNos[0]);
Assert.Equal("4567", jTNE_0X01_Device.BatteryNos[1]);
Assert.Equal("9870", jTNE_0X01_Device.BatteryNos[2]);
}

[Fact]
@@ -67,24 +67,24 @@ namespace JTNE.Protocol.Test.Package
return default;
}
});
JTNEPackage jTNEPackage = new JTNEPackage();
JTNEPackage_Device jTNEPackage = new JTNEPackage_Device();
jTNEPackage.AskId = JTNEAskId.CMD.ToByteValue();
jTNEPackage.MsgId = JTNEMsgId.login.ToByteValue();
jTNEPackage.MsgId = JTNEMsgId_Device.login.ToByteValue();
jTNEPackage.VIN = "123456789";
jTNEPackage.EncryptMethod = JTNEEncryptMethod.AES128.ToByteValue();
JTNE_0x01 jTNE_0X01 = new JTNE_0x01();
jTNE_0X01.PDATime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X01.LoginNum = 1;
jTNE_0X01.BatteryLength = 0x04;
jTNE_0X01.SIM = "12345678998765432100";
jTNE_0X01.BatteryNos = new List<string>()
JTNE_0x01_Device jTNE_0X01_Device = new JTNE_0x01_Device();
jTNE_0X01_Device.PDATime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X01_Device.LoginNum = 1;
jTNE_0X01_Device.BatteryLength = 0x04;
jTNE_0X01_Device.SIM = "12345678998765432100";
jTNE_0X01_Device.BatteryNos = new List<string>()
{
"1234",
"4567",
"9870"
};
jTNEPackage.Bodies = jTNE_0X01;
var hex = JTNESerializer.Serialize(jTNEPackage).ToHexString();
jTNEPackage.Bodies = jTNE_0X01_Device;
var hex = JTNESerializer_Device.Serialize(jTNEPackage).ToHexString();
Assert.Equal("232301FE31323334353637383900000000000000000300307C9AAF67FB9408A75FAFC1C87F1E2AECD79DDAB8219016A5DD0911283922805EF450045EA3611C0D5CFBFD8F2581CEED30", hex);
}

@@ -102,21 +102,21 @@ namespace JTNE.Protocol.Test.Package
}
});
var data = "232301FE31323334353637383900000000000000000300307C9AAF67FB9408A75FAFC1C87F1E2AECD79DDAB8219016A5DD0911283922805EF450045EA3611C0D5CFBFD8F2581CEED30".ToHexBytes();
JTNEPackage jTNEPackage = JTNESerializer.Deserialize(data);
JTNEPackage_Device jTNEPackage = JTNESerializer_Device.Deserialize(data);
Assert.Equal(JTNEAskId.CMD.ToByteValue(), jTNEPackage.AskId);
Assert.Equal(JTNEMsgId.login.ToByteValue(), jTNEPackage.MsgId);
Assert.Equal(JTNEMsgId_Device.login.ToByteValue(), jTNEPackage.MsgId);
Assert.Equal("123456789", jTNEPackage.VIN);
Assert.Equal(JTNEEncryptMethod.AES128.ToByteValue(), jTNEPackage.EncryptMethod);

JTNE_0x01 jTNE_0X01 = jTNEPackage.Bodies as JTNE_0x01;
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X01.PDATime);
Assert.Equal(1, jTNE_0X01.LoginNum);
Assert.Equal(0x04, jTNE_0X01.BatteryLength);
Assert.Equal("12345678998765432100", jTNE_0X01.SIM);
Assert.Equal(3, jTNE_0X01.BatteryCount);
Assert.Equal("1234", jTNE_0X01.BatteryNos[0]);
Assert.Equal("4567", jTNE_0X01.BatteryNos[1]);
Assert.Equal("9870", jTNE_0X01.BatteryNos[2]);
JTNE_0x01_Device jTNE_0X01_Device = jTNEPackage.Bodies as JTNE_0x01_Device;
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X01_Device.PDATime);
Assert.Equal(1, jTNE_0X01_Device.LoginNum);
Assert.Equal(0x04, jTNE_0X01_Device.BatteryLength);
Assert.Equal("12345678998765432100", jTNE_0X01_Device.SIM);
Assert.Equal(3, jTNE_0X01_Device.BatteryCount);
Assert.Equal("1234", jTNE_0X01_Device.BatteryNos[0]);
Assert.Equal("4567", jTNE_0X01_Device.BatteryNos[1]);
Assert.Equal("9870", jTNE_0X01_Device.BatteryNos[2]);
}
}
}

+ 122
- 0
src/JTNE.Protocol.Test/Package/JTNE_0x01_Package_PlatformTest.cs Просмотреть файл

@@ -0,0 +1,122 @@
using JTNE.Protocol.Extensions;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Enums;
using JTNE.Protocol.MessageBody;
using JTNE.Protocol.Internal;

namespace JTNE.Protocol.Test.Package
{
public class JTNE_0x01_Package_PlatformTest
{
[Fact]
public void Test1()
{
JTNEPackage_Platform jTNEPackage_Platform = new JTNEPackage_Platform();
jTNEPackage_Platform.AskId = JTNEAskId.CMD.ToByteValue();
jTNEPackage_Platform.MsgId = JTNEMsgId_Platform.login.ToByteValue();
jTNEPackage_Platform.VIN = "123456789";
JTNE_0x01_Platform jTNE_0X01_Platform = new JTNE_0x01_Platform();
jTNE_0X01_Platform.PDATime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X01_Platform.LoginNum = 1;
jTNE_0X01_Platform.BatteryLength = 0x04;
jTNE_0X01_Platform.SIM = "12345678998765432100";
jTNE_0X01_Platform.BatteryNos = new List<string>()
{
"1234",
"4567",
"9870"
};
jTNEPackage_Platform.Bodies = jTNE_0X01_Platform;
var hex = JTNESerializer_Platform.Serialize(jTNEPackage_Platform).ToHexString();
Assert.Equal("232301FE313233343536373839000000000000000001002A130116173738000131323334353637383939383736353433323130300304313233343435363739383730FD", hex);
}

[Fact]
public void Test2()
{
var data = "232301FE313233343536373839000000000000000001002A130116173738000131323334353637383939383736353433323130300304313233343435363739383730FD".ToHexBytes();
JTNEPackage_Platform jTNEPackage_Platform = JTNESerializer_Platform.Deserialize<JTNEPackage_Platform>(data);
Assert.Equal(JTNEAskId.CMD.ToByteValue(), jTNEPackage_Platform.AskId);
Assert.Equal(JTNEMsgId_Platform.login.ToByteValue(), jTNEPackage_Platform.MsgId);
Assert.Equal("123456789", jTNEPackage_Platform.VIN);

JTNE_0x01_Platform jTNE_0X01_Platform = jTNEPackage_Platform.Bodies as JTNE_0x01_Platform;
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X01_Platform.PDATime);
Assert.Equal(1, jTNE_0X01_Platform.LoginNum);
Assert.Equal(0x04, jTNE_0X01_Platform.BatteryLength);
Assert.Equal("12345678998765432100", jTNE_0X01_Platform.SIM);
Assert.Equal(3, jTNE_0X01_Platform.BatteryCount);
Assert.Equal("1234", jTNE_0X01_Platform.BatteryNos[0]);
Assert.Equal("4567", jTNE_0X01_Platform.BatteryNos[1]);
Assert.Equal("9870", jTNE_0X01_Platform.BatteryNos[2]);
}

[Fact]
public void Test3()
{
JTNEGlobalConfigs.Instance.SetDataBodiesEncrypt((msgId) =>
{
switch (msgId)
{
case 0x03:
return new Default_AES128EncryptImpl();
default:
return default;
}
});
JTNEPackage_Platform jTNEPackage_Platform = new JTNEPackage_Platform();
jTNEPackage_Platform.AskId = JTNEAskId.CMD.ToByteValue();
jTNEPackage_Platform.MsgId = JTNEMsgId_Platform.login.ToByteValue();
jTNEPackage_Platform.VIN = "123456789";
jTNEPackage_Platform.EncryptMethod = JTNEEncryptMethod.AES128.ToByteValue();
JTNE_0x01_Platform jTNE_0X01_Platform = new JTNE_0x01_Platform();
jTNE_0X01_Platform.PDATime = DateTime.Parse("2019-01-22 23:55:56");
jTNE_0X01_Platform.LoginNum = 1;
jTNE_0X01_Platform.BatteryLength = 0x04;
jTNE_0X01_Platform.SIM = "12345678998765432100";
jTNE_0X01_Platform.BatteryNos = new List<string>()
{
"1234",
"4567",
"9870"
};
jTNEPackage_Platform.Bodies = jTNE_0X01_Platform;
var hex = JTNESerializer_Device.Serialize(jTNEPackage_Platform).ToHexString();
Assert.Equal("232301FE31323334353637383900000000000000000300307C9AAF67FB9408A75FAFC1C87F1E2AECD79DDAB8219016A5DD0911283922805EF450045EA3611C0D5CFBFD8F2581CEED30", hex);
}

[Fact]
public void Test4()
{
JTNEGlobalConfigs.Instance.SetDataBodiesEncrypt((msgId) =>
{
switch (msgId)
{
case 0x03:
return new Default_AES128EncryptImpl();
default:
return default;
}
});
var data = "232301FE31323334353637383900000000000000000300307C9AAF67FB9408A75FAFC1C87F1E2AECD79DDAB8219016A5DD0911283922805EF450045EA3611C0D5CFBFD8F2581CEED30".ToHexBytes();
JTNEPackage_Platform jTNEPackage_Platform = JTNESerializer_Platform.Deserialize(data);
Assert.Equal(JTNEAskId.CMD.ToByteValue(), jTNEPackage_Platform.AskId);
Assert.Equal(JTNEMsgId_Device.login.ToByteValue(), jTNEPackage_Platform.MsgId);
Assert.Equal("123456789", jTNEPackage_Platform.VIN);
Assert.Equal(JTNEEncryptMethod.AES128.ToByteValue(), jTNEPackage_Platform.EncryptMethod);

JTNE_0x01_Platform jTNE_0X01_Platform = jTNEPackage_Platform.Bodies as JTNE_0x01_Platform;
Assert.Equal(DateTime.Parse("2019-01-22 23:55:56"), jTNE_0X01_Platform.PDATime);
Assert.Equal(1, jTNE_0X01_Platform.LoginNum);
Assert.Equal(0x04, jTNE_0X01_Platform.BatteryLength);
Assert.Equal("12345678998765432100", jTNE_0X01_Platform.SIM);
Assert.Equal(3, jTNE_0X01_Platform.BatteryCount);
Assert.Equal("1234", jTNE_0X01_Platform.BatteryNos[0]);
Assert.Equal("4567", jTNE_0X01_Platform.BatteryNos[1]);
Assert.Equal("9870", jTNE_0X01_Platform.BatteryNos[2]);
}
}
}

+ 0
- 340
src/JTNE.Protocol.Test/Package/JTNE_0x02_PackageTest.cs Просмотреть файл

@@ -1,340 +0,0 @@
using JTNE.Protocol.Extensions;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Enums;
using JTNE.Protocol.MessageBody;
using JTNE.Protocol.Internal;

namespace JTNE.Protocol.Test.Package
{
public class JTNE_0x02_PackageTest
{
[Fact]
public void Test1()
{
JTNEPackage jTNEPackage = new JTNEPackage();
jTNEPackage.AskId = JTNEAskId.Success.ToByteValue();
jTNEPackage.MsgId = JTNEMsgId.uploadim.ToByteValue();
jTNEPackage.VIN = "123456789";
JTNE_0x02 jTNE_0X02 = new JTNE_0x02();
jTNE_0X02.Values = new Dictionary<byte, JTNE_0x02_Body>();

JTNE_0x02_0x01 jTNE_0X02_0X01 = new JTNE_0x02_0x01();
jTNE_0X02_0X01.Accelerator = 0x02;
jTNE_0X02_0X01.Brakes = 0x03;
jTNE_0X02_0X01.CarStatus = 0x04;
jTNE_0X02_0X01.ChargeStatus = 0x05;
jTNE_0X02_0X01.DCStatus = 0x06;
jTNE_0X02_0X01.OperationMode = 0x07;
jTNE_0X02_0X01.Resistance = 123;
jTNE_0X02_0X01.SOC = 0x03;
jTNE_0X02_0X01.Speed = 58;
jTNE_0X02_0X01.Stall = 0x02;
jTNE_0X02_0X01.TotalDis = 6666;
jTNE_0X02_0X01.TotalTemp = 99;
jTNE_0X02_0X01.TotalVoltage = 100;
jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x01, jTNE_0X02_0X01);

JTNE_0x02_0x02 jTNE_0X02_0X02 = new JTNE_0x02_0x02();
jTNE_0X02_0X02.Electricals = new List<Metadata.Electrical>();
Metadata.Electrical electrical1 = new Metadata.Electrical();
electrical1.ElControlTemp = 0x01;
electrical1.ElCurrent = 100;
electrical1.ElNo = 0x01;
electrical1.ElSpeed = 65;
electrical1.ElStatus = 0x02;
electrical1.ElTemp = 0x03;
electrical1.ElTorque = 55;
electrical1.ElVoltage = 236;
Metadata.Electrical electrical2 = new Metadata.Electrical();
electrical2.ElControlTemp = 0x02;
electrical2.ElCurrent = 101;
electrical2.ElNo = 0x02;
electrical2.ElSpeed = 66;
electrical2.ElStatus = 0x03;
electrical2.ElTemp = 0x05;
electrical2.ElTorque = 566;
electrical2.ElVoltage = 2136;
jTNE_0X02_0X02.Electricals.Add(electrical1);
jTNE_0X02_0X02.Electricals.Add(electrical2);
jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x02, jTNE_0X02_0X02);

JTNE_0x02_0x03 jTNE_0X02_0X03 = new JTNE_0x02_0x03();
jTNE_0X02_0X03.DCStatus = 0x02;
jTNE_0X02_0X03.FuelBatteryCurrent = 111;
jTNE_0X02_0X03.FuelBatteryVoltage = 2222;
jTNE_0X02_0X03.FuelConsumptionRate = 3222;
jTNE_0X02_0X03.HydrogenSystemMaxConcentrations = 6666;
jTNE_0X02_0X03.HydrogenSystemMaxConcentrationsNo = 0x56;
jTNE_0X02_0X03.HydrogenSystemMaxPressure = 3336;
jTNE_0X02_0X03.HydrogenSystemMaxPressureNo = 0x65;
jTNE_0X02_0X03.HydrogenSystemMaxTemp = 3355;
jTNE_0X02_0X03.HydrogenSystemMaxTempNo = 0x22;
jTNE_0X02_0X03.Temperatures = new byte[]
{
0x01,0x02,0x03
};
jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x03, jTNE_0X02_0X03);

JTNE_0x02_0x04 jTNE_0X02_0X04 = new JTNE_0x02_0x04();
jTNE_0X02_0X04.EngineStatus = 0x01;
jTNE_0X02_0X04.FuelRate = 102;
jTNE_0X02_0X04.Revs = 203;
jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x04, jTNE_0X02_0X04);

JTNE_0x02_0x05 jTNE_0X02_0X05 = new JTNE_0x02_0x05();
jTNE_0X02_0X05.Lat = 1233355;
jTNE_0X02_0X05.Lng = 3255555;
jTNE_0X02_0X05.PositioStatus = 0x01;
jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x05, jTNE_0X02_0X05);

JTNE_0x02_0x06 jTNE_0X02_0X06 = new JTNE_0x02_0x06();
jTNE_0X02_0X06.MaxTempBatteryAssemblyNo = 0x12;
jTNE_0X02_0X06.MaxTempProbeBatteryNo = 0x32;
jTNE_0X02_0X06.MaxTempProbeBatteryValue = 0x42;
jTNE_0X02_0X06.MaxVoltageBatteryAssemblyNo = 0x11;
jTNE_0X02_0X06.MaxVoltageSingleBatteryNo = 0x15;
jTNE_0X02_0X06.MaxVoltageSingleBatteryValue = 123;
jTNE_0X02_0X06.MinTempBatteryAssemblyNo = 0x32;
jTNE_0X02_0X06.MinTempProbeBatteryNo = 0x11;
jTNE_0X02_0X06.MinTempProbeBatteryValue = 0x06;
jTNE_0X02_0X06.MinVoltageBatteryAssemblyNo = 0x07;
jTNE_0X02_0X06.MinVoltageSingleBatteryNo = 0x09;
jTNE_0X02_0X06.MinVoltageSingleBatteryValue = 0x08;
jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x06, jTNE_0X02_0X06);

JTNE_0x02_0x07 jTNE_0X02_0X07 = new JTNE_0x02_0x07();
jTNE_0X02_0X07.AlarmBatteryFlag = 5533;
jTNE_0X02_0X07.AlarmLevel = 0x11;
jTNE_0X02_0X07.AlarmBatteryOthers = new List<uint>
{
1000,1001,1002
};
jTNE_0X02_0X07.AlarmEls = new List<uint>
{
2000,2001,2002
};
jTNE_0X02_0X07.AlarmEngines = new List<uint>
{
3000,3001,3002
};
jTNE_0X02_0X07.AlarmOthers = new List<uint>
{
4000,4001,4002
};
jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x07, jTNE_0X02_0X07);

JTNE_0x02_0x08 jTNE_0X02_0X08 = new JTNE_0x02_0x08();
jTNE_0X02_0X08.BatteryAssemblies = new List<Metadata.BatteryAssembly>();
Metadata.BatteryAssembly batteryAssembly1 = new Metadata.BatteryAssembly();
batteryAssembly1.BatteryAssemblyCurrent = 123;
batteryAssembly1.BatteryAssemblyNo = 0x01;
batteryAssembly1.BatteryAssemblyVoltage = 0x02;
batteryAssembly1.SingleBatteryCount = 55;
batteryAssembly1.ThisSingleBatteryBeginCount = 0x02;
batteryAssembly1.ThisSingleBatteryBeginNo = 111;
batteryAssembly1.SingleBatteryVoltages = new List<ushort> {
111,222,333
};
Metadata.BatteryAssembly batteryAssembly2 = new Metadata.BatteryAssembly();
batteryAssembly2.BatteryAssemblyCurrent = 1234;
batteryAssembly2.BatteryAssemblyNo = 0x03;
batteryAssembly2.BatteryAssemblyVoltage = 0x05;
batteryAssembly2.SingleBatteryCount = 66;
batteryAssembly2.ThisSingleBatteryBeginCount = 0x02;
batteryAssembly2.ThisSingleBatteryBeginNo = 222;
batteryAssembly2.SingleBatteryVoltages = new List<ushort> {
444,555,666
};
jTNE_0X02_0X08.BatteryAssemblies.Add(batteryAssembly1);
jTNE_0X02_0X08.BatteryAssemblies.Add(batteryAssembly2);
jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x08, jTNE_0X02_0X08);


JTNE_0x02_0x09 jTNE_0X02_0X09 = new JTNE_0x02_0x09();
jTNE_0X02_0X09.BatteryTemperatures = new List<Metadata.BatteryTemperature>();

Metadata.BatteryTemperature batteryTemperature1 = new Metadata.BatteryTemperature();
batteryTemperature1.BatteryAssemblyNo = 0x01;
batteryTemperature1.Temperatures = new byte[]
{
0x01,0x02,0x03,0x04
};

Metadata.BatteryTemperature batteryTemperature2 = new Metadata.BatteryTemperature();
batteryTemperature2.BatteryAssemblyNo = 0x02;
batteryTemperature2.Temperatures = new byte[]
{
0x05,0x06,0x07,0x08
};

jTNE_0X02_0X09.BatteryTemperatures.Add(batteryTemperature1);
jTNE_0X02_0X09.BatteryTemperatures.Add(batteryTemperature2);
jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x09, jTNE_0X02_0X09);

jTNEPackage.Bodies = jTNE_0X02;
var hex = JTNESerializer.Serialize(jTNEPackage).ToHexString();
Assert.Equal("2323020131323334353637383900000000000000000100D001040507003A00001A0A00640063030602007B02030202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502040100CB006605010031AD030012D1CB061115007B0709000832124211320607110000159D03000003E8000003E9000003EA03000007D0000007D1000007D20300000BB800000BB900000BBA0300000FA000000FA100000FA20802010002007B0037006F03006F00DE014D03000504D2004200DE0301BC022B029A0902010004010203040200040506070867", hex);
}

[Fact]
public void Test2()
{
var data = "2323020131323334353637383900000000000000000100D001040507003A00001A0A00640063030602007B02030202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502040100CB006605010031AD030012D1CB061115007B0709000832124211320607110000159D03000003E8000003E9000003EA03000007D0000007D1000007D20300000BB800000BB900000BBA0300000FA000000FA100000FA20802010002007B0037006F03006F00DE014D03000504D2004200DE0301BC022B029A0902010004010203040200040506070867".ToHexBytes();
JTNEPackage jTNEPackage = JTNESerializer.Deserialize(data);
JTNE_0x02 jTNE_0X02 = jTNEPackage.Bodies as JTNE_0x02;

JTNE_0x02_0x01 jTNE_0X02_0X01 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x01] as JTNE_0x02_0x01;
Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x01, jTNE_0X02_0X01.TypeCode);
Assert.Equal(0x02, jTNE_0X02_0X01.Accelerator);
Assert.Equal(0x03, jTNE_0X02_0X01.Brakes);
Assert.Equal(0x04, jTNE_0X02_0X01.CarStatus);
Assert.Equal(0x05, jTNE_0X02_0X01.ChargeStatus);
Assert.Equal(0x06, jTNE_0X02_0X01.DCStatus);
Assert.Equal(0x07, jTNE_0X02_0X01.OperationMode);
Assert.Equal(123, jTNE_0X02_0X01.Resistance);
Assert.Equal(0x03, jTNE_0X02_0X01.SOC);
Assert.Equal(58, jTNE_0X02_0X01.Speed);
Assert.Equal(0x02, jTNE_0X02_0X01.Stall);
Assert.Equal((uint)6666, jTNE_0X02_0X01.TotalDis);
Assert.Equal(99, jTNE_0X02_0X01.TotalTemp);
Assert.Equal(100, jTNE_0X02_0X01.TotalVoltage);


JTNE_0x02_0x02 jTNE_0X02_0X02 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x02] as JTNE_0x02_0x02;
Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x02, jTNE_0X02_0X02.TypeCode);
Assert.Equal(2, jTNE_0X02_0X02.ElectricalCount);
Metadata.Electrical electrical1 = jTNE_0X02_0X02.Electricals[0];
Assert.Equal(0x01, electrical1.ElControlTemp);
Assert.Equal(100, electrical1.ElCurrent);
Assert.Equal(0x01, electrical1.ElNo);
Assert.Equal(65, electrical1.ElSpeed);
Assert.Equal(0x02, electrical1.ElStatus);
Assert.Equal(0x03, electrical1.ElTemp);
Assert.Equal(55, electrical1.ElTorque);
Assert.Equal(236, electrical1.ElVoltage);
Metadata.Electrical electrical2 = jTNE_0X02_0X02.Electricals[1];
Assert.Equal(0x02, electrical2.ElControlTemp);
Assert.Equal(101, electrical2.ElCurrent);
Assert.Equal(0x02, electrical2.ElNo);
Assert.Equal(66, electrical2.ElSpeed);
Assert.Equal(0x03, electrical2.ElStatus);
Assert.Equal(0x05, electrical2.ElTemp);
Assert.Equal(566, electrical2.ElTorque);
Assert.Equal(2136, electrical2.ElVoltage);

JTNE_0x02_0x03 jTNE_0X02_0X03 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x03] as JTNE_0x02_0x03;

Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x03, jTNE_0X02_0X03.TypeCode);
Assert.Equal(0x02, jTNE_0X02_0X03.DCStatus);
Assert.Equal(111, jTNE_0X02_0X03.FuelBatteryCurrent);
Assert.Equal(2222, jTNE_0X02_0X03.FuelBatteryVoltage);
Assert.Equal(3222, jTNE_0X02_0X03.FuelConsumptionRate);
Assert.Equal(6666, jTNE_0X02_0X03.HydrogenSystemMaxConcentrations);
Assert.Equal(0x56, jTNE_0X02_0X03.HydrogenSystemMaxConcentrationsNo);
Assert.Equal(3336, jTNE_0X02_0X03.HydrogenSystemMaxPressure);
Assert.Equal(0x65, jTNE_0X02_0X03.HydrogenSystemMaxPressureNo);
Assert.Equal(3355, jTNE_0X02_0X03.HydrogenSystemMaxTemp);
Assert.Equal(0x22, jTNE_0X02_0X03.HydrogenSystemMaxTempNo);
Assert.Equal(new byte[] { 0x01, 0x02, 0x03 }, jTNE_0X02_0X03.Temperatures);

JTNE_0x02_0x04 jTNE_0X02_0X04 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x04] as JTNE_0x02_0x04;
Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x04, jTNE_0X02_0X04.TypeCode);
Assert.Equal(0x01, jTNE_0X02_0X04.EngineStatus);
Assert.Equal(102, jTNE_0X02_0X04.FuelRate);
Assert.Equal(203, jTNE_0X02_0X04.Revs);

JTNE_0x02_0x05 jTNE_0X02_0X05 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x05] as JTNE_0x02_0x05;
Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x05, jTNE_0X02_0X05.TypeCode);
Assert.Equal((uint)1233355, jTNE_0X02_0X05.Lat);
Assert.Equal((uint)3255555, jTNE_0X02_0X05.Lng);
Assert.Equal(0x01, jTNE_0X02_0X05.PositioStatus);


JTNE_0x02_0x06 jTNE_0X02_0X06 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x06] as JTNE_0x02_0x06;
Assert.Equal(0x12, jTNE_0X02_0X06.MaxTempBatteryAssemblyNo);
Assert.Equal(0x32, jTNE_0X02_0X06.MaxTempProbeBatteryNo);
Assert.Equal(0x42, jTNE_0X02_0X06.MaxTempProbeBatteryValue);
Assert.Equal(0x11, jTNE_0X02_0X06.MaxVoltageBatteryAssemblyNo);
Assert.Equal(0x15, jTNE_0X02_0X06.MaxVoltageSingleBatteryNo);
Assert.Equal(123, jTNE_0X02_0X06.MaxVoltageSingleBatteryValue);
Assert.Equal(0x11, jTNE_0X02_0X06.MinTempProbeBatteryNo);
Assert.Equal(0x06, jTNE_0X02_0X06.MinTempProbeBatteryValue);
Assert.Equal(0x07, jTNE_0X02_0X06.MinVoltageBatteryAssemblyNo);
Assert.Equal(0x09, jTNE_0X02_0X06.MinVoltageSingleBatteryNo);
Assert.Equal(0x08, jTNE_0X02_0X06.MinVoltageSingleBatteryValue);

JTNE_0x02_0x07 jTNE_0X02_0X07 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x07] as JTNE_0x02_0x07;
Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x07, jTNE_0X02_0X07.TypeCode);
Assert.Equal(0x11, jTNE_0X02_0X07.AlarmLevel);
Assert.Equal(3, jTNE_0X02_0X07.AlarmBatteryOthers.Count);
Assert.Equal(new List<uint>
{
1000,1001,1002
}, jTNE_0X02_0X07.AlarmBatteryOthers);
Assert.Equal(3, jTNE_0X02_0X07.AlarmEls.Count);
Assert.Equal(new List<uint>
{
2000,2001,2002
}, jTNE_0X02_0X07.AlarmEls);
Assert.Equal(3, jTNE_0X02_0X07.AlarmEngines.Count);
Assert.Equal(new List<uint>
{
3000,3001,3002
}, jTNE_0X02_0X07.AlarmEngines);
Assert.Equal(3, jTNE_0X02_0X07.AlarmOthers.Count);
Assert.Equal(new List<uint>
{
4000,4001,4002
}, jTNE_0X02_0X07.AlarmOthers);

JTNE_0x02_0x08 jTNE_0X02_0X08 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x08] as JTNE_0x02_0x08;
Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x08, jTNE_0X02_0X08.TypeCode);
Assert.Equal(2, jTNE_0X02_0X08.BatteryAssemblyCount);

Metadata.BatteryAssembly batteryAssembly1 = jTNE_0X02_0X08.BatteryAssemblies[0];
Assert.Equal(123, batteryAssembly1.BatteryAssemblyCurrent);
Assert.Equal(0x01, batteryAssembly1.BatteryAssemblyNo);
Assert.Equal(0x02, batteryAssembly1.BatteryAssemblyVoltage);
Assert.Equal(55, batteryAssembly1.SingleBatteryCount);
Assert.Equal(111, batteryAssembly1.ThisSingleBatteryBeginNo);
Assert.Equal(3, batteryAssembly1.ThisSingleBatteryBeginCount);
Assert.Equal(new List<ushort> {
111,222,333
}, batteryAssembly1.SingleBatteryVoltages);

Metadata.BatteryAssembly batteryAssembly2 = jTNE_0X02_0X08.BatteryAssemblies[1];
Assert.Equal(1234, batteryAssembly2.BatteryAssemblyCurrent);
Assert.Equal(0x03, batteryAssembly2.BatteryAssemblyNo);
Assert.Equal(0x05, batteryAssembly2.BatteryAssemblyVoltage);
Assert.Equal(66, batteryAssembly2.SingleBatteryCount);
Assert.Equal(222, batteryAssembly2.ThisSingleBatteryBeginNo);
Assert.Equal(3, batteryAssembly2.ThisSingleBatteryBeginCount);
Assert.Equal(new List<ushort> {
444,555,666
}, batteryAssembly2.SingleBatteryVoltages);

JTNE_0x02_0x09 jTNE_0X02_0X09 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x09] as JTNE_0x02_0x09;
Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x09, jTNE_0X02_0X09.TypeCode);
Assert.Equal(2, jTNE_0X02_0X09.BatteryTemperatureCount);

Metadata.BatteryTemperature batteryTemperature1 = jTNE_0X02_0X09.BatteryTemperatures[0];
Assert.Equal(0x01, batteryTemperature1.BatteryAssemblyNo);
Assert.Equal(4, batteryTemperature1.TemperatureProbeCount);
Assert.Equal(new byte[]
{
0x01,0x02,0x03,0x04
}, batteryTemperature1.Temperatures);

Metadata.BatteryTemperature batteryTemperature2 = jTNE_0X02_0X09.BatteryTemperatures[1];
Assert.Equal(0x02, batteryTemperature2.BatteryAssemblyNo);
Assert.Equal(4, batteryTemperature2.TemperatureProbeCount);
Assert.Equal(new byte[]
{
0x05,0x06,0x07,0x08
}, batteryTemperature2.Temperatures);
}
}
}

+ 340
- 0
src/JTNE.Protocol.Test/Package/JTNE_0x02_Package_DeviceTest.cs Просмотреть файл

@@ -0,0 +1,340 @@
using JTNE.Protocol.Extensions;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Enums;
using JTNE.Protocol.MessageBody;
using JTNE.Protocol.Internal;

namespace JTNE.Protocol.Test.Package
{
public class JTNE_0x02_Package_DeviceTest
{
[Fact]
public void Test1()
{
JTNEPackage_Device jTNEPackage_Device = new JTNEPackage_Device();
jTNEPackage_Device.AskId = JTNEAskId.Success.ToByteValue();
jTNEPackage_Device.MsgId = JTNEMsgId_Device.uploadim.ToByteValue();
jTNEPackage_Device.VIN = "123456789";
JTNE_0x02_Device jTNE_0X02_Device = new JTNE_0x02_Device();
jTNE_0X02_Device.Values = new Dictionary<byte, JTNE_0x02_Body_Device>();

JTNE_0x02_0x01_Device jTNE_0X02_0X01_Device = new JTNE_0x02_0x01_Device();
jTNE_0X02_0X01_Device.Accelerator = 0x02;
jTNE_0X02_0X01_Device.Brakes = 0x03;
jTNE_0X02_0X01_Device.CarStatus = 0x04;
jTNE_0X02_0X01_Device.ChargeStatus = 0x05;
jTNE_0X02_0X01_Device.DCStatus = 0x06;
jTNE_0X02_0X01_Device.OperationMode = 0x07;
jTNE_0X02_0X01_Device.Resistance = 123;
jTNE_0X02_0X01_Device.SOC = 0x03;
jTNE_0X02_0X01_Device.Speed = 58;
jTNE_0X02_0X01_Device.Stall = 0x02;
jTNE_0X02_0X01_Device.TotalDis = 6666;
jTNE_0X02_0X01_Device.TotalTemp = 99;
jTNE_0X02_0X01_Device.TotalVoltage = 100;
jTNE_0X02_Device.Values.Add(JTNE_0x02_Body_Device.JTNE_0x02_0x01_Device, jTNE_0X02_0X01_Device);

JTNE_0x02_0x02_Device jTNE_0X02_0X02_Device = new JTNE_0x02_0x02_Device();
jTNE_0X02_0X02_Device.Electricals = new List<Metadata.Electrical>();
Metadata.Electrical electrical1 = new Metadata.Electrical();
electrical1.ElControlTemp = 0x01;
electrical1.ElCurrent = 100;
electrical1.ElNo = 0x01;
electrical1.ElSpeed = 65;
electrical1.ElStatus = 0x02;
electrical1.ElTemp = 0x03;
electrical1.ElTorque = 55;
electrical1.ElVoltage = 236;
Metadata.Electrical electrical2 = new Metadata.Electrical();
electrical2.ElControlTemp = 0x02;
electrical2.ElCurrent = 101;
electrical2.ElNo = 0x02;
electrical2.ElSpeed = 66;
electrical2.ElStatus = 0x03;
electrical2.ElTemp = 0x05;
electrical2.ElTorque = 566;
electrical2.ElVoltage = 2136;
jTNE_0X02_0X02_Device.Electricals.Add(electrical1);
jTNE_0X02_0X02_Device.Electricals.Add(electrical2);
jTNE_0X02_Device.Values.Add(JTNE_0x02_Body_Device.JTNE_0x02_0x02_Device, jTNE_0X02_0X02_Device);

JTNE_0x02_0x03_Device jTNE_0X02_0X03_Device = new JTNE_0x02_0x03_Device();
jTNE_0X02_0X03_Device.DCStatus = 0x02;
jTNE_0X02_0X03_Device.FuelBatteryCurrent = 111;
jTNE_0X02_0X03_Device.FuelBatteryVoltage = 2222;
jTNE_0X02_0X03_Device.FuelConsumptionRate = 3222;
jTNE_0X02_0X03_Device.HydrogenSystemMaxConcentrations = 6666;
jTNE_0X02_0X03_Device.HydrogenSystemMaxConcentrationsNo = 0x56;
jTNE_0X02_0X03_Device.HydrogenSystemMaxPressure = 3336;
jTNE_0X02_0X03_Device.HydrogenSystemMaxPressureNo = 0x65;
jTNE_0X02_0X03_Device.HydrogenSystemMaxTemp = 3355;
jTNE_0X02_0X03_Device.HydrogenSystemMaxTempNo = 0x22;
jTNE_0X02_0X03_Device.Temperatures = new byte[]
{
0x01,0x02,0x03
};
jTNE_0X02_Device.Values.Add(JTNE_0x02_Body_Device.JTNE_0x02_0x03_Device, jTNE_0X02_0X03_Device);

JTNE_0x02_0x04_Device jTNE_0X02_0X04_Device = new JTNE_0x02_0x04_Device();
jTNE_0X02_0X04_Device.EngineStatus = 0x01;
jTNE_0X02_0X04_Device.FuelRate = 102;
jTNE_0X02_0X04_Device.Revs = 203;
jTNE_0X02_Device.Values.Add(JTNE_0x02_Body_Device.JTNE_0x02_0x04_Device, jTNE_0X02_0X04_Device);

JTNE_0x02_0x05_Device jTNE_0X02_0X05_Device = new JTNE_0x02_0x05_Device();
jTNE_0X02_0X05_Device.Lat = 1233355;
jTNE_0X02_0X05_Device.Lng = 3255555;
jTNE_0X02_0X05_Device.PositioStatus = 0x01;
jTNE_0X02_Device.Values.Add(JTNE_0x02_Body_Device.JTNE_0x02_0x05_Device, jTNE_0X02_0X05_Device);

JTNE_0x02_0x06_Device jTNE_0X02_0X06_Device = new JTNE_0x02_0x06_Device();
jTNE_0X02_0X06_Device.MaxTempBatteryAssemblyNo = 0x12;
jTNE_0X02_0X06_Device.MaxTempProbeBatteryNo = 0x32;
jTNE_0X02_0X06_Device.MaxTempProbeBatteryValue = 0x42;
jTNE_0X02_0X06_Device.MaxVoltageBatteryAssemblyNo = 0x11;
jTNE_0X02_0X06_Device.MaxVoltageSingleBatteryNo = 0x15;
jTNE_0X02_0X06_Device.MaxVoltageSingleBatteryValue = 123;
jTNE_0X02_0X06_Device.MinTempBatteryAssemblyNo = 0x32;
jTNE_0X02_0X06_Device.MinTempProbeBatteryNo = 0x11;
jTNE_0X02_0X06_Device.MinTempProbeBatteryValue = 0x06;
jTNE_0X02_0X06_Device.MinVoltageBatteryAssemblyNo = 0x07;
jTNE_0X02_0X06_Device.MinVoltageSingleBatteryNo = 0x09;
jTNE_0X02_0X06_Device.MinVoltageSingleBatteryValue = 0x08;
jTNE_0X02_Device.Values.Add(JTNE_0x02_Body_Device.JTNE_0x02_0x06_Device, jTNE_0X02_0X06_Device);

JTNE_0x02_0x07_Device jTNE_0X02_0X07_Device = new JTNE_0x02_0x07_Device();
jTNE_0X02_0X07_Device.AlarmBatteryFlag = 5533;
jTNE_0X02_0X07_Device.AlarmLevel = 0x11;
jTNE_0X02_0X07_Device.AlarmBatteryOthers = new List<uint>
{
1000,1001,1002
};
jTNE_0X02_0X07_Device.AlarmEls = new List<uint>
{
2000,2001,2002
};
jTNE_0X02_0X07_Device.AlarmEngines = new List<uint>
{
3000,3001,3002
};
jTNE_0X02_0X07_Device.AlarmOthers = new List<uint>
{
4000,4001,4002
};
jTNE_0X02_Device.Values.Add(JTNE_0x02_Body_Device.JTNE_0x02_0x07_Device, jTNE_0X02_0X07_Device);

JTNE_0x02_0x08_Device jTNE_0X02_0X08_Device = new JTNE_0x02_0x08_Device();
jTNE_0X02_0X08_Device.BatteryAssemblies = new List<Metadata.BatteryAssembly>();
Metadata.BatteryAssembly batteryAssembly1 = new Metadata.BatteryAssembly();
batteryAssembly1.BatteryAssemblyCurrent = 123;
batteryAssembly1.BatteryAssemblyNo = 0x01;
batteryAssembly1.BatteryAssemblyVoltage = 0x02;
batteryAssembly1.SingleBatteryCount = 55;
batteryAssembly1.ThisSingleBatteryBeginCount = 0x02;
batteryAssembly1.ThisSingleBatteryBeginNo = 111;
batteryAssembly1.SingleBatteryVoltages = new List<ushort> {
111,222,333
};
Metadata.BatteryAssembly batteryAssembly2 = new Metadata.BatteryAssembly();
batteryAssembly2.BatteryAssemblyCurrent = 1234;
batteryAssembly2.BatteryAssemblyNo = 0x03;
batteryAssembly2.BatteryAssemblyVoltage = 0x05;
batteryAssembly2.SingleBatteryCount = 66;
batteryAssembly2.ThisSingleBatteryBeginCount = 0x02;
batteryAssembly2.ThisSingleBatteryBeginNo = 222;
batteryAssembly2.SingleBatteryVoltages = new List<ushort> {
444,555,666
};
jTNE_0X02_0X08_Device.BatteryAssemblies.Add(batteryAssembly1);
jTNE_0X02_0X08_Device.BatteryAssemblies.Add(batteryAssembly2);
jTNE_0X02_Device.Values.Add(JTNE_0x02_Body_Device.JTNE_0x02_0x08_Device, jTNE_0X02_0X08_Device);


JTNE_0x02_0x09_Device jTNE_0X02_0X09_Device = new JTNE_0x02_0x09_Device();
jTNE_0X02_0X09_Device.BatteryTemperatures = new List<Metadata.BatteryTemperature>();

Metadata.BatteryTemperature batteryTemperature1 = new Metadata.BatteryTemperature();
batteryTemperature1.BatteryAssemblyNo = 0x01;
batteryTemperature1.Temperatures = new byte[]
{
0x01,0x02,0x03,0x04
};

Metadata.BatteryTemperature batteryTemperature2 = new Metadata.BatteryTemperature();
batteryTemperature2.BatteryAssemblyNo = 0x02;
batteryTemperature2.Temperatures = new byte[]
{
0x05,0x06,0x07,0x08
};

jTNE_0X02_0X09_Device.BatteryTemperatures.Add(batteryTemperature1);
jTNE_0X02_0X09_Device.BatteryTemperatures.Add(batteryTemperature2);
jTNE_0X02_Device.Values.Add(JTNE_0x02_Body_Device.JTNE_0x02_0x09_Device, jTNE_0X02_0X09_Device);

jTNEPackage_Device.Bodies = jTNE_0X02_Device;
var hex = JTNESerializer_Device.Serialize(jTNEPackage_Device).ToHexString();
Assert.Equal("2323020131323334353637383900000000000000000100D001040507003A00001A0A00640063030602007B02030202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502040100CB006605010031AD030012D1CB061115007B0709000832124211320607110000159D03000003E8000003E9000003EA03000007D0000007D1000007D20300000BB800000BB900000BBA0300000FA000000FA100000FA20802010002007B0037006F03006F00DE014D03000504D2004200DE0301BC022B029A0902010004010203040200040506070867", hex);
}

[Fact]
public void Test2()
{
var data = "2323020131323334353637383900000000000000000100D001040507003A00001A0A00640063030602007B02030202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502040100CB006605010031AD030012D1CB061115007B0709000832124211320607110000159D03000003E8000003E9000003EA03000007D0000007D1000007D20300000BB800000BB900000BBA0300000FA000000FA100000FA20802010002007B0037006F03006F00DE014D03000504D2004200DE0301BC022B029A0902010004010203040200040506070867".ToHexBytes();
JTNEPackage_Device jTNEPackage_Device = JTNESerializer_Device.Deserialize(data);
JTNE_0x02_Device jTNE_0X02_Device = jTNEPackage_Device.Bodies as JTNE_0x02_Device;

JTNE_0x02_0x01_Device jTNE_0X02_0X01_Device = jTNE_0X02_Device.Values[JTNE_0x02_Body_Device.JTNE_0x02_0x01_Device] as JTNE_0x02_0x01_Device;
Assert.Equal(JTNE_0x02_Body_Device.JTNE_0x02_0x01_Device, jTNE_0X02_0X01_Device.TypeCode);
Assert.Equal(0x02, jTNE_0X02_0X01_Device.Accelerator);
Assert.Equal(0x03, jTNE_0X02_0X01_Device.Brakes);
Assert.Equal(0x04, jTNE_0X02_0X01_Device.CarStatus);
Assert.Equal(0x05, jTNE_0X02_0X01_Device.ChargeStatus);
Assert.Equal(0x06, jTNE_0X02_0X01_Device.DCStatus);
Assert.Equal(0x07, jTNE_0X02_0X01_Device.OperationMode);
Assert.Equal(123, jTNE_0X02_0X01_Device.Resistance);
Assert.Equal(0x03, jTNE_0X02_0X01_Device.SOC);
Assert.Equal(58, jTNE_0X02_0X01_Device.Speed);
Assert.Equal(0x02, jTNE_0X02_0X01_Device.Stall);
Assert.Equal((uint)6666, jTNE_0X02_0X01_Device.TotalDis);
Assert.Equal(99, jTNE_0X02_0X01_Device.TotalTemp);
Assert.Equal(100, jTNE_0X02_0X01_Device.TotalVoltage);


JTNE_0x02_0x02_Device jTNE_0X02_0X02_Device = jTNE_0X02_Device.Values[JTNE_0x02_Body_Device.JTNE_0x02_0x02_Device] as JTNE_0x02_0x02_Device;
Assert.Equal(JTNE_0x02_Body_Device.JTNE_0x02_0x02_Device, jTNE_0X02_0X02_Device.TypeCode);
Assert.Equal(2, jTNE_0X02_0X02_Device.ElectricalCount);
Metadata.Electrical electrical1 = jTNE_0X02_0X02_Device.Electricals[0];
Assert.Equal(0x01, electrical1.ElControlTemp);
Assert.Equal(100, electrical1.ElCurrent);
Assert.Equal(0x01, electrical1.ElNo);
Assert.Equal(65, electrical1.ElSpeed);
Assert.Equal(0x02, electrical1.ElStatus);
Assert.Equal(0x03, electrical1.ElTemp);
Assert.Equal(55, electrical1.ElTorque);
Assert.Equal(236, electrical1.ElVoltage);
Metadata.Electrical electrical2 = jTNE_0X02_0X02_Device.Electricals[1];
Assert.Equal(0x02, electrical2.ElControlTemp);
Assert.Equal(101, electrical2.ElCurrent);
Assert.Equal(0x02, electrical2.ElNo);
Assert.Equal(66, electrical2.ElSpeed);
Assert.Equal(0x03, electrical2.ElStatus);
Assert.Equal(0x05, electrical2.ElTemp);
Assert.Equal(566, electrical2.ElTorque);
Assert.Equal(2136, electrical2.ElVoltage);

JTNE_0x02_0x03_Device jTNE_0X02_0X03_Device = jTNE_0X02_Device.Values[JTNE_0x02_Body_Device.JTNE_0x02_0x03_Device] as JTNE_0x02_0x03_Device;

Assert.Equal(JTNE_0x02_Body_Device.JTNE_0x02_0x03_Device, jTNE_0X02_0X03_Device.TypeCode);
Assert.Equal(0x02, jTNE_0X02_0X03_Device.DCStatus);
Assert.Equal(111, jTNE_0X02_0X03_Device.FuelBatteryCurrent);
Assert.Equal(2222, jTNE_0X02_0X03_Device.FuelBatteryVoltage);
Assert.Equal(3222, jTNE_0X02_0X03_Device.FuelConsumptionRate);
Assert.Equal(6666, jTNE_0X02_0X03_Device.HydrogenSystemMaxConcentrations);
Assert.Equal(0x56, jTNE_0X02_0X03_Device.HydrogenSystemMaxConcentrationsNo);
Assert.Equal(3336, jTNE_0X02_0X03_Device.HydrogenSystemMaxPressure);
Assert.Equal(0x65, jTNE_0X02_0X03_Device.HydrogenSystemMaxPressureNo);
Assert.Equal(3355, jTNE_0X02_0X03_Device.HydrogenSystemMaxTemp);
Assert.Equal(0x22, jTNE_0X02_0X03_Device.HydrogenSystemMaxTempNo);
Assert.Equal(new byte[] { 0x01, 0x02, 0x03 }, jTNE_0X02_0X03_Device.Temperatures);

JTNE_0x02_0x04_Device jTNE_0X02_0X04_Device = jTNE_0X02_Device.Values[JTNE_0x02_Body_Device.JTNE_0x02_0x04_Device] as JTNE_0x02_0x04_Device;
Assert.Equal(JTNE_0x02_Body_Device.JTNE_0x02_0x04_Device, jTNE_0X02_0X04_Device.TypeCode);
Assert.Equal(0x01, jTNE_0X02_0X04_Device.EngineStatus);
Assert.Equal(102, jTNE_0X02_0X04_Device.FuelRate);
Assert.Equal(203, jTNE_0X02_0X04_Device.Revs);

JTNE_0x02_0x05_Device jTNE_0X02_0X05_Device = jTNE_0X02_Device.Values[JTNE_0x02_Body_Device.JTNE_0x02_0x05_Device] as JTNE_0x02_0x05_Device;
Assert.Equal(JTNE_0x02_Body_Device.JTNE_0x02_0x05_Device, jTNE_0X02_0X05_Device.TypeCode);
Assert.Equal((uint)1233355, jTNE_0X02_0X05_Device.Lat);
Assert.Equal((uint)3255555, jTNE_0X02_0X05_Device.Lng);
Assert.Equal(0x01, jTNE_0X02_0X05_Device.PositioStatus);


JTNE_0x02_0x06_Device jTNE_0X02_0X06_Device = jTNE_0X02_Device.Values[JTNE_0x02_Body_Device.JTNE_0x02_0x06_Device] as JTNE_0x02_0x06_Device;
Assert.Equal(0x12, jTNE_0X02_0X06_Device.MaxTempBatteryAssemblyNo);
Assert.Equal(0x32, jTNE_0X02_0X06_Device.MaxTempProbeBatteryNo);
Assert.Equal(0x42, jTNE_0X02_0X06_Device.MaxTempProbeBatteryValue);
Assert.Equal(0x11, jTNE_0X02_0X06_Device.MaxVoltageBatteryAssemblyNo);
Assert.Equal(0x15, jTNE_0X02_0X06_Device.MaxVoltageSingleBatteryNo);
Assert.Equal(123, jTNE_0X02_0X06_Device.MaxVoltageSingleBatteryValue);
Assert.Equal(0x11, jTNE_0X02_0X06_Device.MinTempProbeBatteryNo);
Assert.Equal(0x06, jTNE_0X02_0X06_Device.MinTempProbeBatteryValue);
Assert.Equal(0x07, jTNE_0X02_0X06_Device.MinVoltageBatteryAssemblyNo);
Assert.Equal(0x09, jTNE_0X02_0X06_Device.MinVoltageSingleBatteryNo);
Assert.Equal(0x08, jTNE_0X02_0X06_Device.MinVoltageSingleBatteryValue);

JTNE_0x02_0x07_Device jTNE_0X02_0X07_Device = jTNE_0X02_Device.Values[JTNE_0x02_Body_Device.JTNE_0x02_0x07_Device] as JTNE_0x02_0x07_Device;
Assert.Equal(JTNE_0x02_Body_Device.JTNE_0x02_0x07_Device, jTNE_0X02_0X07_Device.TypeCode);
Assert.Equal(0x11, jTNE_0X02_0X07_Device.AlarmLevel);
Assert.Equal(3, jTNE_0X02_0X07_Device.AlarmBatteryOthers.Count);
Assert.Equal(new List<uint>
{
1000,1001,1002
}, jTNE_0X02_0X07_Device.AlarmBatteryOthers);
Assert.Equal(3, jTNE_0X02_0X07_Device.AlarmEls.Count);
Assert.Equal(new List<uint>
{
2000,2001,2002
}, jTNE_0X02_0X07_Device.AlarmEls);
Assert.Equal(3, jTNE_0X02_0X07_Device.AlarmEngines.Count);
Assert.Equal(new List<uint>
{
3000,3001,3002
}, jTNE_0X02_0X07_Device.AlarmEngines);
Assert.Equal(3, jTNE_0X02_0X07_Device.AlarmOthers.Count);
Assert.Equal(new List<uint>
{
4000,4001,4002
}, jTNE_0X02_0X07_Device.AlarmOthers);

JTNE_0x02_0x08_Device jTNE_0X02_0X08_Device = jTNE_0X02_Device.Values[JTNE_0x02_Body_Device.JTNE_0x02_0x08_Device] as JTNE_0x02_0x08_Device;
Assert.Equal(JTNE_0x02_Body_Device.JTNE_0x02_0x08_Device, jTNE_0X02_0X08_Device.TypeCode);
Assert.Equal(2, jTNE_0X02_0X08_Device.BatteryAssemblyCount);

Metadata.BatteryAssembly batteryAssembly1 = jTNE_0X02_0X08_Device.BatteryAssemblies[0];
Assert.Equal(123, batteryAssembly1.BatteryAssemblyCurrent);
Assert.Equal(0x01, batteryAssembly1.BatteryAssemblyNo);
Assert.Equal(0x02, batteryAssembly1.BatteryAssemblyVoltage);
Assert.Equal(55, batteryAssembly1.SingleBatteryCount);
Assert.Equal(111, batteryAssembly1.ThisSingleBatteryBeginNo);
Assert.Equal(3, batteryAssembly1.ThisSingleBatteryBeginCount);
Assert.Equal(new List<ushort> {
111,222,333
}, batteryAssembly1.SingleBatteryVoltages);

Metadata.BatteryAssembly batteryAssembly2 = jTNE_0X02_0X08_Device.BatteryAssemblies[1];
Assert.Equal(1234, batteryAssembly2.BatteryAssemblyCurrent);
Assert.Equal(0x03, batteryAssembly2.BatteryAssemblyNo);
Assert.Equal(0x05, batteryAssembly2.BatteryAssemblyVoltage);
Assert.Equal(66, batteryAssembly2.SingleBatteryCount);
Assert.Equal(222, batteryAssembly2.ThisSingleBatteryBeginNo);
Assert.Equal(3, batteryAssembly2.ThisSingleBatteryBeginCount);
Assert.Equal(new List<ushort> {
444,555,666
}, batteryAssembly2.SingleBatteryVoltages);

JTNE_0x02_0x09_Device jTNE_0X02_0X09_Device = jTNE_0X02_Device.Values[JTNE_0x02_Body_Device.JTNE_0x02_0x09_Device] as JTNE_0x02_0x09_Device;
Assert.Equal(JTNE_0x02_Body_Device.JTNE_0x02_0x09_Device, jTNE_0X02_0X09_Device.TypeCode);
Assert.Equal(2, jTNE_0X02_0X09_Device.BatteryTemperatureCount);

Metadata.BatteryTemperature batteryTemperature1 = jTNE_0X02_0X09_Device.BatteryTemperatures[0];
Assert.Equal(0x01, batteryTemperature1.BatteryAssemblyNo);
Assert.Equal(4, batteryTemperature1.TemperatureProbeCount);
Assert.Equal(new byte[]
{
0x01,0x02,0x03,0x04
}, batteryTemperature1.Temperatures);

Metadata.BatteryTemperature batteryTemperature2 = jTNE_0X02_0X09_Device.BatteryTemperatures[1];
Assert.Equal(0x02, batteryTemperature2.BatteryAssemblyNo);
Assert.Equal(4, batteryTemperature2.TemperatureProbeCount);
Assert.Equal(new byte[]
{
0x05,0x06,0x07,0x08
}, batteryTemperature2.Temperatures);
}
}
}

+ 243
- 0
src/JTNE.Protocol.Test/Package/JTNE_0x02_Package_PlatformTest.cs Просмотреть файл

@@ -0,0 +1,243 @@
using JTNE.Protocol.Extensions;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Enums;
using JTNE.Protocol.MessageBody;
using JTNE.Protocol.Internal;

namespace JTNE.Protocol.Test.Package
{
public class JTNE_0x02_Package_PlatformTest
{
[Fact]
public void Test1()
{
JTNEPackage_Platform jTNEPackage_Platform = new JTNEPackage_Platform();
jTNEPackage_Platform.AskId = JTNEAskId.Success.ToByteValue();
jTNEPackage_Platform.MsgId = JTNEMsgId_Platform.uploadim.ToByteValue();
jTNEPackage_Platform.VIN = "123456789";
JTNE_0x02_Platform jTNE_0X02_Platform = new JTNE_0x02_Platform();
jTNE_0X02_Platform.Values = new Dictionary<byte, JTNE_0x02_Body_Platform>();

JTNE_0x02_0x01_Platform jTNE_0X02_0X01_Platform = new JTNE_0x02_0x01_Platform();
jTNE_0X02_0X01_Platform.CarStatus = 0x04;
jTNE_0X02_0X01_Platform.ChargeStatus = 0x05;
jTNE_0X02_0X01_Platform.DCStatus = 0x06;
jTNE_0X02_0X01_Platform.OperationMode = 0x07;
jTNE_0X02_0X01_Platform.Resistance = 123;
jTNE_0X02_0X01_Platform.SOC = 0x03;
jTNE_0X02_0X01_Platform.Speed = 58;
jTNE_0X02_0X01_Platform.Stall = 0x02;
jTNE_0X02_0X01_Platform.TotalDis = 6666;
jTNE_0X02_0X01_Platform.TotalTemp = 99;
jTNE_0X02_0X01_Platform.TotalVoltage = 100;
jTNE_0X02_Platform.Values.Add(JTNE_0x02_Body_Platform.JTNE_0x02_0x01_Platform, jTNE_0X02_0X01_Platform);

JTNE_0x02_0x02_Platform jTNE_0X02_0X02_Platform = new JTNE_0x02_0x02_Platform();
jTNE_0X02_0X02_Platform.Electricals = new List<Metadata.Electrical>();
Metadata.Electrical electrical1 = new Metadata.Electrical();
electrical1.ElControlTemp = 0x01;
electrical1.ElCurrent = 100;
electrical1.ElNo = 0x01;
electrical1.ElSpeed = 65;
electrical1.ElStatus = 0x02;
electrical1.ElTemp = 0x03;
electrical1.ElTorque = 55;
electrical1.ElVoltage = 236;
Metadata.Electrical electrical2 = new Metadata.Electrical();
electrical2.ElControlTemp = 0x02;
electrical2.ElCurrent = 101;
electrical2.ElNo = 0x02;
electrical2.ElSpeed = 66;
electrical2.ElStatus = 0x03;
electrical2.ElTemp = 0x05;
electrical2.ElTorque = 566;
electrical2.ElVoltage = 2136;
jTNE_0X02_0X02_Platform.Electricals.Add(electrical1);
jTNE_0X02_0X02_Platform.Electricals.Add(electrical2);
jTNE_0X02_Platform.Values.Add(JTNE_0x02_Body_Platform.JTNE_0x02_0x02_Platform, jTNE_0X02_0X02_Platform);

JTNE_0x02_0x03_Platform jTNE_0X02_0X03_Platform = new JTNE_0x02_0x03_Platform();
jTNE_0X02_0X03_Platform.DCStatus = 0x02;
jTNE_0X02_0X03_Platform.FuelBatteryCurrent = 111;
jTNE_0X02_0X03_Platform.FuelBatteryVoltage = 2222;
jTNE_0X02_0X03_Platform.FuelConsumptionRate = 3222;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxConcentrations = 6666;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxConcentrationsNo = 0x56;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxPressure = 3336;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxPressureNo = 0x65;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxTemp = 3355;
jTNE_0X02_0X03_Platform.HydrogenSystemMaxTempNo = 0x22;
jTNE_0X02_0X03_Platform.Temperatures = new byte[]
{
0x01,0x02,0x03
};
jTNE_0X02_Platform.Values.Add(JTNE_0x02_Body_Platform.JTNE_0x02_0x03_Platform, jTNE_0X02_0X03_Platform);

JTNE_0x02_0x04_Platform jTNE_0X02_0X04_Platform = new JTNE_0x02_0x04_Platform();
jTNE_0X02_0X04_Platform.EngineStatus = 0x01;
jTNE_0X02_0X04_Platform.FuelRate = 102;
jTNE_0X02_0X04_Platform.Revs = 203;
jTNE_0X02_Platform.Values.Add(JTNE_0x02_Body_Platform.JTNE_0x02_0x04_Platform, jTNE_0X02_0X04_Platform);

JTNE_0x02_0x05_Platform jTNE_0X02_0X05_Platform = new JTNE_0x02_0x05_Platform();
jTNE_0X02_0X05_Platform.Lat = 1233355;
jTNE_0X02_0X05_Platform.Lng = 3255555;
jTNE_0X02_0X05_Platform.PositioStatus = 0x01;
jTNE_0X02_Platform.Values.Add(JTNE_0x02_Body_Platform.JTNE_0x02_0x05_Platform, jTNE_0X02_0X05_Platform);

JTNE_0x02_0x06_Platform jTNE_0X02_0X06_Platform = new JTNE_0x02_0x06_Platform();
jTNE_0X02_0X06_Platform.MaxTempBatteryAssemblyNo = 0x12;
jTNE_0X02_0X06_Platform.MaxTempProbeBatteryNo = 0x32;
jTNE_0X02_0X06_Platform.MaxTempProbeBatteryValue = 0x42;
jTNE_0X02_0X06_Platform.MaxVoltageBatteryAssemblyNo = 0x11;
jTNE_0X02_0X06_Platform.MaxVoltageSingleBatteryNo = 0x15;
jTNE_0X02_0X06_Platform.MaxVoltageSingleBatteryValue = 123;
jTNE_0X02_0X06_Platform.MinTempBatteryAssemblyNo = 0x32;
jTNE_0X02_0X06_Platform.MinTempProbeBatteryNo = 0x11;
jTNE_0X02_0X06_Platform.MinTempProbeBatteryValue = 0x06;
jTNE_0X02_0X06_Platform.MinVoltageBatteryAssemblyNo = 0x07;
jTNE_0X02_0X06_Platform.MinVoltageSingleBatteryNo = 0x09;
jTNE_0X02_0X06_Platform.MinVoltageSingleBatteryValue = 0x08;
jTNE_0X02_Platform.Values.Add(JTNE_0x02_Body_Platform.JTNE_0x02_0x06_Platform, jTNE_0X02_0X06_Platform);

JTNE_0x02_0x07_Platform jTNE_0X02_0X07_Platform = new JTNE_0x02_0x07_Platform();
jTNE_0X02_0X07_Platform.AlarmBatteryFlag = 5533;
jTNE_0X02_0X07_Platform.AlarmLevel = 0x11;
jTNE_0X02_0X07_Platform.AlarmBatteryOthers = new List<uint>
{
1000,1001,1002
};
jTNE_0X02_0X07_Platform.AlarmEls = new List<uint>
{
2000,2001,2002
};
jTNE_0X02_0X07_Platform.AlarmEngines = new List<uint>
{
3000,3001,3002
};
jTNE_0X02_0X07_Platform.AlarmOthers = new List<uint>
{
4000,4001,4002
};
jTNE_0X02_Platform.Values.Add(JTNE_0x02_Body_Platform.JTNE_0x02_0x07_Platform, jTNE_0X02_0X07_Platform);

jTNEPackage_Platform.Bodies = jTNE_0X02_Platform;
var hex = JTNESerializer_Platform.Serialize(jTNEPackage_Platform).ToHexString();
Assert.Equal("23230201313233343536373839000000000000000001009C01040507003A00001A0A00640063030602007B0202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502040100CB006605010031AD030012D1CB061115007B0709000832124211320607110000159D03000003E8000003E9000003EA03000007D0000007D1000007D20300000BB800000BB900000BBA0300000FA000000FA100000FA2BD", hex);
}

[Fact]
public void Test2()
{
var data = "23230201313233343536373839000000000000000001009C01040507003A00001A0A00640063030602007B0202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502040100CB006605010031AD030012D1CB061115007B0709000832124211320607110000159D03000003E8000003E9000003EA03000007D0000007D1000007D20300000BB800000BB900000BBA0300000FA000000FA100000FA2BD".ToHexBytes();
JTNEPackage_Platform jTNEPackage_Platform = JTNESerializer_Platform.Deserialize(data);
JTNE_0x02_Platform jTNE_0X02_Platform = jTNEPackage_Platform.Bodies as JTNE_0x02_Platform;

JTNE_0x02_0x01_Platform jTNE_0X02_0X01_Platform = jTNE_0X02_Platform.Values[JTNE_0x02_Body_Platform.JTNE_0x02_0x01_Platform] as JTNE_0x02_0x01_Platform;
Assert.Equal(JTNE_0x02_Body_Platform.JTNE_0x02_0x01_Platform, jTNE_0X02_0X01_Platform.TypeCode);
Assert.Equal(0x04, jTNE_0X02_0X01_Platform.CarStatus);
Assert.Equal(0x05, jTNE_0X02_0X01_Platform.ChargeStatus);
Assert.Equal(0x06, jTNE_0X02_0X01_Platform.DCStatus);
Assert.Equal(0x07, jTNE_0X02_0X01_Platform.OperationMode);
Assert.Equal(123, jTNE_0X02_0X01_Platform.Resistance);
Assert.Equal(0x03, jTNE_0X02_0X01_Platform.SOC);
Assert.Equal(58, jTNE_0X02_0X01_Platform.Speed);
Assert.Equal(0x02, jTNE_0X02_0X01_Platform.Stall);
Assert.Equal((uint)6666, jTNE_0X02_0X01_Platform.TotalDis);
Assert.Equal(99, jTNE_0X02_0X01_Platform.TotalTemp);
Assert.Equal(100, jTNE_0X02_0X01_Platform.TotalVoltage);


JTNE_0x02_0x02_Platform jTNE_0X02_0X02_Platform = jTNE_0X02_Platform.Values[JTNE_0x02_Body_Platform.JTNE_0x02_0x02_Platform] as JTNE_0x02_0x02_Platform;
Assert.Equal(JTNE_0x02_Body_Platform.JTNE_0x02_0x02_Platform, jTNE_0X02_0X02_Platform.TypeCode);
Assert.Equal(2, jTNE_0X02_0X02_Platform.ElectricalCount);
Metadata.Electrical electrical1 = jTNE_0X02_0X02_Platform.Electricals[0];
Assert.Equal(0x01, electrical1.ElControlTemp);
Assert.Equal(100, electrical1.ElCurrent);
Assert.Equal(0x01, electrical1.ElNo);
Assert.Equal(65, electrical1.ElSpeed);
Assert.Equal(0x02, electrical1.ElStatus);
Assert.Equal(0x03, electrical1.ElTemp);
Assert.Equal(55, electrical1.ElTorque);
Assert.Equal(236, electrical1.ElVoltage);
Metadata.Electrical electrical2 = jTNE_0X02_0X02_Platform.Electricals[1];
Assert.Equal(0x02, electrical2.ElControlTemp);
Assert.Equal(101, electrical2.ElCurrent);
Assert.Equal(0x02, electrical2.ElNo);
Assert.Equal(66, electrical2.ElSpeed);
Assert.Equal(0x03, electrical2.ElStatus);
Assert.Equal(0x05, electrical2.ElTemp);
Assert.Equal(566, electrical2.ElTorque);
Assert.Equal(2136, electrical2.ElVoltage);

JTNE_0x02_0x03_Platform jTNE_0X02_0X03_Platform = jTNE_0X02_Platform.Values[JTNE_0x02_Body_Platform.JTNE_0x02_0x03_Platform] as JTNE_0x02_0x03_Platform;

Assert.Equal(JTNE_0x02_Body_Platform.JTNE_0x02_0x03_Platform, jTNE_0X02_0X03_Platform.TypeCode);
Assert.Equal(0x02, jTNE_0X02_0X03_Platform.DCStatus);
Assert.Equal(111, jTNE_0X02_0X03_Platform.FuelBatteryCurrent);
Assert.Equal(2222, jTNE_0X02_0X03_Platform.FuelBatteryVoltage);
Assert.Equal(3222, jTNE_0X02_0X03_Platform.FuelConsumptionRate);
Assert.Equal(6666, jTNE_0X02_0X03_Platform.HydrogenSystemMaxConcentrations);
Assert.Equal(0x56, jTNE_0X02_0X03_Platform.HydrogenSystemMaxConcentrationsNo);
Assert.Equal(3336, jTNE_0X02_0X03_Platform.HydrogenSystemMaxPressure);
Assert.Equal(0x65, jTNE_0X02_0X03_Platform.HydrogenSystemMaxPressureNo);
Assert.Equal(3355, jTNE_0X02_0X03_Platform.HydrogenSystemMaxTemp);
Assert.Equal(0x22, jTNE_0X02_0X03_Platform.HydrogenSystemMaxTempNo);
Assert.Equal(new byte[] { 0x01, 0x02, 0x03 }, jTNE_0X02_0X03_Platform.Temperatures);

JTNE_0x02_0x04_Platform jTNE_0X02_0X04_Platform = jTNE_0X02_Platform.Values[JTNE_0x02_Body_Platform.JTNE_0x02_0x04_Platform] as JTNE_0x02_0x04_Platform;
Assert.Equal(JTNE_0x02_Body_Platform.JTNE_0x02_0x04_Platform, jTNE_0X02_0X04_Platform.TypeCode);
Assert.Equal(0x01, jTNE_0X02_0X04_Platform.EngineStatus);
Assert.Equal(102, jTNE_0X02_0X04_Platform.FuelRate);
Assert.Equal(203, jTNE_0X02_0X04_Platform.Revs);

JTNE_0x02_0x05_Platform jTNE_0X02_0X05_Platform = jTNE_0X02_Platform.Values[JTNE_0x02_Body_Platform.JTNE_0x02_0x05_Platform] as JTNE_0x02_0x05_Platform;
Assert.Equal(JTNE_0x02_Body_Platform.JTNE_0x02_0x05_Platform, jTNE_0X02_0X05_Platform.TypeCode);
Assert.Equal((uint)1233355, jTNE_0X02_0X05_Platform.Lat);
Assert.Equal((uint)3255555, jTNE_0X02_0X05_Platform.Lng);
Assert.Equal(0x01, jTNE_0X02_0X05_Platform.PositioStatus);


JTNE_0x02_0x06_Platform jTNE_0X02_0X06_Platform = jTNE_0X02_Platform.Values[JTNE_0x02_Body_Platform.JTNE_0x02_0x06_Platform] as JTNE_0x02_0x06_Platform;
Assert.Equal(0x12, jTNE_0X02_0X06_Platform.MaxTempBatteryAssemblyNo);
Assert.Equal(0x32, jTNE_0X02_0X06_Platform.MaxTempProbeBatteryNo);
Assert.Equal(0x42, jTNE_0X02_0X06_Platform.MaxTempProbeBatteryValue);
Assert.Equal(0x11, jTNE_0X02_0X06_Platform.MaxVoltageBatteryAssemblyNo);
Assert.Equal(0x15, jTNE_0X02_0X06_Platform.MaxVoltageSingleBatteryNo);
Assert.Equal(123, jTNE_0X02_0X06_Platform.MaxVoltageSingleBatteryValue);
Assert.Equal(0x11, jTNE_0X02_0X06_Platform.MinTempProbeBatteryNo);
Assert.Equal(0x06, jTNE_0X02_0X06_Platform.MinTempProbeBatteryValue);
Assert.Equal(0x07, jTNE_0X02_0X06_Platform.MinVoltageBatteryAssemblyNo);
Assert.Equal(0x09, jTNE_0X02_0X06_Platform.MinVoltageSingleBatteryNo);
Assert.Equal(0x08, jTNE_0X02_0X06_Platform.MinVoltageSingleBatteryValue);

JTNE_0x02_0x07_Platform jTNE_0X02_0X07_Platform = jTNE_0X02_Platform.Values[JTNE_0x02_Body_Platform.JTNE_0x02_0x07_Platform] as JTNE_0x02_0x07_Platform;
Assert.Equal(JTNE_0x02_Body_Platform.JTNE_0x02_0x07_Platform, jTNE_0X02_0X07_Platform.TypeCode);
Assert.Equal(0x11, jTNE_0X02_0X07_Platform.AlarmLevel);
Assert.Equal(3, jTNE_0X02_0X07_Platform.AlarmBatteryOthers.Count);
Assert.Equal(new List<uint>
{
1000,1001,1002
}, jTNE_0X02_0X07_Platform.AlarmBatteryOthers);
Assert.Equal(3, jTNE_0X02_0X07_Platform.AlarmEls.Count);
Assert.Equal(new List<uint>
{
2000,2001,2002
}, jTNE_0X02_0X07_Platform.AlarmEls);
Assert.Equal(3, jTNE_0X02_0X07_Platform.AlarmEngines.Count);
Assert.Equal(new List<uint>
{
3000,3001,3002
}, jTNE_0X02_0X07_Platform.AlarmEngines);
Assert.Equal(3, jTNE_0X02_0X07_Platform.AlarmOthers.Count);
Assert.Equal(new List<uint>
{
4000,4001,4002
}, jTNE_0X02_0X07_Platform.AlarmOthers);
}
}
}

+ 0
- 41
src/JTNE.Protocol.Test/Package/JTNE_0x04_PackageTest.cs Просмотреть файл

@@ -1,41 +0,0 @@
using JTNE.Protocol.Extensions;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Enums;
using JTNE.Protocol.MessageBody;

namespace JTNE.Protocol.Test.Package
{
public class JTNE_0x04_PackageTest
{
[Fact]
public void Test1()
{
JTNEPackage jTNEPackage = new JTNEPackage();
jTNEPackage.AskId = JTNEAskId.CMD.ToByteValue();
jTNEPackage.MsgId = JTNEMsgId.loginout.ToByteValue();
jTNEPackage.VIN = "123456789";
JTNE_0x04 jTNE_0X04 = new JTNE_0x04();
jTNE_0X04.LogoutTime = DateTime.Parse("2019-01-23 23:55:56");
jTNE_0X04.LogoutNum = 1;
jTNEPackage.Bodies = jTNE_0X04;
var hex = JTNESerializer.Serialize(jTNEPackage).ToHexString();
Assert.Equal("232304FE31323334353637383900000000000000000100081301171737380001DE", hex);
}

[Fact]
public void Test2()
{
var data = "232304FE31323334353637383900000000000000000100081301171737380001DE".ToHexBytes();
JTNEPackage jTNEPackage = JTNESerializer.Deserialize(data);
Assert.Equal(JTNEAskId.CMD.ToByteValue(), jTNEPackage.AskId);
Assert.Equal(JTNEMsgId.loginout.ToByteValue(), jTNEPackage.MsgId);
Assert.Equal("123456789", jTNEPackage.VIN);
JTNE_0x04 jTNE_0X04 = jTNEPackage.Bodies as JTNE_0x04;
Assert.Equal(DateTime.Parse("2019-01-23 23:55:56"), jTNE_0X04.LogoutTime);
Assert.Equal(1, jTNE_0X04.LogoutNum);
}
}
}

+ 41
- 0
src/JTNE.Protocol.Test/Package/JTNE_0x04_Package_DeviceTest.cs Просмотреть файл

@@ -0,0 +1,41 @@
using JTNE.Protocol.Extensions;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Enums;
using JTNE.Protocol.MessageBody;

namespace JTNE.Protocol.Test.Package
{
public class JTNE_0x04_Package_DeviceTest
{
[Fact]
public void Test1()
{
JTNEPackage_Device jTNEPackage_Device = new JTNEPackage_Device();
jTNEPackage_Device.AskId = JTNEAskId.CMD.ToByteValue();
jTNEPackage_Device.MsgId = JTNEMsgId_Device.loginout.ToByteValue();
jTNEPackage_Device.VIN = "123456789";
JTNE_0x04_Device jTNE_0X04_Device = new JTNE_0x04_Device();
jTNE_0X04_Device.LogoutTime = DateTime.Parse("2019-01-23 23:55:56");
jTNE_0X04_Device.LogoutNum = 1;
jTNEPackage_Device.Bodies = jTNE_0X04_Device;
var hex = JTNESerializer_Device.Serialize(jTNEPackage_Device).ToHexString();
Assert.Equal("232304FE31323334353637383900000000000000000100081301171737380001DE", hex);
}

[Fact]
public void Test2()
{
var data = "232304FE31323334353637383900000000000000000100081301171737380001DE".ToHexBytes();
JTNEPackage_Device jTNEPackage_Device = JTNESerializer_Device.Deserialize(data);
Assert.Equal(JTNEAskId.CMD.ToByteValue(), jTNEPackage_Device.AskId);
Assert.Equal(JTNEMsgId_Device.loginout.ToByteValue(), jTNEPackage_Device.MsgId);
Assert.Equal("123456789", jTNEPackage_Device.VIN);
JTNE_0x04_Device jTNE_0X04_Device = jTNEPackage_Device.Bodies as JTNE_0x04_Device;
Assert.Equal(DateTime.Parse("2019-01-23 23:55:56"), jTNE_0X04_Device.LogoutTime);
Assert.Equal(1, jTNE_0X04_Device.LogoutNum);
}
}
}

+ 41
- 0
src/JTNE.Protocol.Test/Package/JTNE_0x04_Package_PlatformTest.cs Просмотреть файл

@@ -0,0 +1,41 @@
using JTNE.Protocol.Extensions;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Enums;
using JTNE.Protocol.MessageBody;

namespace JTNE.Protocol.Test.Package
{
public class JTNE_0x04_Package_PlatformTest
{
[Fact]
public void Test1()
{
JTNEPackage_Platform jTNEPackage_Platform = new JTNEPackage_Platform();
jTNEPackage_Platform.AskId = JTNEAskId.CMD.ToByteValue();
jTNEPackage_Platform.MsgId = JTNEMsgId_Platform.loginout.ToByteValue();
jTNEPackage_Platform.VIN = "123456789";
JTNE_0x04_Platform jTNE_0X04_Platform = new JTNE_0x04_Platform();
jTNE_0X04_Platform.LogoutTime = DateTime.Parse("2019-01-23 23:55:56");
jTNE_0X04_Platform.LogoutNum = 1;
jTNEPackage_Platform.Bodies = jTNE_0X04_Platform;
var hex = JTNESerializer_Platform.Serialize(jTNEPackage_Platform).ToHexString();
Assert.Equal("232304FE31323334353637383900000000000000000100081301171737380001DE", hex);
}

[Fact]
public void Test2()
{
var data = "232304FE31323334353637383900000000000000000100081301171737380001DE".ToHexBytes();
JTNEPackage_Platform jTNEPackage_Platform = JTNESerializer_Platform.Deserialize<JTNEPackage_Platform>(data);
Assert.Equal(JTNEAskId.CMD.ToByteValue(), jTNEPackage_Platform.AskId);
Assert.Equal(JTNEMsgId_Platform.loginout.ToByteValue(), jTNEPackage_Platform.MsgId);
Assert.Equal("123456789", jTNEPackage_Platform.VIN);
JTNE_0x04_Platform jTNE_0X04_Platform = jTNEPackage_Platform.Bodies as JTNE_0x04_Platform;
Assert.Equal(DateTime.Parse("2019-01-23 23:55:56"), jTNE_0X04_Platform.LogoutTime);
Assert.Equal(1, jTNE_0X04_Platform.LogoutNum);
}
}
}

+ 0
- 46
src/JTNE.Protocol.Test/Package/JTNE_0x05_PackageTest.cs Просмотреть файл

@@ -1,46 +0,0 @@
using JTNE.Protocol.Extensions;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Enums;
using JTNE.Protocol.MessageBody;

namespace JTNE.Protocol.Test.Package
{
public class JTNE_0x05_PackageTest
{
[Fact]
public void Test1()
{
JTNEPackage jTNEPackage = new JTNEPackage();
jTNEPackage.AskId = JTNEAskId.CMD.ToByteValue();
jTNEPackage.MsgId = JTNEMsgId.platformlogin.ToByteValue();
jTNEPackage.VIN = "123456789";
JTNE_0x05 jTNE_0X05 = new JTNE_0x05();
jTNE_0X05.LoginTime = DateTime.Parse("2019-01-23 23:55:56");
jTNE_0X05.LoginNum = 6666;
jTNE_0X05.PlatformUserName = "SmallChi518";
jTNE_0X05.PlatformPassword = "1234567890123456789";
jTNEPackage.Bodies = jTNE_0X05;
var hex = JTNESerializer.Serialize(jTNEPackage).ToHexString();
Assert.Equal("232305FE31323334353637383900000000000000000100291301171737381A0A536D616C6C43686935313800313233343536373839303132333435363738390001FF", hex);
}

[Fact]
public void Test2()
{
var data = "232305FE31323334353637383900000000000000000100291301171737381A0A536D616C6C43686935313800313233343536373839303132333435363738390001FF".ToHexBytes();
JTNEPackage jTNEPackage = JTNESerializer.Deserialize(data);
Assert.Equal(JTNEAskId.CMD.ToByteValue(), jTNEPackage.AskId);
Assert.Equal(JTNEMsgId.platformlogin.ToByteValue(), jTNEPackage.MsgId);
Assert.Equal("123456789", jTNEPackage.VIN);
JTNE_0x05 jTNE_0X05 = jTNEPackage.Bodies as JTNE_0x05;
Assert.Equal(DateTime.Parse("2019-01-23 23:55:56"), jTNE_0X05.LoginTime);
Assert.Equal(6666, jTNE_0X05.LoginNum);
Assert.Equal("SmallChi518", jTNE_0X05.PlatformUserName);
Assert.Equal("1234567890123456789", jTNE_0X05.PlatformPassword);
Assert.Equal(0x01, jTNE_0X05.EncryptMethod);
}
}
}

+ 46
- 0
src/JTNE.Protocol.Test/Package/JTNE_0x05_Package_PlatformTest.cs Просмотреть файл

@@ -0,0 +1,46 @@
using JTNE.Protocol.Extensions;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Enums;
using JTNE.Protocol.MessageBody;

namespace JTNE.Protocol.Test.Package
{
public class JTNE_0x05_Package_PlatformTest
{
[Fact]
public void Test1()
{
JTNEPackage_Platform jTNEPackage_Platform = new JTNEPackage_Platform();
jTNEPackage_Platform.AskId = JTNEAskId.CMD.ToByteValue();
jTNEPackage_Platform.MsgId = JTNEMsgId_Platform.platformlogin.ToByteValue();
jTNEPackage_Platform.VIN = "123456789";
JTNE_0x05_Platform jTNE_0X05_Platform = new JTNE_0x05_Platform();
jTNE_0X05_Platform.LoginTime = DateTime.Parse("2019-01-23 23:55:56");
jTNE_0X05_Platform.LoginNum = 6666;
jTNE_0X05_Platform.PlatformUserName = "SmallChi518";
jTNE_0X05_Platform.PlatformPassword = "1234567890123456789";
jTNEPackage_Platform.Bodies = jTNE_0X05_Platform;
var hex = JTNESerializer_Platform.Serialize(jTNEPackage_Platform).ToHexString();
Assert.Equal("232305FE31323334353637383900000000000000000100291301171737381A0A536D616C6C43686935313800313233343536373839303132333435363738390001FF", hex);
}

[Fact]
public void Test2()
{
var data = "232305FE31323334353637383900000000000000000100291301171737381A0A536D616C6C43686935313800313233343536373839303132333435363738390001FF".ToHexBytes();
JTNEPackage_Platform jTNEPackage_Platform = JTNESerializer_Platform.Deserialize(data);
Assert.Equal(JTNEAskId.CMD.ToByteValue(), jTNEPackage_Platform.AskId);
Assert.Equal(JTNEMsgId_Platform.platformlogin.ToByteValue(), jTNEPackage_Platform.MsgId);
Assert.Equal("123456789", jTNEPackage_Platform.VIN);
JTNE_0x05_Platform jTNE_0X05_Platform = jTNEPackage_Platform.Bodies as JTNE_0x05_Platform;
Assert.Equal(DateTime.Parse("2019-01-23 23:55:56"), jTNE_0X05_Platform.LoginTime);
Assert.Equal(6666, jTNE_0X05_Platform.LoginNum);
Assert.Equal("SmallChi518", jTNE_0X05_Platform.PlatformUserName);
Assert.Equal("1234567890123456789", jTNE_0X05_Platform.PlatformPassword);
Assert.Equal(0x01, jTNE_0X05_Platform.EncryptMethod);
}
}
}

+ 0
- 41
src/JTNE.Protocol.Test/Package/JTNE_0x06_PackageTest.cs Просмотреть файл

@@ -1,41 +0,0 @@
using JTNE.Protocol.Extensions;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Enums;
using JTNE.Protocol.MessageBody;

namespace JTNE.Protocol.Test.Package
{
public class JTNE_0x06_PackageTest
{
[Fact]
public void Test1()
{
JTNEPackage jTNEPackage = new JTNEPackage();
jTNEPackage.AskId = JTNEAskId.CMD.ToByteValue();
jTNEPackage.MsgId = JTNEMsgId.platformlogout.ToByteValue();
jTNEPackage.VIN = "123456789";
JTNE_0x06 jTNE_0X06 = new JTNE_0x06();
jTNE_0X06.LogoutTime = DateTime.Parse("2019-01-23 23:55:56");
jTNE_0X06.LogoutNum = 1;
jTNEPackage.Bodies = jTNE_0X06;
var hex = JTNESerializer.Serialize(jTNEPackage).ToHexString();
Assert.Equal("232306FE31323334353637383900000000000000000100081301171737380001DC", hex);
}

[Fact]
public void Test2()
{
var data = "232306FE31323334353637383900000000000000000100081301171737380001DC".ToHexBytes();
JTNEPackage jTNEPackage = JTNESerializer.Deserialize(data);
Assert.Equal(JTNEAskId.CMD.ToByteValue(), jTNEPackage.AskId);
Assert.Equal(JTNEMsgId.platformlogout.ToByteValue(), jTNEPackage.MsgId);
Assert.Equal("123456789", jTNEPackage.VIN);
JTNE_0x06 jTNE_0X06 = jTNEPackage.Bodies as JTNE_0x06;
Assert.Equal(DateTime.Parse("2019-01-23 23:55:56"), jTNE_0X06.LogoutTime);
Assert.Equal(1, jTNE_0X06.LogoutNum);
}
}
}

+ 41
- 0
src/JTNE.Protocol.Test/Package/JTNE_0x06_Package_PlatformTest.cs Просмотреть файл

@@ -0,0 +1,41 @@
using JTNE.Protocol.Extensions;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Enums;
using JTNE.Protocol.MessageBody;

namespace JTNE.Protocol.Test.Package
{
public class JTNE_0x06_Package_PlatformTest
{
[Fact]
public void Test1()
{
JTNEPackage_Platform jTNEPackage_Platform = new JTNEPackage_Platform();
jTNEPackage_Platform.AskId = JTNEAskId.CMD.ToByteValue();
jTNEPackage_Platform.MsgId = JTNEMsgId_Platform.platformlogout.ToByteValue();
jTNEPackage_Platform.VIN = "123456789";
JTNE_0x06_Platform jTNE_0X06_Platform = new JTNE_0x06_Platform();
jTNE_0X06_Platform.LogoutTime = DateTime.Parse("2019-01-23 23:55:56");
jTNE_0X06_Platform.LogoutNum = 1;
jTNEPackage_Platform.Bodies = jTNE_0X06_Platform;
var hex = JTNESerializer_Platform.Serialize(jTNEPackage_Platform).ToHexString();
Assert.Equal("232306FE31323334353637383900000000000000000100081301171737380001DC", hex);
}

[Fact]
public void Test2()
{
var data = "232306FE31323334353637383900000000000000000100081301171737380001DC".ToHexBytes();
JTNEPackage_Platform jTNEPackage_Platform = JTNESerializer_Platform.Deserialize(data);
Assert.Equal(JTNEAskId.CMD.ToByteValue(), jTNEPackage_Platform.AskId);
Assert.Equal(JTNEMsgId_Platform.platformlogout.ToByteValue(), jTNEPackage_Platform.MsgId);
Assert.Equal("123456789", jTNEPackage_Platform.VIN);
JTNE_0x06_Platform jTNE_0X06_Platform = jTNEPackage_Platform.Bodies as JTNE_0x06_Platform;
Assert.Equal(DateTime.Parse("2019-01-23 23:55:56"), jTNE_0X06_Platform.LogoutTime);
Assert.Equal(1, jTNE_0X06_Platform.LogoutNum);
}
}
}

+ 0
- 35
src/JTNE.Protocol.Test/Package/JTNE_0x07_PackageTest.cs Просмотреть файл

@@ -1,35 +0,0 @@
using JTNE.Protocol.Extensions;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Enums;
using JTNE.Protocol.MessageBody;

namespace JTNE.Protocol.Test.Package
{
public class JTNE_0x07_PackageTest
{
[Fact]
public void Test1()
{
JTNEPackage jTNEPackage = new JTNEPackage();
jTNEPackage.AskId = JTNEAskId.CMD.ToByteValue();
jTNEPackage.MsgId = JTNEMsgId.heartbeat.ToByteValue();
jTNEPackage.VIN = "123456789";
var hex = JTNESerializer.Serialize(jTNEPackage).ToHexString();
Assert.Equal("232307FE3132333435363738390000000000000000010000C9", hex);
}

[Fact]
public void Test2()
{
var data = "232307FE3132333435363738390000000000000000010000C9".ToHexBytes();
JTNEPackage jTNEPackage = JTNESerializer.Deserialize(data);
Assert.Equal(JTNEAskId.CMD.ToByteValue(), jTNEPackage.AskId);
Assert.Equal(JTNEMsgId.heartbeat.ToByteValue(), jTNEPackage.MsgId);
Assert.Equal("123456789", jTNEPackage.VIN);
Assert.Null(jTNEPackage.Bodies);
}
}
}

+ 35
- 0
src/JTNE.Protocol.Test/Package/JTNE_0x07_Package_DeviceTest.cs Просмотреть файл

@@ -0,0 +1,35 @@
using JTNE.Protocol.Extensions;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Enums;
using JTNE.Protocol.MessageBody;

namespace JTNE.Protocol.Test.Package
{
public class JTNE_0x07_Package_DeviceTest
{
[Fact]
public void Test1()
{
JTNEPackage_Device jTNEPackage_Device = new JTNEPackage_Device();
jTNEPackage_Device.AskId = JTNEAskId.CMD.ToByteValue();
jTNEPackage_Device.MsgId = JTNEMsgId_Device.heartbeat.ToByteValue();
jTNEPackage_Device.VIN = "123456789";
var hex = JTNESerializer_Device.Serialize(jTNEPackage_Device).ToHexString();
Assert.Equal("232307FE3132333435363738390000000000000000010000C9", hex);
}

[Fact]
public void Test2()
{
var data = "232307FE3132333435363738390000000000000000010000C9".ToHexBytes();
JTNEPackage_Device jTNEPackage_Device = JTNESerializer_Device.Deserialize(data);
Assert.Equal(JTNEAskId.CMD.ToByteValue(), jTNEPackage_Device.AskId);
Assert.Equal(JTNEMsgId_Device.heartbeat.ToByteValue(), jTNEPackage_Device.MsgId);
Assert.Equal("123456789", jTNEPackage_Device.VIN);
Assert.Null(jTNEPackage_Device.Bodies);
}
}
}

+ 0
- 35
src/JTNE.Protocol.Test/Package/JTNE_0x08_PackageTest.cs Просмотреть файл

@@ -1,35 +0,0 @@
using JTNE.Protocol.Extensions;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Enums;
using JTNE.Protocol.MessageBody;

namespace JTNE.Protocol.Test.Package
{
public class JTNE_0x08_PackageTest
{
[Fact]
public void Test1()
{
JTNEPackage jTNEPackage = new JTNEPackage();
jTNEPackage.AskId = JTNEAskId.CMD.ToByteValue();
jTNEPackage.MsgId = JTNEMsgId.checktime.ToByteValue();
jTNEPackage.VIN = "123456789";
var hex = JTNESerializer.Serialize(jTNEPackage).ToHexString();
Assert.Equal("232308FE3132333435363738390000000000000000010000C6", hex);
}

[Fact]
public void Test2()
{
var data = "232308FE3132333435363738390000000000000000010000C6".ToHexBytes();
JTNEPackage jTNEPackage = JTNESerializer.Deserialize(data);
Assert.Equal(JTNEAskId.CMD.ToByteValue(), jTNEPackage.AskId);
Assert.Equal(JTNEMsgId.checktime.ToByteValue(), jTNEPackage.MsgId);
Assert.Equal("123456789", jTNEPackage.VIN);
Assert.Null(jTNEPackage.Bodies);
}
}
}

+ 35
- 0
src/JTNE.Protocol.Test/Package/JTNE_0x08_Package_DeviceTest.cs Просмотреть файл

@@ -0,0 +1,35 @@
using JTNE.Protocol.Extensions;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using JTNE.Protocol.Enums;
using JTNE.Protocol.MessageBody;

namespace JTNE.Protocol.Test.Package
{
public class JTNE_0x08_Package_DeviceTest
{
[Fact]
public void Test1()
{
JTNEPackage_Device jTNEPackage_Device = new JTNEPackage_Device();
jTNEPackage_Device.AskId = JTNEAskId.CMD.ToByteValue();
jTNEPackage_Device.MsgId = JTNEMsgId_Device.checktime.ToByteValue();
jTNEPackage_Device.VIN = "123456789";
var hex = JTNESerializer_Device.Serialize(jTNEPackage_Device).ToHexString();
Assert.Equal("232308FE3132333435363738390000000000000000010000C6", hex);
}

[Fact]
public void Test2()
{
var data = "232308FE3132333435363738390000000000000000010000C6".ToHexBytes();
JTNEPackage_Device jTNEPackage_Device = JTNESerializer_Device.Deserialize(data);
Assert.Equal(JTNEAskId.CMD.ToByteValue(), jTNEPackage_Device.AskId);
Assert.Equal(JTNEMsgId_Device.checktime.ToByteValue(), jTNEPackage_Device.MsgId);
Assert.Equal("123456789", jTNEPackage_Device.VIN);
Assert.Null(jTNEPackage_Device.Bodies);
}
}
}

src/JTNE.Protocol/Enums/JTNEMsgId.cs → src/JTNE.Protocol/Enums/JTNEMsgId_Device.cs Просмотреть файл

@@ -9,46 +9,37 @@ namespace JTNE.Protocol.Enums
/// <summary>
/// 命令单元
/// </summary>
public enum JTNEMsgId:byte
public enum JTNEMsgId_Device:byte
{
/// <summary>
/// 车辆登入
/// </summary>
[JTNEBodiesType(typeof(JTNE_0x01))]
[JTNEBodiesType(typeof(JTNE_0x01_Device))]
login = 0x01,
/// <summary>
/// 实时信息上传
/// </summary>
[JTNEBodiesType(typeof(JTNE_0x02))]
[JTNEBodiesType(typeof(JTNE_0x02_Device))]
uploadim = 0x02,
/// <summary>
/// 补传信息上传
/// </summary>
[JTNEBodiesType(typeof(JTNE_0x03_Device))]
uploadsup = 0x03,
/// <summary>
/// 车辆登出
/// </summary>
[JTNEBodiesType(typeof(JTNE_0x04))]
[JTNEBodiesType(typeof(JTNE_0x04_Device))]
loginout = 0x04,
/// <summary>
/// 平台登入
/// </summary>
[JTNEBodiesType(typeof(JTNE_0x05))]
platformlogin = 0x05,
/// <summary>
/// 平台登出
/// </summary>
[JTNEBodiesType(typeof(JTNE_0x06))]
platformlogout = 0x06,
/// <summary>
/// 心跳
/// </summary>
[JTNEBodiesType(typeof(JTNE_0x07))]
[JTNEBodiesType(typeof(JTNE_0x07_Device))]
heartbeat = 0x07,
/// <summary>
/// 终端校时
/// </summary>
[JTNEBodiesType(typeof(JTNE_0x08))]
[JTNEBodiesType(typeof(JTNE_0x08_Device))]
checktime = 0x08,
/// <summary>
/// 查询命令

+ 45
- 0
src/JTNE.Protocol/Enums/JTNEMsgId_Platform.cs Просмотреть файл

@@ -0,0 +1,45 @@
using JTNE.Protocol.Attributes;
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;

namespace JTNE.Protocol.Enums
{
/// <summary>
/// 命令单元
/// </summary>
public enum JTNEMsgId_Platform:byte
{
/// <summary>
/// 车辆登入
/// </summary>
[JTNEBodiesType(typeof(JTNE_0x01_Platform))]
login = 0x01,
/// <summary>
/// 实时信息上传
/// </summary>
[JTNEBodiesType(typeof(JTNE_0x02_Platform))]
uploadim = 0x02,
/// <summary>
/// 补传信息上传
/// </summary>
[JTNEBodiesType(typeof(JTNE_0x03_Platform))]
uploadsup = 0x03,
/// <summary>
/// 车辆登出
/// </summary>
[JTNEBodiesType(typeof(JTNE_0x04_Platform))]
loginout = 0x04,
/// <summary>
/// 平台登入
/// </summary>
[JTNEBodiesType(typeof(JTNE_0x05_Platform))]
platformlogin = 0x05,
/// <summary>
/// 平台登出
/// </summary>
[JTNEBodiesType(typeof(JTNE_0x06_Platform))]
platformlogout = 0x06,
}
}

src/JTNE.Protocol/Extensions/JTNEPackageExtensions.cs → src/JTNE.Protocol/Extensions/JTNEPackage_DeviceExtensions.cs Просмотреть файл

@@ -8,7 +8,7 @@ namespace JTNE.Protocol.Extensions
/// <summary>
///
/// </summary>
public static class JTNEPackageExtensions
public static class JTNEPackage_DeviceExtensions
{
/// <summary>
///
@@ -19,10 +19,10 @@ namespace JTNE.Protocol.Extensions
/// <param name="vin"></param>
/// <param name="bodies"></param>
/// <returns></returns>
public static JTNEPackage Create<TJTNEBodies>(this JTNEMsgId msgId,string vin, JTNEAskId askId, TJTNEBodies bodies)
public static JTNEPackage_Device Create<TJTNEBodies>(this JTNEMsgId_Device msgId,string vin, JTNEAskId askId, TJTNEBodies bodies)
where TJTNEBodies : JTNEBodies
{
JTNEPackage jTNEPackage = new JTNEPackage();
JTNEPackage_Device jTNEPackage = new JTNEPackage_Device();
jTNEPackage.AskId = askId.ToByteValue();
jTNEPackage.MsgId = msgId.ToByteValue();
jTNEPackage.Bodies = bodies;
@@ -37,9 +37,9 @@ namespace JTNE.Protocol.Extensions
/// <param name="vin"></param>
/// <param name="askId"></param>
/// <returns></returns>
public static JTNEPackage Create(this JTNEMsgId msgId, string vin, JTNEAskId askId)
public static JTNEPackage_Device Create(this JTNEMsgId_Device msgId, string vin, JTNEAskId askId)
{
JTNEPackage jTNEPackage = new JTNEPackage();
JTNEPackage_Device jTNEPackage = new JTNEPackage_Device();
jTNEPackage.AskId = askId.ToByteValue();
jTNEPackage.MsgId = msgId.ToByteValue();
jTNEPackage.VIN = vin;
@@ -55,10 +55,10 @@ namespace JTNE.Protocol.Extensions
/// <param name="askId"></param>
/// <param name="bodies"></param>
/// <returns></returns>
public static JTNEPackage CreateCustomMsgId<TJTNEBodies>(this byte msgId, string vin, JTNEAskId askId, TJTNEBodies bodies)
public static JTNEPackage_Device CreateCustomMsgId<TJTNEBodies>(this byte msgId, string vin, JTNEAskId askId, TJTNEBodies bodies)
where TJTNEBodies : JTNEBodies
{
JTNEPackage jTNEPackage = new JTNEPackage();
JTNEPackage_Device jTNEPackage = new JTNEPackage_Device();
jTNEPackage.AskId = askId.ToByteValue();
jTNEPackage.MsgId = msgId;
jTNEPackage.Bodies = bodies;
@@ -73,9 +73,9 @@ namespace JTNE.Protocol.Extensions
/// <param name="askId"></param>
/// <param name="vin"></param>
/// <returns></returns>
public static JTNEPackage CreateCustomMsgId(this byte msgId, string vin, JTNEAskId askId)
public static JTNEPackage_Device CreateCustomMsgId(this byte msgId, string vin, JTNEAskId askId)
{
JTNEPackage jTNEPackage = new JTNEPackage();
JTNEPackage_Device jTNEPackage = new JTNEPackage_Device();
jTNEPackage.AskId = askId.ToByteValue();
jTNEPackage.MsgId = msgId;
jTNEPackage.VIN = vin;

+ 85
- 0
src/JTNE.Protocol/Extensions/JTNEPackage_PlatformExtensions.cs Просмотреть файл

@@ -0,0 +1,85 @@
using JTNE.Protocol.Enums;
using System;
using System.Collections.Generic;
using System.Text;

namespace JTNE.Protocol.Extensions
{
/// <summary>
///
/// </summary>
public static class JTNEPackage_PlatformExtensions
{
/// <summary>
///
/// </summary>
/// <typeparam name="TJTNEBodies"></typeparam>
/// <param name="msgId"></param>
/// <param name="askId"></param>
/// <param name="vin"></param>
/// <param name="bodies"></param>
/// <returns></returns>
public static JTNEPackage_Platform Create<TJTNEBodies>(this JTNEMsgId_Platform msgId,string vin, JTNEAskId askId, TJTNEBodies bodies)
where TJTNEBodies : JTNEBodies
{
JTNEPackage_Platform jTNEPackage = new JTNEPackage_Platform();
jTNEPackage.AskId = askId.ToByteValue();
jTNEPackage.MsgId = msgId.ToByteValue();
jTNEPackage.Bodies = bodies;
jTNEPackage.VIN = vin;
return jTNEPackage;
}

/// <summary>
///
/// </summary>
/// <param name="msgId"></param>
/// <param name="vin"></param>
/// <param name="askId"></param>
/// <returns></returns>
public static JTNEPackage_Platform Create(this JTNEMsgId_Platform msgId, string vin, JTNEAskId askId)
{
JTNEPackage_Platform jTNEPackage = new JTNEPackage_Platform();
jTNEPackage.AskId = askId.ToByteValue();
jTNEPackage.MsgId = msgId.ToByteValue();
jTNEPackage.VIN = vin;
return jTNEPackage;
}

/// <summary>
///
/// </summary>
/// <typeparam name="TJTNEBodies"></typeparam>
/// <param name="msgId"></param>
/// <param name="vin"></param>
/// <param name="askId"></param>
/// <param name="bodies"></param>
/// <returns></returns>
public static JTNEPackage_Platform CreateCustomMsgId<TJTNEBodies>(this byte msgId, string vin, JTNEAskId askId, TJTNEBodies bodies)
where TJTNEBodies : JTNEBodies
{
JTNEPackage_Platform jTNEPackage = new JTNEPackage_Platform();
jTNEPackage.AskId = askId.ToByteValue();
jTNEPackage.MsgId = msgId;
jTNEPackage.Bodies = bodies;
jTNEPackage.VIN = vin;
return jTNEPackage;
}

/// <summary>
///
/// </summary>
/// <param name="msgId"></param>
/// <param name="askId"></param>
/// <param name="vin"></param>
/// <returns></returns>
public static JTNEPackage_Platform CreateCustomMsgId(this byte msgId, string vin, JTNEAskId askId)
{
JTNEPackage_Platform jTNEPackage = new JTNEPackage_Platform();
jTNEPackage.AskId = askId.ToByteValue();
jTNEPackage.MsgId = msgId;
jTNEPackage.VIN = vin;
return jTNEPackage;
}
}
}

src/JTNE.Protocol/Formatters/JTNEHeaderPackageFormatter.cs → src/JTNE.Protocol/Formatters/JTNEHeaderPackage_DeviceFormatter.cs Просмотреть файл

@@ -8,13 +8,13 @@ using System.Text;

namespace JTNE.Protocol.Formatters
{
public class JTNEHeaderPackageFormatter : IJTNEFormatter<JTNEHeaderPackage>
public class JTNEHeaderPackage_DeviceFormatter : IJTNEFormatter<JTNEHeaderPackage_Device>
{
public JTNEHeaderPackage Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
public JTNEHeaderPackage_Device Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
// 1.进行固定头校验
if (bytes[offset] != JTNEPackage.BeginFlag && bytes[offset + 1] == JTNEPackage.BeginFlag)
if (bytes[offset] != JTNEPackage_Device.BeginFlag && bytes[offset + 1] == JTNEPackage_Device.BeginFlag)
throw new JTNEException(JTNEErrorCode.BeginFlagError, $"{bytes[offset]},{bytes[offset + 1]}");
// 2.进行BCC校验码
// 校验位 = 报文长度 - 最后一位(校验位)
@@ -25,30 +25,30 @@ namespace JTNE.Protocol.Formatters
if (bCCCode != bCCCode2)
throw new JTNEException(JTNEErrorCode.BCCCodeError, $"request:{bCCCode}!=calculate:{bCCCode2}");
}
JTNEHeaderPackage jTNEPackage = new JTNEHeaderPackage();
JTNEHeaderPackage_Device jTNEPackage_Device = new JTNEHeaderPackage_Device();
offset += 2;
// 3.命令标识
jTNEPackage.MsgId = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNEPackage_Device.MsgId = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
// 4.应答标识
jTNEPackage.AskId = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNEPackage_Device.AskId = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
// 5.VIN
jTNEPackage.VIN = JTNEBinaryExtensions.ReadStringLittle(bytes, ref offset, 17);
jTNEPackage_Device.VIN = JTNEBinaryExtensions.ReadStringLittle(bytes, ref offset, 17);
// 6.数据加密方式
jTNEPackage.EncryptMethod = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNEPackage_Device.EncryptMethod = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
// 7.数据单元长度是数据单元的总字节数
jTNEPackage.DataUnitLength = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNEPackage_Device.DataUnitLength = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
// 8.数据体
// 8.1.根据数据加密方式进行解码
// todo: 8.2.解析出对应数据体
if (jTNEPackage.DataUnitLength > 0)
if (jTNEPackage_Device.DataUnitLength > 0)
{
Type jTNEBodiesImplType = JTNEMsgIdFactory.GetBodiesImplTypeByMsgId(jTNEPackage.MsgId);
Type jTNEBodiesImplType = JTNEMsgId_DeviceFactory.GetBodiesImplTypeByMsgId(jTNEPackage_Device.MsgId);
if (jTNEBodiesImplType != null)
{
int bodyReadSize = 0;
try
{
jTNEPackage.Bodies = bytes.Slice(offset, jTNEPackage.DataUnitLength).ToArray();
jTNEPackage_Device.Bodies = bytes.Slice(offset, jTNEPackage_Device.DataUnitLength).ToArray();
}
catch (Exception ex)
{
@@ -58,12 +58,12 @@ namespace JTNE.Protocol.Formatters
}
}
// 9.校验码
jTNEPackage.BCCCode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNEPackage_Device.BCCCode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
readSize = offset;
return jTNEPackage;
return jTNEPackage_Device;
}

public int Serialize(ref byte[] bytes, int offset, JTNEHeaderPackage value)
public int Serialize(ref byte[] bytes, int offset, JTNEHeaderPackage_Device value)
{
// 1.起始符1
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.BeginFlag1);

+ 97
- 0
src/JTNE.Protocol/Formatters/JTNEHeaderPackage_PlatformFormatter.cs Просмотреть файл

@@ -0,0 +1,97 @@
using JTNE.Protocol.Enums;
using JTNE.Protocol.Exceptions;
using JTNE.Protocol.Extensions;
using JTNE.Protocol.Internal;
using System;
using System.Collections.Generic;
using System.Text;

namespace JTNE.Protocol.Formatters
{
public class JTNEHeaderPackage_PlatformFormatter : IJTNEFormatter<JTNEHeaderPackage_Platform>
{
public JTNEHeaderPackage_Platform Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
// 1.进行固定头校验
if (bytes[offset] != JTNEPackage_Platform.BeginFlag && bytes[offset + 1] == JTNEPackage_Platform.BeginFlag)
throw new JTNEException(JTNEErrorCode.BeginFlagError, $"{bytes[offset]},{bytes[offset + 1]}");
// 2.进行BCC校验码
// 校验位 = 报文长度 - 最后一位(校验位)
if (!JTNEGlobalConfigs.Instance.SkipCRCCode)
{
byte bCCCode = bytes[bytes.Length - 1];
byte bCCCode2 = bytes.ToXor(2, bytes.Length - 1);
if (bCCCode != bCCCode2)
throw new JTNEException(JTNEErrorCode.BCCCodeError, $"request:{bCCCode}!=calculate:{bCCCode2}");
}
JTNEHeaderPackage_Platform jTNEPackage_Platform = new JTNEHeaderPackage_Platform();
offset += 2;
// 3.命令标识
jTNEPackage_Platform.MsgId = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
// 4.应答标识
jTNEPackage_Platform.AskId = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
// 5.VIN
jTNEPackage_Platform.VIN = JTNEBinaryExtensions.ReadStringLittle(bytes, ref offset, 17);
// 6.数据加密方式
jTNEPackage_Platform.EncryptMethod = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
// 7.数据单元长度是数据单元的总字节数
jTNEPackage_Platform.DataUnitLength = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
// 8.数据体
// 8.1.根据数据加密方式进行解码
// todo: 8.2.解析出对应数据体
if (jTNEPackage_Platform.DataUnitLength > 0)
{
Type jTNEBodiesImplType = JTNEMsgId_DeviceFactory.GetBodiesImplTypeByMsgId(jTNEPackage_Platform.MsgId);
if (jTNEBodiesImplType != null)
{
int bodyReadSize = 0;
try
{
jTNEPackage_Platform.Bodies = bytes.Slice(offset, jTNEPackage_Platform.DataUnitLength).ToArray();
}
catch (Exception ex)
{
throw new JTNEException(JTNEErrorCode.BodiesParseError, ex);
}
offset += bodyReadSize;
}
}
// 9.校验码
jTNEPackage_Platform.BCCCode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
readSize = offset;
return jTNEPackage_Platform;
}

public int Serialize(ref byte[] bytes, int offset, JTNEHeaderPackage_Platform value)
{
// 1.起始符1
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.BeginFlag1);
// 2.起始符2
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.BeginFlag2);
// 3.命令标识
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MsgId);
// 4.应答标识
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.AskId);
// 5.VIN
offset += JTNEBinaryExtensions.WriteStringPadRightLittle(bytes, offset, value.VIN, 17);
// 6.数据加密方式
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.EncryptMethod);
if (value.Bodies != null)
{
// 7.数据体
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, (ushort)value.Bodies.Length);
// 8.处理数据体
offset += JTNEBinaryExtensions.WriteBytesLittle(bytes, offset, value.Bodies);
}
else
{
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, 0);
}
// 9.校验码
var bccCode = bytes.ToXor(2, offset);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, bccCode);
return offset;
}
}
}

src/JTNE.Protocol/Formatters/JTNEPackageFormatter.cs → src/JTNE.Protocol/Formatters/JTNEPackage_DeviceFormatter.cs Просмотреть файл

@@ -8,15 +8,15 @@ using System.Text;

namespace JTNE.Protocol.Formatters
{
public class JTNEPackageFormatter : IJTNEFormatter<JTNEPackage>
public class JTNEPackage_DeviceFormatter : IJTNEFormatter<JTNEPackage_Device>
{
private const byte FixedDataBodyLength = 2;

public JTNEPackage Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
public JTNEPackage_Device Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
// 1.进行固定头校验
if (bytes[offset] != JTNEPackage.BeginFlag && bytes[offset + 1] == JTNEPackage.BeginFlag)
if (bytes[offset] != JTNEPackage_Device.BeginFlag && bytes[offset + 1] == JTNEPackage_Device.BeginFlag)
throw new JTNEException(JTNEErrorCode.BeginFlagError, $"{bytes[offset]},{bytes[offset + 1]}");
// 2.进行BCC校验码
// 校验位 = 报文长度 - 最后一位(校验位)
@@ -27,43 +27,43 @@ namespace JTNE.Protocol.Formatters
if (bCCCode != bCCCode2)
throw new JTNEException(JTNEErrorCode.BCCCodeError, $"request:{bCCCode}!=calculate:{bCCCode2}");
}
JTNEPackage jTNEPackage = new JTNEPackage();
JTNEPackage_Device jTNEPackage_Device = new JTNEPackage_Device();
offset += 2;
// 3.命令标识
jTNEPackage.MsgId = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNEPackage_Device.MsgId = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
// 4.应答标识
jTNEPackage.AskId = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNEPackage_Device.AskId = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
// 5.VIN
jTNEPackage.VIN = JTNEBinaryExtensions.ReadStringLittle(bytes, ref offset, 17);
jTNEPackage_Device.VIN = JTNEBinaryExtensions.ReadStringLittle(bytes, ref offset, 17);
// 6.数据加密方式
jTNEPackage.EncryptMethod = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNEPackage_Device.EncryptMethod = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
// 7.数据单元长度是数据单元的总字节数
jTNEPackage.DataUnitLength = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNEPackage_Device.DataUnitLength = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
// 8.数据体
// 8.1.根据数据加密方式进行解码
// 8.2.解析出对应数据体
if (jTNEPackage.DataUnitLength > 0)
if (jTNEPackage_Device.DataUnitLength > 0)
{
Type jTNEBodiesImplType = JTNEMsgIdFactory.GetBodiesImplTypeByMsgId(jTNEPackage.MsgId);
Type jTNEBodiesImplType = JTNEMsgId_DeviceFactory.GetBodiesImplTypeByMsgId(jTNEPackage_Device.MsgId);
if (jTNEBodiesImplType != null)
{
int bodyReadSize = 0;
try
{
if (jTNEPackage.EncryptMethod == 0x01)
if (jTNEPackage_Device.EncryptMethod == 0x01)
{
jTNEPackage.Bodies = JTNEFormatterResolverExtensions.JTNEDynamicDeserialize(
jTNEPackage_Device.Bodies = JTNEFormatterResolverExtensions.JTNEDynamicDeserialize(
JTNEFormatterExtensions.GetFormatter(jTNEBodiesImplType),
bytes.Slice(offset, jTNEPackage.DataUnitLength),
bytes.Slice(offset, jTNEPackage_Device.DataUnitLength),
out bodyReadSize);
}
else
{
if (JTNEGlobalConfigs.Instance.DataBodiesEncrypt != null)
{
var data = JTNEGlobalConfigs.Instance.DataBodiesEncrypt(jTNEPackage.EncryptMethod)
.Decrypt(bytes.Slice(offset, jTNEPackage.DataUnitLength).ToArray());
jTNEPackage.Bodies = JTNEFormatterResolverExtensions.JTNEDynamicDeserialize(
var data = JTNEGlobalConfigs.Instance.DataBodiesEncrypt(jTNEPackage_Device.EncryptMethod)
.Decrypt(bytes.Slice(offset, jTNEPackage_Device.DataUnitLength).ToArray());
jTNEPackage_Device.Bodies = JTNEFormatterResolverExtensions.JTNEDynamicDeserialize(
JTNEFormatterExtensions.GetFormatter(jTNEBodiesImplType),
data,
out bodyReadSize);
@@ -78,12 +78,12 @@ namespace JTNE.Protocol.Formatters
}
}
// 9.校验码
jTNEPackage.BCCCode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNEPackage_Device.BCCCode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
readSize = offset;
return jTNEPackage;
return jTNEPackage_Device;
}

public int Serialize(ref byte[] bytes, int offset, JTNEPackage value)
public int Serialize(ref byte[] bytes, int offset, JTNEPackage_Device value)
{
// 1.起始符1
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.BeginFlag1);
@@ -100,7 +100,7 @@ namespace JTNE.Protocol.Formatters
// 7.记录当前偏移量
int tmpOffset = offset;
// 8.数据体
Type jTNEBodiesImplType = JTNEMsgIdFactory.GetBodiesImplTypeByMsgId(value.MsgId);
Type jTNEBodiesImplType = JTNEMsgId_DeviceFactory.GetBodiesImplTypeByMsgId(value.MsgId);
int messageBodyOffset = 0;
if (jTNEBodiesImplType != null)
{

+ 156
- 0
src/JTNE.Protocol/Formatters/JTNEPackage_PlatformFormatter.cs Просмотреть файл

@@ -0,0 +1,156 @@
using JTNE.Protocol.Enums;
using JTNE.Protocol.Exceptions;
using JTNE.Protocol.Extensions;
using JTNE.Protocol.Internal;
using System;
using System.Collections.Generic;
using System.Text;

namespace JTNE.Protocol.Formatters
{
public class JTNEPackage_PlatformFormatter : IJTNEFormatter<JTNEPackage_Platform>
{
private const byte FixedDataBodyLength = 2;

public JTNEPackage_Platform Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
// 1.进行固定头校验
if (bytes[offset] != JTNEPackage_Platform.BeginFlag && bytes[offset + 1] == JTNEPackage_Platform.BeginFlag)
throw new JTNEException(JTNEErrorCode.BeginFlagError, $"{bytes[offset]},{bytes[offset + 1]}");
// 2.进行BCC校验码
// 校验位 = 报文长度 - 最后一位(校验位)
if (!JTNEGlobalConfigs.Instance.SkipCRCCode)
{
byte bCCCode = bytes[bytes.Length - 1];
byte bCCCode2 = bytes.ToXor(2, bytes.Length - 1);
if (bCCCode != bCCCode2)
throw new JTNEException(JTNEErrorCode.BCCCodeError, $"request:{bCCCode}!=calculate:{bCCCode2}");
}
JTNEPackage_Platform jTNEPackage_Platform = new JTNEPackage_Platform();
offset += 2;
// 3.命令标识
jTNEPackage_Platform.MsgId = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
// 4.应答标识
jTNEPackage_Platform.AskId = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
// 5.VIN
jTNEPackage_Platform.VIN = JTNEBinaryExtensions.ReadStringLittle(bytes, ref offset, 17);
// 6.数据加密方式
jTNEPackage_Platform.EncryptMethod = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
// 7.数据单元长度是数据单元的总字节数
jTNEPackage_Platform.DataUnitLength = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
// 8.数据体
// 8.1.根据数据加密方式进行解码
// 8.2.解析出对应数据体
if (jTNEPackage_Platform.DataUnitLength > 0)
{
Type jTNEBodiesImplType = JTNEMsgId_PlatformFactory.GetBodiesImplTypeByMsgId(jTNEPackage_Platform.MsgId);
if (jTNEBodiesImplType != null)
{
int bodyReadSize = 0;
try
{
if (jTNEPackage_Platform.EncryptMethod == 0x01)
{
jTNEPackage_Platform.Bodies = JTNEFormatterResolverExtensions.JTNEDynamicDeserialize(
JTNEFormatterExtensions.GetFormatter(jTNEBodiesImplType),
bytes.Slice(offset, jTNEPackage_Platform.DataUnitLength),
out bodyReadSize);
}
else
{
if (JTNEGlobalConfigs.Instance.DataBodiesEncrypt != null)
{
var data = JTNEGlobalConfigs.Instance.DataBodiesEncrypt(jTNEPackage_Platform.EncryptMethod)
.Decrypt(bytes.Slice(offset, jTNEPackage_Platform.DataUnitLength).ToArray());
jTNEPackage_Platform.Bodies = JTNEFormatterResolverExtensions.JTNEDynamicDeserialize(
JTNEFormatterExtensions.GetFormatter(jTNEBodiesImplType),
data,
out bodyReadSize);
}
}
}
catch (Exception ex)
{
throw new JTNEException(JTNEErrorCode.BodiesParseError, ex);
}
offset += bodyReadSize;
}
}
// 9.校验码
jTNEPackage_Platform.BCCCode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
readSize = offset;
return jTNEPackage_Platform;
}

public int Serialize(ref byte[] bytes, int offset, JTNEPackage_Platform value)
{
// 1.起始符1
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.BeginFlag1);
// 2.起始符2
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.BeginFlag2);
// 3.命令标识
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MsgId);
// 4.应答标识
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.AskId);
// 5.VIN
offset += JTNEBinaryExtensions.WriteStringPadRightLittle(bytes, offset, value.VIN, 17);
// 6.数据加密方式
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.EncryptMethod);
// 7.记录当前偏移量
int tmpOffset = offset;
// 8.数据体
Type jTNEBodiesImplType = JTNEMsgId_PlatformFactory.GetBodiesImplTypeByMsgId(value.MsgId);
int messageBodyOffset = 0;
if (jTNEBodiesImplType != null)
{
if (value.Bodies != null)
{
// 8.1.处理数据体
// 8.2.判断是否有加密
messageBodyOffset = JTNEFormatterResolverExtensions.JTNEDynamicSerialize(
JTNEFormatterExtensions.GetFormatter(jTNEBodiesImplType),
ref bytes,
offset + FixedDataBodyLength,
value.Bodies);
if (value.EncryptMethod == 0x01)
{
// 9.通过tmpOffset反写数据单元长度
JTNEBinaryExtensions.WriteUInt16Little(bytes, tmpOffset, (ushort)(messageBodyOffset - offset- FixedDataBodyLength));
offset = messageBodyOffset;
}
else
{
if (JTNEGlobalConfigs.Instance.DataBodiesEncrypt != null)
{
// 8.1.先进行分割数据体
var bodiesData = bytes.AsSpan(tmpOffset+ FixedDataBodyLength, messageBodyOffset - offset - FixedDataBodyLength).ToArray();
// 8.2.将数据体进行加密
var data = JTNEGlobalConfigs.Instance.DataBodiesEncrypt(value.EncryptMethod)
.Encrypt(bodiesData);
// 9.通过tmpOffset反写加密后数据单元长度
JTNEBinaryExtensions.WriteUInt16Little(bytes, tmpOffset, (ushort)data.Length);
// 8.3.写入加密后的数据体
offset += FixedDataBodyLength;
offset += JTNEBinaryExtensions.WriteBytesLittle(bytes, offset, data);
}
}
}
else
{
// 9.数据单元长度
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, 0);
}
}
else
{
// 9.数据单元长度
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, 0);
}
// 10.校验码
var bccCode = bytes.ToXor(2, offset);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, bccCode);
return offset;
}
}
}

+ 46
- 0
src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x01_Device_Formatter.cs Просмотреть файл

@@ -0,0 +1,46 @@
using JTNE.Protocol.Extensions;
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;

namespace JTNE.Protocol.Formatters.MessageBodyFormatters
{
public class JTNE_0x01_Device_Formatter : IJTNEFormatter<JTNE_0x01_Device>
{
public JTNE_0x01_Device Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x01_Device jTNE_0X01_Device = new JTNE_0x01_Device();
jTNE_0X01_Device.PDATime = JTNEBinaryExtensions.ReadDateTime6Little(bytes, ref offset);
jTNE_0X01_Device.LoginNum = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X01_Device.SIM = JTNEBinaryExtensions.ReadStringLittle(bytes, ref offset, 20);
jTNE_0X01_Device.BatteryCount = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X01_Device.BatteryLength = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X01_Device.BatteryNos = new List<string>();
if ((jTNE_0X01_Device.BatteryCount * jTNE_0X01_Device.BatteryLength) > 0)
{
for (int i = 0; i < jTNE_0X01_Device.BatteryCount; i++)
{
jTNE_0X01_Device.BatteryNos.Add(JTNEBinaryExtensions.ReadStringLittle(bytes, ref offset, jTNE_0X01_Device.BatteryLength));
}
}
readSize = offset;
return jTNE_0X01_Device;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x01_Device value)
{
offset += JTNEBinaryExtensions.WriteDateTime6Little(bytes, offset, value.PDATime);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.LoginNum);
offset += JTNEBinaryExtensions.WriteStringLittle(bytes, offset, value.SIM, 20);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, (byte)value.BatteryNos.Count);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.BatteryLength);
foreach(var item in value.BatteryNos)
{
offset += JTNEBinaryExtensions.WriteStringLittle(bytes, offset, item, value.BatteryLength);
}
return offset;
}
}
}

+ 0
- 46
src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x01_Formatter.cs Просмотреть файл

@@ -1,46 +0,0 @@
using JTNE.Protocol.Extensions;
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;

namespace JTNE.Protocol.Formatters.MessageBodyFormatters
{
public class JTNE_0x01_Formatter : IJTNEFormatter<JTNE_0x01>
{
public JTNE_0x01 Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x01 jTNE_0X01 = new JTNE_0x01();
jTNE_0X01.PDATime = JTNEBinaryExtensions.ReadDateTime6Little(bytes, ref offset);
jTNE_0X01.LoginNum = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X01.SIM = JTNEBinaryExtensions.ReadStringLittle(bytes, ref offset, 20);
jTNE_0X01.BatteryCount = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X01.BatteryLength = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X01.BatteryNos = new List<string>();
if ((jTNE_0X01.BatteryCount * jTNE_0X01.BatteryLength) > 0)
{
for (int i = 0; i < jTNE_0X01.BatteryCount; i++)
{
jTNE_0X01.BatteryNos.Add(JTNEBinaryExtensions.ReadStringLittle(bytes, ref offset, jTNE_0X01.BatteryLength));
}
}
readSize = offset;
return jTNE_0X01;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x01 value)
{
offset += JTNEBinaryExtensions.WriteDateTime6Little(bytes, offset, value.PDATime);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.LoginNum);
offset += JTNEBinaryExtensions.WriteStringLittle(bytes, offset, value.SIM, 20);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, (byte)value.BatteryNos.Count);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.BatteryLength);
foreach(var item in value.BatteryNos)
{
offset += JTNEBinaryExtensions.WriteStringLittle(bytes, offset, item, value.BatteryLength);
}
return offset;
}
}
}

+ 46
- 0
src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x01_Platform_Formatter.cs Просмотреть файл

@@ -0,0 +1,46 @@
using JTNE.Protocol.Extensions;
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;

namespace JTNE.Protocol.Formatters.MessageBodyFormatters
{
public class JTNE_0x01_Platform_Formatter : IJTNEFormatter<JTNE_0x01_Platform>
{
public JTNE_0x01_Platform Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x01_Platform jTNE_0X01_Platform = new JTNE_0x01_Platform();
jTNE_0X01_Platform.PDATime = JTNEBinaryExtensions.ReadDateTime6Little(bytes, ref offset);
jTNE_0X01_Platform.LoginNum = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X01_Platform.SIM = JTNEBinaryExtensions.ReadStringLittle(bytes, ref offset, 20);
jTNE_0X01_Platform.BatteryCount = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X01_Platform.BatteryLength = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X01_Platform.BatteryNos = new List<string>();
if ((jTNE_0X01_Platform.BatteryCount * jTNE_0X01_Platform.BatteryLength) > 0)
{
for (int i = 0; i < jTNE_0X01_Platform.BatteryCount; i++)
{
jTNE_0X01_Platform.BatteryNos.Add(JTNEBinaryExtensions.ReadStringLittle(bytes, ref offset, jTNE_0X01_Platform.BatteryLength));
}
}
readSize = offset;
return jTNE_0X01_Platform;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x01_Platform value)
{
offset += JTNEBinaryExtensions.WriteDateTime6Little(bytes, offset, value.PDATime);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.LoginNum);
offset += JTNEBinaryExtensions.WriteStringLittle(bytes, offset, value.SIM, 20);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, (byte)value.BatteryNos.Count);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.BatteryLength);
foreach(var item in value.BatteryNos)
{
offset += JTNEBinaryExtensions.WriteStringLittle(bytes, offset, item, value.BatteryLength);
}
return offset;
}
}
}

src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x01_Formatter.cs → src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x01_Device_Formatter.cs Просмотреть файл

@@ -6,12 +6,12 @@ using System.Text;

namespace JTNE.Protocol.Formatters.MessageBodyFormatters
{
public class JTNE_0x02_0x01_Formatter : IJTNEFormatter<JTNE_0x02_0x01>
public class JTNE_0x02_0x01_Device_Formatter : IJTNEFormatter<JTNE_0x02_0x01_Device>
{
public JTNE_0x02_0x01 Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
public JTNE_0x02_0x01_Device Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x02_0x01 jTNE_0X02_0X01 = new JTNE_0x02_0x01();
JTNE_0x02_0x01_Device jTNE_0X02_0X01 = new JTNE_0x02_0x01_Device();
jTNE_0X02_0X01.TypeCode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X01.CarStatus= JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X01.ChargeStatus = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
@@ -30,7 +30,7 @@ namespace JTNE.Protocol.Formatters.MessageBodyFormatters
return jTNE_0X02_0X01;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x02_0x01 value)
public int Serialize(ref byte[] bytes, int offset, JTNE_0x02_0x01_Device value)
{
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.TypeCode);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.CarStatus);

+ 48
- 0
src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x01_Platform_Formatter.cs Просмотреть файл

@@ -0,0 +1,48 @@
using JTNE.Protocol.Extensions;
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;

namespace JTNE.Protocol.Formatters.MessageBodyFormatters
{
public class JTNE_0x02_0x01_Platform_Formatter : IJTNEFormatter<JTNE_0x02_0x01_Platform>
{
public JTNE_0x02_0x01_Platform Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x02_0x01_Platform jTNE_0X02_0X01_Platform = new JTNE_0x02_0x01_Platform();
jTNE_0X02_0X01_Platform.TypeCode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X01_Platform.CarStatus= JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X01_Platform.ChargeStatus = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X01_Platform.OperationMode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X01_Platform.Speed = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X02_0X01_Platform.TotalDis = JTNEBinaryExtensions.ReadUInt32Little(bytes, ref offset);
jTNE_0X02_0X01_Platform.TotalVoltage= JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X02_0X01_Platform.TotalTemp = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X02_0X01_Platform.SOC = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X01_Platform.DCStatus = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X01_Platform.Stall = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X01_Platform.Resistance = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
readSize = offset;
return jTNE_0X02_0X01_Platform;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x02_0x01_Platform value)
{
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.TypeCode);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.CarStatus);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.ChargeStatus);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.OperationMode);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.Speed);
offset += JTNEBinaryExtensions.WriteUInt32Little(bytes, offset, value.TotalDis);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.TotalVoltage);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.TotalTemp);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.SOC);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.DCStatus);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.Stall);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.Resistance);
return offset;
}
}
}

src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x02_Formatter.cs → src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x02_Device_Formatter.cs Просмотреть файл

@@ -6,12 +6,12 @@ using System.Text;

namespace JTNE.Protocol.Formatters.MessageBodyFormatters
{
public class JTNE_0x02_0x02_Formatter : IJTNEFormatter<JTNE_0x02_0x02>
public class JTNE_0x02_0x02_Device_Formatter : IJTNEFormatter<JTNE_0x02_0x02_Device>
{
public JTNE_0x02_0x02 Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
public JTNE_0x02_0x02_Device Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x02_0x02 jTNE_0X02_0X02 = new JTNE_0x02_0x02();
JTNE_0x02_0x02_Device jTNE_0X02_0X02 = new JTNE_0x02_0x02_Device();
jTNE_0X02_0X02.TypeCode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X02.ElectricalCount = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X02.Electricals = new List<Metadata.Electrical>();
@@ -32,7 +32,7 @@ namespace JTNE.Protocol.Formatters.MessageBodyFormatters
return jTNE_0X02_0X02;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x02_0x02 value)
public int Serialize(ref byte[] bytes, int offset, JTNE_0x02_0x02_Device value)
{
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.TypeCode);
if(value.Electricals!=null && value.Electricals.Count > 0)

+ 56
- 0
src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x02_Platform_Formatter.cs Просмотреть файл

@@ -0,0 +1,56 @@
using JTNE.Protocol.Extensions;
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;

namespace JTNE.Protocol.Formatters.MessageBodyFormatters
{
public class JTNE_0x02_0x02_Platform_Formatter : IJTNEFormatter<JTNE_0x02_0x02_Platform>
{
public JTNE_0x02_0x02_Platform Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x02_0x02_Platform jTNE_0X02_0X02_Platform = new JTNE_0x02_0x02_Platform();
jTNE_0X02_0X02_Platform.TypeCode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X02_Platform.ElectricalCount = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X02_Platform.Electricals = new List<Metadata.Electrical>();
for (var i=0;i < jTNE_0X02_0X02_Platform.ElectricalCount; i++)
{
Metadata.Electrical electrical = new Metadata.Electrical();
electrical.ElNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
electrical.ElStatus = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
electrical.ElControlTemp = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
electrical.ElSpeed = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
electrical.ElTorque = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
electrical.ElTemp = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
electrical.ElVoltage = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
electrical.ElCurrent = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X02_0X02_Platform.Electricals.Add(electrical);
}
readSize = offset;
return jTNE_0X02_0X02_Platform;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x02_0x02_Platform value)
{
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.TypeCode);
if(value.Electricals!=null && value.Electricals.Count > 0)
{
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, (byte)value.Electricals.Count);
foreach(var item in value.Electricals)
{
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, item.ElNo);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, item.ElStatus);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, item.ElControlTemp);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, item.ElSpeed);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, item.ElTorque);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, item.ElTemp);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, item.ElVoltage);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, item.ElCurrent);
}
}
return offset;
}
}
}

src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x03_Formatter.cs → src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x03_Device_Formatter.cs Просмотреть файл

@@ -6,12 +6,12 @@ using System.Text;

namespace JTNE.Protocol.Formatters.MessageBodyFormatters
{
public class JTNE_0x02_0x03_Formatter : IJTNEFormatter<JTNE_0x02_0x03>
public class JTNE_0x02_0x03_Device_Formatter : IJTNEFormatter<JTNE_0x02_0x03_Device>
{
public JTNE_0x02_0x03 Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
public JTNE_0x02_0x03_Device Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x02_0x03 jTNE_0X02_0X03 = new JTNE_0x02_0x03();
JTNE_0x02_0x03_Device jTNE_0X02_0X03 = new JTNE_0x02_0x03_Device();
jTNE_0X02_0X03.TypeCode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X03.FuelBatteryVoltage = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X02_0X03.FuelBatteryCurrent = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
@@ -29,7 +29,7 @@ namespace JTNE.Protocol.Formatters.MessageBodyFormatters
return jTNE_0X02_0X03;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x02_0x03 value)
public int Serialize(ref byte[] bytes, int offset, JTNE_0x02_0x03_Device value)
{
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.TypeCode);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.FuelBatteryVoltage);

+ 50
- 0
src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x03_Platform_Formatter.cs Просмотреть файл

@@ -0,0 +1,50 @@
using JTNE.Protocol.Extensions;
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;

namespace JTNE.Protocol.Formatters.MessageBodyFormatters
{
public class JTNE_0x02_0x03_Platform_Formatter : IJTNEFormatter<JTNE_0x02_0x03_Platform>
{
public JTNE_0x02_0x03_Platform Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x02_0x03_Platform jTNE_0X02_0X03_Platform = new JTNE_0x02_0x03_Platform();
jTNE_0X02_0X03_Platform.TypeCode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X03_Platform.FuelBatteryVoltage = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X02_0X03_Platform.FuelBatteryCurrent = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X02_0X03_Platform.FuelConsumptionRate = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X02_0X03_Platform.TemperatureProbeCount = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X02_0X03_Platform.Temperatures = JTNEBinaryExtensions.ReadBytesLittle(bytes, ref offset, jTNE_0X02_0X03_Platform.TemperatureProbeCount);
jTNE_0X02_0X03_Platform.HydrogenSystemMaxTemp = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X02_0X03_Platform.HydrogenSystemMaxTempNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X03_Platform.HydrogenSystemMaxConcentrations = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X02_0X03_Platform.HydrogenSystemMaxConcentrationsNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X03_Platform.HydrogenSystemMaxPressure = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X02_0X03_Platform.HydrogenSystemMaxPressureNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X03_Platform.DCStatus = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
readSize = offset;
return jTNE_0X02_0X03_Platform;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x02_0x03_Platform value)
{
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.TypeCode);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.FuelBatteryVoltage);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.FuelBatteryCurrent);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.FuelConsumptionRate);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, (ushort)value.Temperatures.Length);
offset += JTNEBinaryExtensions.WriteBytesLittle(bytes, offset, value.Temperatures);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.HydrogenSystemMaxTemp);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.HydrogenSystemMaxTempNo);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.HydrogenSystemMaxConcentrations);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.HydrogenSystemMaxConcentrationsNo);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.HydrogenSystemMaxPressure);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.HydrogenSystemMaxPressureNo);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.DCStatus);
return offset;
}
}
}

src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x04_Formatter.cs → src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x04_Device_Formatter.cs Просмотреть файл

@@ -6,12 +6,12 @@ using System.Text;

namespace JTNE.Protocol.Formatters.MessageBodyFormatters
{
public class JTNE_0x02_0x04_Formatter : IJTNEFormatter<JTNE_0x02_0x04>
public class JTNE_0x02_0x04_Device_Formatter : IJTNEFormatter<JTNE_0x02_0x04_Device>
{
public JTNE_0x02_0x04 Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
public JTNE_0x02_0x04_Device Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x02_0x04 jTNE_0X02_0X04 = new JTNE_0x02_0x04();
JTNE_0x02_0x04_Device jTNE_0X02_0X04 = new JTNE_0x02_0x04_Device();
jTNE_0X02_0X04.TypeCode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X04.EngineStatus = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X04.Revs = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
@@ -20,7 +20,7 @@ namespace JTNE.Protocol.Formatters.MessageBodyFormatters
return jTNE_0X02_0X04;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x02_0x04 value)
public int Serialize(ref byte[] bytes, int offset, JTNE_0x02_0x04_Device value)
{
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.TypeCode);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.EngineStatus);

+ 32
- 0
src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x04_Platform_Formatter.cs Просмотреть файл

@@ -0,0 +1,32 @@
using JTNE.Protocol.Extensions;
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;

namespace JTNE.Protocol.Formatters.MessageBodyFormatters
{
public class JTNE_0x02_0x04_Platform_Formatter : IJTNEFormatter<JTNE_0x02_0x04_Platform>
{
public JTNE_0x02_0x04_Platform Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x02_0x04_Platform jTNE_0X02_0X04_Platform = new JTNE_0x02_0x04_Platform();
jTNE_0X02_0X04_Platform.TypeCode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X04_Platform.EngineStatus = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X04_Platform.Revs = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X02_0X04_Platform.FuelRate = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
readSize = offset;
return jTNE_0X02_0X04_Platform;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x02_0x04_Platform value)
{
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.TypeCode);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.EngineStatus);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.Revs);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.FuelRate);
return offset;
}
}
}

+ 33
- 0
src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x05_Device_Formatter.cs Просмотреть файл

@@ -0,0 +1,33 @@

using JTNE.Protocol.Extensions;
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;

namespace JTNE.Protocol.Formatters.MessageBodyFormatters
{
public class JTNE_0x02_0x05_Device_Formatter : IJTNEFormatter<JTNE_0x02_0x05_Device>
{
public JTNE_0x02_0x05_Device Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x02_0x05_Device jTNE_0X02_0X05_Device = new JTNE_0x02_0x05_Device();
jTNE_0X02_0X05_Device.TypeCode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X05_Device.PositioStatus = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X05_Device.Lng = JTNEBinaryExtensions.ReadUInt32Little(bytes, ref offset);
jTNE_0X02_0X05_Device.Lat = JTNEBinaryExtensions.ReadUInt32Little(bytes, ref offset);
readSize = offset;
return jTNE_0X02_0X05_Device;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x02_0x05_Device value)
{
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.TypeCode);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.PositioStatus);
offset += JTNEBinaryExtensions.WriteUInt32Little(bytes, offset, value.Lng);
offset += JTNEBinaryExtensions.WriteUInt32Little(bytes, offset, value.Lat);
return offset;
}
}
}

+ 0
- 32
src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x05_Formatter.cs Просмотреть файл

@@ -1,32 +0,0 @@
using JTNE.Protocol.Extensions;
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;

namespace JTNE.Protocol.Formatters.MessageBodyFormatters
{
public class JTNE_0x02_0x05_Formatter : IJTNEFormatter<JTNE_0x02_0x05>
{
public JTNE_0x02_0x05 Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x02_0x05 jTNE_0X02_0X05 = new JTNE_0x02_0x05();
jTNE_0X02_0X05.TypeCode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X05.PositioStatus = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X05.Lng = JTNEBinaryExtensions.ReadUInt32Little(bytes, ref offset);
jTNE_0X02_0X05.Lat = JTNEBinaryExtensions.ReadUInt32Little(bytes, ref offset);
readSize = offset;
return jTNE_0X02_0X05;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x02_0x05 value)
{
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.TypeCode);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.PositioStatus);
offset += JTNEBinaryExtensions.WriteUInt32Little(bytes, offset, value.Lng);
offset += JTNEBinaryExtensions.WriteUInt32Little(bytes, offset, value.Lat);
return offset;
}
}
}

+ 33
- 0
src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x05_Platform_Formatter.cs Просмотреть файл

@@ -0,0 +1,33 @@

using JTNE.Protocol.Extensions;
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;

namespace JTNE.Protocol.Formatters.MessageBodyFormatters
{
public class JTNE_0x02_0x05_Platform_Formatter : IJTNEFormatter<JTNE_0x02_0x05_Platform>
{
public JTNE_0x02_0x05_Platform Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x02_0x05_Platform jTNE_0X02_0X05_Platform = new JTNE_0x02_0x05_Platform();
jTNE_0X02_0X05_Platform.TypeCode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X05_Platform.PositioStatus = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X05_Platform.Lng = JTNEBinaryExtensions.ReadUInt32Little(bytes, ref offset);
jTNE_0X02_0X05_Platform.Lat = JTNEBinaryExtensions.ReadUInt32Little(bytes, ref offset);
readSize = offset;
return jTNE_0X02_0X05_Platform;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x02_0x05_Platform value)
{
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.TypeCode);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.PositioStatus);
offset += JTNEBinaryExtensions.WriteUInt32Little(bytes, offset, value.Lng);
offset += JTNEBinaryExtensions.WriteUInt32Little(bytes, offset, value.Lat);
return offset;
}
}
}

+ 51
- 0
src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x06_Device_Formatter.cs Просмотреть файл

@@ -0,0 +1,51 @@

using JTNE.Protocol.Extensions;
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;

namespace JTNE.Protocol.Formatters.MessageBodyFormatters
{
public class JTNE_0x02_0x06_Device_Formatter : IJTNEFormatter<JTNE_0x02_0x06_Device>
{
public JTNE_0x02_0x06_Device Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x02_0x06_Device jTNE_0X02_0X06_Device = new JTNE_0x02_0x06_Device();
jTNE_0X02_0X06_Device.TypeCode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06_Device.MaxVoltageBatteryAssemblyNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06_Device.MaxVoltageSingleBatteryNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06_Device.MaxVoltageSingleBatteryValue = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X02_0X06_Device.MinVoltageBatteryAssemblyNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06_Device.MinVoltageSingleBatteryNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06_Device.MinVoltageSingleBatteryValue = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X02_0X06_Device.MaxTempProbeBatteryNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06_Device.MaxTempBatteryAssemblyNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06_Device.MaxTempProbeBatteryValue = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06_Device.MinTempProbeBatteryNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06_Device.MinTempBatteryAssemblyNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06_Device.MinTempProbeBatteryValue = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
readSize = offset;
return jTNE_0X02_0X06_Device;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x02_0x06_Device value)
{
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.TypeCode);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MaxVoltageBatteryAssemblyNo);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MaxVoltageSingleBatteryNo);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.MaxVoltageSingleBatteryValue);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MinVoltageBatteryAssemblyNo);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MinVoltageSingleBatteryNo);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.MinVoltageSingleBatteryValue);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MaxTempProbeBatteryNo);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MaxTempBatteryAssemblyNo);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MaxTempProbeBatteryValue);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MinTempProbeBatteryNo);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MinTempBatteryAssemblyNo);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MinTempProbeBatteryValue);
return offset;
}
}
}

+ 0
- 50
src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x06_Formatter.cs Просмотреть файл

@@ -1,50 +0,0 @@
using JTNE.Protocol.Extensions;
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;

namespace JTNE.Protocol.Formatters.MessageBodyFormatters
{
public class JTNE_0x02_0x06_Formatter : IJTNEFormatter<JTNE_0x02_0x06>
{
public JTNE_0x02_0x06 Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x02_0x06 jTNE_0X02_0X06 = new JTNE_0x02_0x06();
jTNE_0X02_0X06.TypeCode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06.MaxVoltageBatteryAssemblyNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06.MaxVoltageSingleBatteryNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06.MaxVoltageSingleBatteryValue = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X02_0X06.MinVoltageBatteryAssemblyNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06.MinVoltageSingleBatteryNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06.MinVoltageSingleBatteryValue = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X02_0X06.MaxTempProbeBatteryNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06.MaxTempBatteryAssemblyNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06.MaxTempProbeBatteryValue = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06.MinTempProbeBatteryNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06.MinTempBatteryAssemblyNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06.MinTempProbeBatteryValue = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
readSize = offset;
return jTNE_0X02_0X06;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x02_0x06 value)
{
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.TypeCode);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MaxVoltageBatteryAssemblyNo);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MaxVoltageSingleBatteryNo);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.MaxVoltageSingleBatteryValue);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MinVoltageBatteryAssemblyNo);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MinVoltageSingleBatteryNo);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.MinVoltageSingleBatteryValue);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MaxTempProbeBatteryNo);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MaxTempBatteryAssemblyNo);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MaxTempProbeBatteryValue);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MinTempProbeBatteryNo);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MinTempBatteryAssemblyNo);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MinTempProbeBatteryValue);
return offset;
}
}
}

+ 51
- 0
src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x06_Platform_Formatter.cs Просмотреть файл

@@ -0,0 +1,51 @@

using JTNE.Protocol.Extensions;
using JTNE.Protocol.MessageBody;
using System;
using System.Collections.Generic;
using System.Text;

namespace JTNE.Protocol.Formatters.MessageBodyFormatters
{
public class JTNE_0x02_0x06_Platform_Formatter : IJTNEFormatter<JTNE_0x02_0x06_Platform>
{
public JTNE_0x02_0x06_Platform Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x02_0x06_Platform jTNE_0X02_0X06_Platform = new JTNE_0x02_0x06_Platform();
jTNE_0X02_0X06_Platform.TypeCode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06_Platform.MaxVoltageBatteryAssemblyNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06_Platform.MaxVoltageSingleBatteryNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06_Platform.MaxVoltageSingleBatteryValue = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X02_0X06_Platform.MinVoltageBatteryAssemblyNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06_Platform.MinVoltageSingleBatteryNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06_Platform.MinVoltageSingleBatteryValue = JTNEBinaryExtensions.ReadUInt16Little(bytes, ref offset);
jTNE_0X02_0X06_Platform.MaxTempProbeBatteryNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06_Platform.MaxTempBatteryAssemblyNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06_Platform.MaxTempProbeBatteryValue = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06_Platform.MinTempProbeBatteryNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06_Platform.MinTempBatteryAssemblyNo = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X06_Platform.MinTempProbeBatteryValue = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
readSize = offset;
return jTNE_0X02_0X06_Platform;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x02_0x06_Platform value)
{
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.TypeCode);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MaxVoltageBatteryAssemblyNo);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MaxVoltageSingleBatteryNo);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.MaxVoltageSingleBatteryValue);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MinVoltageBatteryAssemblyNo);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MinVoltageSingleBatteryNo);
offset += JTNEBinaryExtensions.WriteUInt16Little(bytes, offset, value.MinVoltageSingleBatteryValue);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MaxTempProbeBatteryNo);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MaxTempBatteryAssemblyNo);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MaxTempProbeBatteryValue);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MinTempProbeBatteryNo);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MinTempBatteryAssemblyNo);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.MinTempProbeBatteryValue);
return offset;
}
}
}

src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x07_Formatter.cs → src/JTNE.Protocol/Formatters/MessageBodyFormatters/JTNE_0x02_0x07_Device_Formatter.cs Просмотреть файл

@@ -6,12 +6,12 @@ using System.Text;

namespace JTNE.Protocol.Formatters.MessageBodyFormatters
{
public class JTNE_0x02_0x07_Formatter : IJTNEFormatter<JTNE_0x02_0x07>
public class JTNE_0x02_0x07_Device_Formatter : IJTNEFormatter<JTNE_0x02_0x07_Device>
{
public JTNE_0x02_0x07 Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
public JTNE_0x02_0x07_Device Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
{
int offset = 0;
JTNE_0x02_0x07 jTNE_0X02_0X07 = new JTNE_0x02_0x07();
JTNE_0x02_0x07_Device jTNE_0X02_0X07 = new JTNE_0x02_0x07_Device();
jTNE_0X02_0X07.TypeCode = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X07.AlarmLevel = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset);
jTNE_0X02_0X07.AlarmBatteryFlag = JTNEBinaryExtensions.ReadUInt32Little(bytes, ref offset);
@@ -48,7 +48,7 @@ namespace JTNE.Protocol.Formatters.MessageBodyFormatters
return jTNE_0X02_0X07;
}

public int Serialize(ref byte[] bytes, int offset, JTNE_0x02_0x07 value)
public int Serialize(ref byte[] bytes, int offset, JTNE_0x02_0x07_Device value)
{
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.TypeCode);
offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.AlarmLevel);

Некоторые файлы не были показаны из-за большого количества измененных файлов

Загрузка…
Отмена
Сохранить