BxResp.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. from .BxDataPack import dpParse
  2. from .BxCmdCode import CMD_ACK, CMD_SYSTEM_STATE
  3. from .bxError import bxErrors
  4. class BxResp:
  5. def __init__(self):
  6. self.group = 0
  7. self.cmd = 0
  8. self.Err = 0
  9. self.r0 = 0
  10. self.r1 = 0
  11. self.Data = bytearray()
  12. def Parse(self, src, length):
  13. """解析响应数据"""
  14. dp = dpParse(src, length)
  15. if dp is None:
  16. return None
  17. else:
  18. return self._parse(dp)
  19. def _parse(self, pack):
  20. """解析数据打包"""
  21. offset = 0
  22. resp = BxResp()
  23. resp.group = pack.data[offset]
  24. offset += 1
  25. resp.cmd = pack.data[offset]
  26. offset += 1
  27. resp.Err = pack.data[offset]
  28. offset += 1
  29. resp.r0 = pack.data[offset]
  30. offset += 1
  31. resp.r1 = pack.data[offset]
  32. offset += 1
  33. resp.Data = pack.data[offset:(offset + len(pack.data) - 5)]
  34. return resp
  35. def IsAck(self):
  36. """是否是确认响应"""
  37. return self.group == CMD_ACK.group and self.cmd == CMD_ACK.code
  38. def NoError(self):
  39. """是否无错误"""
  40. return self.Err == 0
  41. def Error(self):
  42. """获取错误信息"""
  43. return bxErrors.get(self.Err, "未知错误")
  44. def IsInfo(self):
  45. """是否是返回"控制器状态"信息"""
  46. return self.group == CMD_SYSTEM_STATE.group and self.cmd == CMD_SYSTEM_STATE.code