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

84 lines
3.2 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. public Demo16()
  26. {
  27. IServiceCollection serviceDescriptors = new ServiceCollection();
  28. serviceDescriptors.AddJT808Configure();
  29. //通常在startup中使用app的Use进行扩展
  30. IServiceProvider serviceProvider = serviceDescriptors.BuildServiceProvider();
  31. JT808Serializer = serviceProvider.GetRequiredService<IJT808Config>().GetSerializer();
  32. }
  33. [Fact]
  34. public void Test1()
  35. {
  36. JT808Package jT808_0X0100 = new JT808Package
  37. {
  38. Header = new JT808Header
  39. {
  40. MsgId = Enums.JT808MsgId.终端注册.ToUInt16Value(),
  41. ManualMsgNum = 10,
  42. TerminalPhoneNo = "123456789",
  43. },
  44. Bodies = new JT808_0x0100
  45. {
  46. AreaID = 40,
  47. CityOrCountyId = 50,
  48. MakerId = "1234",
  49. PlateColor = 1,
  50. PlateNo = "粤A12345",
  51. TerminalId = "CHI123",
  52. TerminalModel = "tk12345"
  53. }
  54. };
  55. var hex = JT808Serializer.Serialize(jT808_0X0100, JT808Version.JTT2011).ToHexString();
  56. Assert.Equal("7E01000021000123456789000A002800323132333400746B3132333435004348493132330001D4C1413132333435857E", hex);
  57. }
  58. [Fact]
  59. public void Test2()
  60. {
  61. var bytes = "7E01000021000123456789000A002800323132333400746B3132333435004348493132330001D4C1413132333435857E".ToHexBytes();
  62. JT808Package jT808_0X0100 = JT808Serializer.Deserialize<JT808Package>(bytes);
  63. // 采用2011协议 的终端注册消息解析
  64. Assert.Equal(JT808MsgId.终端注册.ToUInt16Value(), jT808_0X0100.Header.MsgId);
  65. Assert.Equal(1, jT808_0X0100.Header.ProtocolVersion);
  66. Assert.Equal(10, jT808_0X0100.Header.MsgNum);
  67. Assert.Equal("123456789", jT808_0X0100.Header.TerminalPhoneNo);
  68. JT808_0x0100 JT808Bodies = (JT808_0x0100)jT808_0X0100.Bodies;
  69. Assert.Equal(40, JT808Bodies.AreaID);
  70. Assert.Equal(50, JT808Bodies.CityOrCountyId);
  71. Assert.Equal("1234", JT808Bodies.MakerId);
  72. Assert.Equal(1, JT808Bodies.PlateColor);
  73. Assert.Equal("粤A12345", JT808Bodies.PlateNo);
  74. Assert.Equal("CHI123", JT808Bodies.TerminalId);
  75. Assert.Equal("tk12345", JT808Bodies.TerminalModel);
  76. }
  77. }
  78. }