You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

88 lines
4.4 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using Xunit;
  5. using JT809.Protocol;
  6. using JT809.Protocol.Extensions;
  7. using JT809.Protocol.MessageBody;
  8. using JT809.Protocol.Enums;
  9. namespace JT809.Protocol.Test.JT809Packages
  10. {
  11. public class JT809_0x1001PackageTest
  12. {
  13. private JT809Serializer JT809Serializer = new JT809Serializer();
  14. [Fact]
  15. public void Test1()
  16. {
  17. JT809Package jT809Package = new JT809Package();
  18. jT809Package.Header = new JT809Header
  19. {
  20. MsgSN= 133,
  21. EncryptKey=9999,
  22. BusinessType= JT809BusinessType.主链路登录请求消息.ToUInt16Value(),
  23. MsgGNSSCENTERID= 20180920,
  24. };
  25. JT809_0x1001 jT809_0X1001 = new JT809_0x1001();
  26. jT809_0X1001.UserId = 20180920;
  27. jT809_0X1001.Password = "20180920";
  28. jT809_0X1001.DownLinkIP = "127.0.0.1";
  29. jT809_0X1001.DownLinkPort = 809;
  30. jT809Package.Bodies = jT809_0X1001;
  31. var hex = JT809Serializer.Serialize(jT809Package).ToHexString();
  32. //5B000000 4800000085 10010133EFB801 000000000027 0F0133EFB8 323031383 039323031 32372 E302E302E31 00000000000000000000000000000000000000000000000329 4055 5D
  33. //5B000000 4800000085 10010133EFB801 000000000027 0F0133EFB8 323031383 039323031 32372 E302E302E31 00000000000000000000000000000000000000000000000329 6A91 5D
  34. Assert.Equal("5B000000480000008510010133EFB8010000000000270F0133EFB832303138303932303132372E302E302E31000000000000000000000000000000000000000000000003296A915D", hex);
  35. //"5B
  36. //00 00 00 48
  37. //00 00 00 85
  38. //10 01
  39. //01 33 EF B8
  40. //01 00 00
  41. //00
  42. //00 00 27 0F
  43. //01 33 EF B8
  44. //32 30 31 38 30 39 32 30
  45. //31 32 37 2E 30 2E 30 2E 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  46. //03 29
  47. //6A 91
  48. //5D"
  49. }
  50. [Fact]
  51. public void Test2()
  52. {
  53. var bytes = "5B 00 00 00 48 00 00 00 85 10 01 01 33 EF B8 01 00 00 00 00 00 27 0F 01 33 EF B8 32 30 31 38 30 39 32 30 31 32 37 2E 30 2E 30 2E 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 29 6A 91 5D".ToHexBytes();
  54. JT809Package jT809Package = JT809Serializer.Deserialize(bytes);
  55. Assert.Equal((uint)72, jT809Package.Header.MsgLength);
  56. Assert.Equal((uint)133, jT809Package.Header.MsgSN);
  57. Assert.Equal((uint)9999, jT809Package.Header.EncryptKey);
  58. Assert.Equal((uint)20180920, jT809Package.Header.MsgGNSSCENTERID);
  59. Assert.Equal(JT809BusinessType.主链路登录请求消息, (JT809BusinessType)jT809Package.Header.BusinessType);
  60. Assert.Equal(new JT809Header_Version().ToString(), jT809Package.Header.Version.ToString());
  61. JT809_0x1001 jT809_0X1001 = (JT809_0x1001)jT809Package.Bodies;
  62. Assert.Equal((uint)20180920, jT809_0X1001.UserId);
  63. Assert.Equal("20180920", jT809_0X1001.Password);
  64. Assert.Equal("127.0.0.1", jT809_0X1001.DownLinkIP);
  65. Assert.Equal((ushort)809, jT809_0X1001.DownLinkPort);
  66. }
  67. [Fact]
  68. public void Test3()
  69. {
  70. Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
  71. //字符'0':char c = '0'; 它的ASCII码实际上是48。
  72. //字符'\0' : ASCII码为0,表示一个字符串结束的标志。
  73. //"5B 00 00 00 48 00 00 00 85 10 01 01 33 EF B8 01 00 00 00 00 00 27 0F 30 01 33 EF B8 32 30 31 38 30 39 32 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 32 37 2E 30 2E 30 2E 31 03 29 7D 38 5D"
  74. var data="32 30 31 38 30 39 32 30".ToHexBytes();
  75. var str = Encoding.GetEncoding("GBK").GetString(data);
  76. var data1 = "31 32 37 2E 30 2E 30 2E 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00".ToHexBytes();
  77. var str1 = Encoding.GetEncoding("GBK").GetString(data1);
  78. var test1 = Encoding.GetEncoding("GBK").GetBytes("\0\0\0\0\0\0127.0.0.1");
  79. var test2 = Encoding.GetEncoding("GBK").GetBytes("127.0.0.1\0\0\0\0\0\0");
  80. var test3 = Encoding.GetEncoding("GBK").GetBytes("000000127.0.0.1");
  81. var test4 = Encoding.GetEncoding("GBK").GetBytes("127.0.0.1000000");
  82. }
  83. }
  84. }