BxCmdTimingSwitch.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. from .BxCmd import baseBxCmd
  2. from .BxCmdCode import CMD_TIMING_SWITCH
  3. from .BxCmdSystemClockCorrect import Uint2BCD
  4. class CmdTimingSwitch(baseBxCmd):
  5. def __init__(self, onOffSet):
  6. super().__init__(CMD_TIMING_SWITCH.group, CMD_TIMING_SWITCH.code)
  7. self.onOffSet = onOffSet if onOffSet else []
  8. def Build(self):
  9. result = bytearray()
  10. # 写入命令组
  11. result.append(self.Group())
  12. # 写入命令
  13. result.append(self.Cmd())
  14. # 写入响应标志
  15. result.append(self.ReqResp())
  16. # 写入保留值
  17. result.append(0x00)
  18. result.append(0x00)
  19. # 检查定时开关机设置数量
  20. if len(self.onOffSet) == 0 or len(self.onOffSet) > 256:
  21. return None
  22. # 写入定时开关机设置数量
  23. result.append(len(self.onOffSet))
  24. # 写入每个定时开关机设置
  25. for i, v in enumerate(self.onOffSet):
  26. if i > 2:
  27. break
  28. # 写入开机时间(BCD码)
  29. result.extend(Uint2BCD(v[0], True))
  30. # 写入关机时间(BCD码)
  31. result.extend(Uint2BCD(v[1], True))
  32. return bytes(result)
  33. def NewCmdTimingSwitch(onOffSet):
  34. return CmdTimingSwitch(onOffSet)