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

64 lines
2.7 KiB

  1. using JT808.Protocol.Extensions.GPS51.MessageBody;
  2. using JT808.Protocol.MessageBody;
  3. using Microsoft.Extensions.DependencyInjection;
  4. using System;
  5. using System.Collections.Generic;
  6. using Xunit;
  7. namespace JT808.Protocol.Extensions.GPS51.Test
  8. {
  9. public class JT808_0x0200_0x51_Test
  10. {
  11. JT808Serializer JT808Serializer;
  12. public JT808_0x0200_0x51_Test()
  13. {
  14. ServiceCollection serviceDescriptors = new ServiceCollection();
  15. serviceDescriptors.AddJT808Configure()
  16. .AddGPS51Configure();
  17. IJT808Config jT808Config = serviceDescriptors.BuildServiceProvider().GetRequiredService<IJT808Config>();
  18. JT808Serializer = new JT808Serializer(jT808Config);
  19. }
  20. [Fact]
  21. public void Serializer()
  22. {
  23. JT808_0x0200 jT808UploadLocationRequest = new JT808_0x0200
  24. {
  25. AlarmFlag = 1,
  26. Altitude = 40,
  27. GPSTime = DateTime.Parse("2018-07-15 10:10:10"),
  28. Lat = 12222222,
  29. Lng = 132444444,
  30. Speed = 60,
  31. Direction = 0,
  32. StatusFlag = 2,
  33. CustomLocationAttachData = new Dictionary<byte, JT808_0x0200_CustomBodyBase>()
  34. };
  35. jT808UploadLocationRequest.CustomLocationAttachData.Add(JT808_GPS51_Constants.JT808_0x0200_0x51, new JT808_0x0200_0x51
  36. {
  37. AttachInfoId = 0x2b,
  38. AttachInfoLength = 4,
  39. Temperatures = new List<short> {
  40. 12,34
  41. }
  42. });
  43. var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString();
  44. Assert.Equal("000000010000000200BA7F0E07E4F11C0028003C00001807151010102B04000C0022", hex);
  45. }
  46. [Fact]
  47. public void Deserialize()
  48. {
  49. var jT808UploadLocationRequest = JT808Serializer.Deserialize<JT808Package>("7e020000470158666660580571000000000000000201d59c1c06a36599006e0000000021091719313901040000eb8830011d3101192a0200005201002b040000000051080134011a04f604f6eb06000400ce04f8847e".ToHexBytes());
  50. var body0200 = jT808UploadLocationRequest.Bodies as JT808_0x0200;
  51. body0200.CustomLocationAttachData.TryGetValue(JT808_GPS51_Constants.JT808_0x0200_0x51, out var value);
  52. var jt808_0x0200_0x51 = value as JT808_0x0200_0x51;
  53. //2b049203a46f
  54. Assert.Equal(0x0134, jt808_0x0200_0x51.Temperatures[0]);
  55. Assert.Equal(0x011A, jt808_0x0200_0x51.Temperatures[1]);
  56. Assert.Equal(0x04F6, jt808_0x0200_0x51.Temperatures[2]);
  57. Assert.Equal(0x04F6, jt808_0x0200_0x51.Temperatures[3]);
  58. }
  59. }
  60. }