25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

101 satır
4.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_0x64_Test
  11. {
  12. JT808Serializer JT808Serializer;
  13. public JT808_0x0200_0x64_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_0x64, new JT808_0x0200_0x64
  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. AlarmLevel = 5,
  47. AlarmOrEventType = 6,
  48. AlarmTime = Convert.ToDateTime("2019-12-11 18:31:00"),
  49. Altitude = 7,
  50. CarOrPedestrianDistanceAhead = 10,
  51. DeviateType = 11,
  52. FlagState = 12,
  53. Latitude = 13,
  54. Longitude = 14,
  55. RoadSignIdentificationData = 15,
  56. RoadSignIdentificationType = 16,
  57. Speed = 17,
  58. VehicleSpeed = 18,
  59. VehicleState = 19
  60. });
  61. var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString();
  62. Assert.Equal("000000010000000200BA7F0E07E4F11C0028003C0000180715101010642F000000010C0605120A0B100F1100070000000D0000000E191211183100001334343434343434191210183100030200", hex);
  63. }
  64. [Fact]
  65. public void Deserialize()
  66. {
  67. var jT808UploadLocationRequest = JT808Serializer.Deserialize<JT808_0x0200>("000000010000000200BA7F0E07E4F11C0028003C00001807151010106420000000010C0605120A0B100F1100070000000D0000000E191211183100001334343434343434191210183100030200".ToHexBytes());
  68. jT808UploadLocationRequest.BasicLocationAttachData.TryGetValue(JT808_SuBiao_Constants.JT808_0X0200_0x64, out var value);
  69. JT808_0x0200_0x64 jT808_0X0200_0X64 = value as JT808_0x0200_0x64;
  70. Assert.Equal(1u, jT808_0X0200_0X64.AlarmId);
  71. Assert.Equal(2, jT808_0X0200_0X64.AlarmIdentification.AttachCount);
  72. Assert.Equal(3, jT808_0X0200_0X64.AlarmIdentification.SN);
  73. Assert.Equal("4444444", jT808_0X0200_0X64.AlarmIdentification.TerminalID);
  74. Assert.Equal(Convert.ToDateTime("2019-12-10 18:31:00"), jT808_0X0200_0X64.AlarmIdentification.Time);
  75. Assert.Equal(5, jT808_0X0200_0X64.AlarmLevel);
  76. Assert.Equal(6, jT808_0X0200_0X64.AlarmOrEventType);
  77. Assert.Equal(Convert.ToDateTime("2019-12-11 18:31:00"), jT808_0X0200_0X64.AlarmTime);
  78. Assert.Equal(7, jT808_0X0200_0X64.Altitude);
  79. Assert.Equal(0x64, jT808_0X0200_0X64.AttachInfoId);
  80. Assert.Equal(32, jT808_0X0200_0X64.AttachInfoLength);
  81. Assert.Equal(10, jT808_0X0200_0X64.CarOrPedestrianDistanceAhead);
  82. Assert.Equal(11, jT808_0X0200_0X64.DeviateType);
  83. Assert.Equal(12, jT808_0X0200_0X64.FlagState);
  84. Assert.Equal(13, jT808_0X0200_0X64.Latitude);
  85. Assert.Equal(14, jT808_0X0200_0X64.Longitude);
  86. Assert.Equal(15, jT808_0X0200_0X64.RoadSignIdentificationData);
  87. Assert.Equal(16, jT808_0X0200_0X64.RoadSignIdentificationType);
  88. Assert.Equal(17, jT808_0X0200_0X64.Speed);
  89. Assert.Equal(18, jT808_0X0200_0X64.VehicleSpeed);
  90. Assert.Equal(19, jT808_0X0200_0X64.VehicleState);
  91. }
  92. [Fact]
  93. public void Deserialize1()
  94. {
  95. var json = JT808Serializer.Analyze<JT808_0x0200>("000000010000000200BA7F0E07E4F11C0028003C00001807151010106420000000010C0605120A0B100F1100070000000D0000000E191211183100001334343434343434191210183100030200".ToHexBytes());
  96. }
  97. }
  98. }