import struct from .BxArea import BaseArea, NewBxArea class BxAreaDynamic(BaseArea): def __init__(self, id, runMode, dispMode, x, y, w, h, data, soundData, is5K): super().__init__(0, x, y, w, h) self.is5K = is5K self.id = id self.lineSpace = 0 self.runMode = runMode self.timeout = 5 self.soundMode = 0x00 self.soundPerson = 0x00 self.soundRepeat = 0x00 self.soundVolume = 0x01 self.soundSpeed = 0x10 self.soundData = soundData if soundData else [] self.extendParaLen = 0 self.alignment = 0 self.singleLine = 0x02 self.autoNewLine = 0x01 self.dispMode = dispMode self.exitMode = 0 self.speed = 0x0a self.holdTime = 0x08 self.data = data if data else [] def Length(self): """获取区域长度""" return 27 + len(self.data) def Build(self): """构建区域数据""" result = bytearray() # 写入类型 result.append(self.typ) # 处理坐标和尺寸 x8 = self.GetX() w8 = self.GetW() if self.is5K: x8 = self.x // 8 w8 = self.w // 8 # 写入坐标和尺寸(小端序) result.extend(struct.pack(' 2: self.soundMode = 0x02 else: self.soundMode = soundMode def SetSoundPerson(self, soundPerson): """设置声音人物""" if soundPerson > 5: self.soundPerson = 0 else: self.soundPerson = soundPerson def SetSoundRepeat(self, soundRepeat): """设置声音重复次数""" if soundRepeat > 15: self.soundRepeat = 15 else: self.soundRepeat = soundRepeat def SetSoundVolume(self, soundVolume): """设置声音音量""" if soundVolume > 10: self.soundVolume = 10 else: self.soundVolume = soundVolume def SetSoundSpeed(self, soundSpeed): """设置声音速度""" if soundSpeed < 1: self.soundSpeed = 1 elif soundSpeed > 10: self.soundSpeed = 10 else: self.soundSpeed = soundSpeed # 创建BxAreaDynamic实例的函数 def NewBxAreaDynamic(id, runMode, dispMode, x, y, w, h, data, soundData, is5K): return BxAreaDynamic(id, runMode, dispMode, x, y, w, h, data, soundData, is5K) # 创建程序动态区域实例的函数 def NewBxAreaProgram(id, runMode, dispMode, alignment, x, y, w, h, data, is5K): area = BxAreaDynamic(id, runMode, dispMode, x, y, w, h, data, [], is5K) area.alignment = alignment area.soundVolume = 0x05 area.soundSpeed = 0x05 area.speed = 0x01 return area