import struct from .BxCmd import baseBxCmd from .BxCmdCode import CMD_SEND_DYNAMIC_AREA class CmdSendDynamicArea(baseBxCmd): def __init__(self, areas): super().__init__(CMD_SEND_DYNAMIC_AREA.group, CMD_SEND_DYNAMIC_AREA.code) self.processMode = 0 self.r2 = 0 self.delAreaIds = [] self.areas = areas if areas else [] def ProcessMode(self): """获取处理模式""" return self.processMode def SetProcessMode(self, processMode): """设置处理模式""" self.processMode = processMode def R2(self): """获取保留字r2""" return self.r2 def SetR2(self, r2): """设置保留字r2""" self.r2 = r2 def DelAreaIds(self): """获取删除区域ID列表""" return self.delAreaIds def SetDelAreaIds(self, delAreaIds): """设置删除区域ID列表""" self.delAreaIds = delAreaIds def Areas(self): """获取区域列表""" return self.areas def SetAreas(self, areas): """设置区域列表""" self.areas = areas def Build(self): """构建命令数据""" result = bytearray() # 写入命令组 result.append(self.Group()) # 写入命令 result.append(self.Cmd()) # 写入响应标志 result.append(self.ReqResp()) # 写入处理模式 result.append(self.processMode) # 写入r2 result.append(self.r2) # 写入删除区域ID if self.delAreaIds is None: result.append(0x00) else: result.append(len(self.delAreaIds)) result.extend(self.delAreaIds) # 写入区域数量 if self.areas is None or len(self.areas) == 0: result.append(0x00) else: result.append(len(self.areas)) # 写入每个区域 for v in self.areas: b = v.Build() result.extend(struct.pack('