from .BxCmd import baseBxCmd from .BxCmdCode import CMD_TIMING_SWITCH from .BxCmdSystemClockCorrect import Uint2BCD class CmdTimingSwitch(baseBxCmd): def __init__(self, onOffSet): super().__init__(CMD_TIMING_SWITCH.group, CMD_TIMING_SWITCH.code) self.onOffSet = onOffSet if onOffSet else [] def Build(self): result = bytearray() # 写入命令组 result.append(self.Group()) # 写入命令 result.append(self.Cmd()) # 写入响应标志 result.append(self.ReqResp()) # 写入保留值 result.append(0x00) result.append(0x00) # 检查定时开关机设置数量 if len(self.onOffSet) == 0 or len(self.onOffSet) > 256: return None # 写入定时开关机设置数量 result.append(len(self.onOffSet)) # 写入每个定时开关机设置 for i, v in enumerate(self.onOffSet): if i > 2: break # 写入开机时间(BCD码) result.extend(Uint2BCD(v[0], True)) # 写入关机时间(BCD码) result.extend(Uint2BCD(v[1], True)) return bytes(result) def NewCmdTimingSwitch(onOffSet): return CmdTimingSwitch(onOffSet)