DTUProtocol.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. using GatewayTool.Models;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using Newtonsoft.Json;
  8. namespace GatewayTool.Protocols
  9. {
  10. public class DTUProtocol : GatewayProtocolBase
  11. {
  12. /// <summary>
  13. /// 读DTU系统状态
  14. /// </summary>
  15. /// <returns></returns>
  16. public byte[] PackReadDTUSystemState()
  17. {
  18. byte[] data = { 0x02 };
  19. return Pack(data);
  20. }
  21. /// <summary>
  22. /// 读DTU设备配置
  23. /// </summary>
  24. /// <returns></returns>
  25. public byte[] PackReadDTUDeviceConfig()
  26. {
  27. byte[] data = { 0x03 };
  28. return Pack(data);
  29. }
  30. /// <summary>
  31. /// 写DTU设备配置
  32. /// </summary>
  33. /// <param name="json">json配置字符串</param>
  34. /// <returns></returns>
  35. public byte[] PackWriteDTUDeviceConfig(string json)
  36. {
  37. byte[] data = { 0x04 };
  38. return PackJson(data, json);
  39. }
  40. /// <summary>
  41. /// 准备升级固件
  42. /// </summary>
  43. /// <returns></returns>
  44. public byte[] PackPrepareToUpgrade()
  45. {
  46. byte[] data = { 0x05 };
  47. return Pack(data);
  48. }
  49. /// <summary>
  50. /// 解析读DTU系统状态
  51. /// </summary>
  52. /// <param name="data"></param>
  53. /// <returns></returns>
  54. public DTUSystemState UnpackReadDTUSystemState(byte[] data)
  55. {
  56. try
  57. {
  58. byte[] data2 = Unpack(data);
  59. string json = Encoding.ASCII.GetString(data2);
  60. return JsonConvert.DeserializeObject<DTUSystemState>(json);
  61. }
  62. catch
  63. {
  64. return null;
  65. }
  66. }
  67. /// <summary>
  68. /// 解析读DTU设备配置
  69. /// </summary>
  70. /// <param name="data"></param>
  71. /// <returns></returns>
  72. public DTUConfig UnpackReadDTUDeviceConfig(byte[] data)
  73. {
  74. try
  75. {
  76. byte[] data2 = Unpack(data);
  77. string json = Encoding.ASCII.GetString(data2);
  78. return JsonConvert.DeserializeObject<DTUConfig>(json);
  79. }
  80. catch
  81. {
  82. return null;
  83. }
  84. }
  85. /// <summary>
  86. /// 解析写DTU设备配置
  87. /// </summary>
  88. /// <param name="data"></param>
  89. /// <returns></returns>
  90. public bool UnpackWriteDTUDeviceConfig(byte[] data)
  91. {
  92. try
  93. {
  94. byte[] data2 = Unpack(data);
  95. return data2[0] == 0x01;
  96. }
  97. catch
  98. {
  99. return false;
  100. }
  101. }
  102. }
  103. }