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.

65 satır
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. #warning ÓÐÎÊÌâ
  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. CustomLocationAttachData = new Dictionary<byte, JT808_0x0200_CustomBodyBase>()
  35. };
  36. jT808UploadLocationRequest.CustomLocationAttachData.Add(JT808_GPS51_Constants.JT808_0x0200_0x51, new JT808_0x0200_0x51
  37. {
  38. AttachInfoId = 0x2b,
  39. AttachInfoLength = 4,
  40. Temperatures = new List<short> {
  41. 12,-34
  42. }
  43. });
  44. var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString();
  45. Assert.Equal("000000010000000200BA7F0E07E4F11C0028003C00001807151010102B04000C0022", hex);
  46. }
  47. [Fact]
  48. public void Deserialize()
  49. {
  50. var jT808UploadLocationRequest = JT808Serializer.Deserialize<JT808Package>("7e020000470158666660580571000000000000000201d59c1c06a36599006e0000000021091719313901040000eb8830011d3101192a0200005201002b040000000051080134011a04f604f6eb06000400ce04f8847e".ToHexBytes());
  51. var body0200 = jT808UploadLocationRequest.Bodies as JT808_0x0200;
  52. body0200.CustomLocationAttachData.TryGetValue(JT808_GPS51_Constants.JT808_0x0200_0x51, out var value);
  53. var jt808_0x0200_0x51 = value as JT808_0x0200_0x51;
  54. //2b049203a46f
  55. Assert.Equal(0x0134, jt808_0x0200_0x51.Temperatures[0]);
  56. Assert.Equal(0x011A, jt808_0x0200_0x51.Temperatures[1]);
  57. Assert.Equal(0x04F6, jt808_0x0200_0x51.Temperatures[2]);
  58. Assert.Equal(0x04F6, jt808_0x0200_0x51.Temperatures[3]);
  59. }
  60. }
  61. }