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

115 lines
5.8 KiB

  1. using JT808.Protocol.Extensions.SuBiao.MessageBody;
  2. using JT808.Protocol.MessageBody;
  3. using Microsoft.Extensions.DependencyInjection;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Text;
  7. using Xunit;
  8. namespace JT808.Protocol.Extensions.SuBiao.Test
  9. {
  10. public class JT808_0x0200_0x66_Test
  11. {
  12. JT808Serializer JT808Serializer;
  13. public JT808_0x0200_0x66_Test()
  14. {
  15. ServiceCollection serviceDescriptors = new ServiceCollection();
  16. serviceDescriptors.AddJT808Configure()
  17. .AddSuBiaoConfigure();
  18. IJT808Config jT808Config = serviceDescriptors.BuildServiceProvider().GetRequiredService<IJT808Config>();
  19. JT808Serializer = new JT808Serializer(jT808Config);
  20. }
  21. [Fact]
  22. public void Serializer()
  23. {
  24. JT808_0x0200 jT808UploadLocationRequest = new JT808_0x0200
  25. {
  26. AlarmFlag = 1,
  27. Altitude = 40,
  28. GPSTime = DateTime.Parse("2018-07-15 10:10:10"),
  29. Lat = 12222222,
  30. Lng = 132444444,
  31. Speed = 60,
  32. Direction = 0,
  33. StatusFlag = 2,
  34. BasicLocationAttachData = new Dictionary<byte, JT808_0x0200_BodyBase>()
  35. };
  36. jT808UploadLocationRequest.BasicLocationAttachData.Add(JT808_SuBiao_Constants.JT808_0X0200_0x66, new JT808_0x0200_0x66
  37. {
  38. AlarmId = 1,
  39. AlarmIdentification = new Metadata.AlarmIdentificationProperty
  40. {
  41. AttachCount = 2,
  42. SN = 3,
  43. TerminalID = "4444444",
  44. Time = Convert.ToDateTime("2019-12-10 18:31:00")
  45. },
  46. AlarmTime = Convert.ToDateTime("2019-12-11 18:31:00"),
  47. Altitude = 7,
  48. AlarmOrEventCount = 2,
  49. AlarmOrEvents = new List<Metadata.AlarmOrEventProperty> {
  50. new Metadata.AlarmOrEventProperty{
  51. AlarmOrEventType=1,
  52. BatteryLevel=2,
  53. TirePressure=3,
  54. TirePressureAlarmPosition=4,
  55. TireTemperature=5
  56. },
  57. new Metadata.AlarmOrEventProperty{
  58. AlarmOrEventType=6,
  59. BatteryLevel=7,
  60. TirePressure=8,
  61. TirePressureAlarmPosition=9,
  62. TireTemperature=10
  63. }
  64. },
  65. FlagState = 12,
  66. Latitude = 13,
  67. Longitude = 14,
  68. Speed = 17,
  69. VehicleState = 19
  70. });
  71. var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString();
  72. Assert.Equal("000000010000000200BA7F0E07E4F11C0028003C0000180715101010663B000000010C1100070000000D0000000E191211183100001334343434343434191210183100030200020400010003000500020900060008000A0007", hex);
  73. }
  74. [Fact]
  75. public void Deserialize()
  76. {
  77. var jT808UploadLocationRequest = JT808Serializer.Deserialize<JT808_0x0200>("000000010000000200BA7F0E07E4F11C0028003C0000180715101010663B000000010C1100070000000D0000000E191211183100001334343434343434191210183100030200020400010003000500020900060008000A0007".ToHexBytes());
  78. jT808UploadLocationRequest.BasicLocationAttachData.TryGetValue(JT808_SuBiao_Constants.JT808_0X0200_0x66, out var value);
  79. JT808_0x0200_0x66 jT808_0X0200_0X66 = value as JT808_0x0200_0x66;
  80. Assert.Equal(1u, jT808_0X0200_0X66.AlarmId);
  81. Assert.Equal(2, jT808_0X0200_0X66.AlarmIdentification.AttachCount);
  82. Assert.Equal(3, jT808_0X0200_0X66.AlarmIdentification.SN);
  83. Assert.Equal("4444444", jT808_0X0200_0X66.AlarmIdentification.TerminalID);
  84. Assert.Equal(Convert.ToDateTime("2019-12-10 18:31:00"), jT808_0X0200_0X66.AlarmIdentification.Time);
  85. Assert.Equal(Convert.ToDateTime("2019-12-11 18:31:00"), jT808_0X0200_0X66.AlarmTime);
  86. Assert.Equal(7, jT808_0X0200_0X66.Altitude);
  87. Assert.Equal(2, jT808_0X0200_0X66.AlarmOrEventCount);
  88. Assert.Equal(1, jT808_0X0200_0X66.AlarmOrEvents[0].AlarmOrEventType);
  89. Assert.Equal(2, jT808_0X0200_0X66.AlarmOrEvents[0].BatteryLevel);
  90. Assert.Equal(3, jT808_0X0200_0X66.AlarmOrEvents[0].TirePressure);
  91. Assert.Equal(4, jT808_0X0200_0X66.AlarmOrEvents[0].TirePressureAlarmPosition);
  92. Assert.Equal(5, jT808_0X0200_0X66.AlarmOrEvents[0].TireTemperature);
  93. Assert.Equal(6, jT808_0X0200_0X66.AlarmOrEvents[1].AlarmOrEventType);
  94. Assert.Equal(7, jT808_0X0200_0X66.AlarmOrEvents[1].BatteryLevel);
  95. Assert.Equal(8, jT808_0X0200_0X66.AlarmOrEvents[1].TirePressure);
  96. Assert.Equal(9, jT808_0X0200_0X66.AlarmOrEvents[1].TirePressureAlarmPosition);
  97. Assert.Equal(10, jT808_0X0200_0X66.AlarmOrEvents[1].TireTemperature);
  98. Assert.Equal(0x66, jT808_0X0200_0X66.AttachInfoId);
  99. Assert.Equal(12, jT808_0X0200_0X66.FlagState);
  100. Assert.Equal(13, jT808_0X0200_0X66.Latitude);
  101. Assert.Equal(14, jT808_0X0200_0X66.Longitude);
  102. Assert.Equal(17, jT808_0X0200_0X66.Speed);
  103. Assert.Equal(19, jT808_0X0200_0X66.VehicleState);
  104. }
  105. [Fact]
  106. public void Json()
  107. {
  108. var json = JT808Serializer.Analyze<JT808_0x0200>("000000010000000200BA7F0E07E4F11C0028003C0000180715101010663B000000010C1100070000000D0000000E191211183100001334343434343434191210183100030200020400010003000500020900060008000A0007".ToHexBytes());
  109. }
  110. }
  111. }