Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

102 lignes
3.8 KiB

  1. using JT808.Protocol.Enums;
  2. using JT808.Protocol.Interfaces;
  3. using JT808.Protocol.Internal;
  4. using JT808.Protocol.Extensions;
  5. using Microsoft.Extensions.DependencyInjection;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Text;
  9. using Xunit;
  10. using JT808.Protocol.MessageBody;
  11. using JT808.Protocol.Formatters;
  12. using JT808.Protocol.MessagePack;
  13. using System.Text.Json;
  14. using JT808.Protocol.MessageBody.CarDVR;
  15. using System.Linq;
  16. using JT808.Protocol.Test.JT808LocationAttach;
  17. using static JT808.Protocol.MessageBody.JT808_0x8105;
  18. using System.Buffers.Binary;
  19. using Newtonsoft.Json;
  20. namespace JT808.Protocol.Test.Simples
  21. {
  22. public class Demo16
  23. {
  24. JT808Serializer JT808Serializer;
  25. IJT808Config JT808Config;
  26. public Demo16()
  27. {
  28. IServiceCollection serviceDescriptors = new ServiceCollection();
  29. serviceDescriptors.AddJT808Configure();
  30. //通常在startup中使用app的Use进行扩展
  31. IServiceProvider serviceProvider = serviceDescriptors.BuildServiceProvider();
  32. JT808Config = serviceProvider.GetRequiredService<IJT808Config>();
  33. JT808Serializer = JT808Config.GetSerializer();
  34. }
  35. [Fact]
  36. public void Test1()
  37. {
  38. var upgradePackage = new byte[1024 * 10];
  39. var splitPackage = JT808Config.SplitPackageStrategy.Processor(upgradePackage).ToList();
  40. ushort packgeCount = (ushort)splitPackage.Count();
  41. List<string> hexs = new List<string>();
  42. for (ushort i = 1; i <= packgeCount; i++)
  43. {
  44. if (i == 1)
  45. {
  46. var bodies = new JT808_0x8108
  47. {
  48. UpgradeType = JT808UpgradeType.terminal,
  49. VersionNum = "v1.2.1",
  50. MakerId = "1234",
  51. UpgradePackage = splitPackage[i - 1].Data
  52. };
  53. var firstBodies = JT808Serializer.Serialize(bodies);
  54. JT808Package package = new JT808Package
  55. {
  56. Header = new JT808Header
  57. {
  58. MsgId = Enums.JT808MsgId._0x8108.ToUInt16Value(),
  59. ManualMsgNum = 10,
  60. TerminalPhoneNo = "123456789",
  61. MessageBodyProperty = new JT808HeaderMessageBodyProperty()
  62. {
  63. IsPackage = true,
  64. },
  65. PackgeCount = packgeCount,
  66. PackageIndex = i
  67. },
  68. SubDataBodies = firstBodies
  69. };
  70. var hex = JT808Serializer.Serialize(package).ToHexString();
  71. hexs.Add(hex);
  72. }
  73. else
  74. {
  75. JT808Package package = new JT808Package
  76. {
  77. Header = new JT808Header
  78. {
  79. MsgId = Enums.JT808MsgId._0x8108.ToUInt16Value(),
  80. ManualMsgNum = 10,
  81. TerminalPhoneNo = "123456789",
  82. MessageBodyProperty = new JT808HeaderMessageBodyProperty()
  83. {
  84. IsPackage = true,
  85. },
  86. PackgeCount = packgeCount,
  87. PackageIndex = i
  88. },
  89. SubDataBodies = splitPackage[i - 1].Data
  90. };
  91. var hex = JT808Serializer.Serialize(package).ToHexString();
  92. hexs.Add(hex);
  93. }
  94. }
  95. }
  96. }
  97. }