# import time # import logging # # # 假设这些函数是已经定义好的 # # sendCodeString(com, command) # # getSystemInt(key, default) # # setSystemInt(key, value) # # setText(id, text) # # setBarLevel(id, level) # # setAllBarLevel(id, level) # # setButtonImage(id, image) # # sendLog(message, data) # # getBarLevel(id) # # metAudio.update() # # delay(seconds, function) # # YPCOM = "COM7" # 控制端口 # MaxLength = 8 # 最大通道数 # ChannelMute_ONIMG = 'slDevPlayerMuteBtnS1.png' # 静音状态按钮0db--50db # ChannelMute_OFFIMG = 'slDevPlayerMuteBtfS1.png' # 取消静音状态按钮 # # ChannelValue = [0] * MaxLength # 设置音量初始值 # ChannelMute = [0] * MaxLength # 设置静音初始值 0=非静音 1=静音 # ChannelMax = [0, 2, 12, 12, 12, 12, 12, 12] # 设置控制音量的最大值 # ChannelMini = [0, -10, -10, -10, -20, -20, -20, -20] # 设置控制音量的最小值 # ChannelDPValue = [0] * MaxLength # ChannelDPMax = [0, 20, 20, 20, 20, 20, 20, 20] # ChannelDPMini = [0, -100, -100, -100, -100, -100, -100, -100] # # # 初始化数组 # for i in range(MaxLength): # ChannelMute[i] = 0 # 初始静音值0非静音,1静音 # ChannelValue[i] = -20 # 初始音量值-20DB # ChannelMax[i] = 10 # 最大音量db值0(与ChannelMini[i]决定音量控制区间) # ChannelMini[i] = -30 # 最小音量db值-50(与ChannelMax[i]决定音量控制区间) # # # # 音量加 # def SetVolumeUP(channel): # ChannelValue[channel] = getSystemInt(f'INVOLUME{channel}', ChannelValue[channel]) # 读取中控保存的音量值 # if ChannelValue[channel] < ChannelMax[channel]: # ChannelValue[channel] += 1 # else: # ChannelValue[channel] = ChannelMax[channel] # SetVolume(channel) # # # # 音量减 # def SetVolumeDown(channel): # ChannelValue[channel] = getSystemInt(f'INVOLUME{channel}', ChannelValue[channel]) # 读取中控保存的音量值 # if ChannelValue[channel] > ChannelMini[channel]: # ChannelValue[channel] -= 1 # else: # ChannelValue[channel] = ChannelMini[channel] # SetVolume(channel) # # # # 设置音量大小 并将音量大小值存入中控 # def SetVolume(channel): # level_command_map = { # 1: 'Level9 set level 1', # 2: 'Level2 set level 1', # 3: 'Level2 set level 2', # 4: 'Level3 set level 1', # 5: 'Level4 set level 1', # 6: 'Level2 set level 9', # 7: 'Level10 set level 1', # 8: 'Level7 set level 7' # } # # if channel in level_command_map: # command = f"{level_command_map[channel]} {ChannelValue[channel]}x0d" # sendCodeString(YPCOM, command) # # # 拉条状态和数值 # chNum = ChannelValue[channel] - ChannelMini[channel] # 当前音量值-最小音量值得到当前音量值与最低音量值的差 # chRound = round(chNum * 100 / (ChannelMax[channel] - ChannelMini[channel])) # 拉条与文字值为音量值差(最大音量-最小音量)100 # setText(f'txtVolume{channel}', f'{chRound}%') # 显示拉条上方文字 # setBarLevel(f'barVolume{channel}', chRound) # 设置拉条的值 # setAllBarLevel(f'barVolume{channel}', chRound) # setSystemInt(f'INVOLUME{channel}', ChannelValue[channel]) # 将值保存在中控主机 # metAudio.update() # # # # 静音取消静音功能 # def SetVolumeMute(channel): # mute_command_map = { # 1: 'Level9 set mute 1', # 2: 'Level2 set mute 1', # 3: 'Level2 set mute 2', # 4: 'Level3 set mute 1', # 5: 'Level4 set mute 1', # 6: 'Level2 set mute 9', # 7: 'Level10 set mute 1', # 8: 'Level7 set mute 7' # } # # if channel in mute_command_map: # if ChannelMute[channel] == 0: # command = f"{mute_command_map[channel]} 1x0d" # sendCodeString(YPCOM, command) # ChannelMute[channel] = 1 # setButtonImage(f'btnVolumeMute{channel}', ChannelMute_ONIMG) # 静音 # else: # command = f"{mute_command_map[channel]} 0x0d" # sendCodeString(YPCOM, command) # ChannelMute[channel] = 0 # setButtonImage(f'btnVolumeMute{channel}', ChannelMute_OFFIMG) # 取消静音 # # setSystemInt(f'JINYING{channel}', ChannelMute[channel]) # metAudio.update() # # # # 音频同步状态 # def INITFrequencyStatus(): # for i in range(1, MaxLength + 1): # ChannelValue[i - 1] = getSystemInt(f'INVOLUME{i}', ChannelValue[i - 1]) # chNum = ChannelValue[i - 1] - ChannelMini[i - 1] # chRound = round(chNum * 100 / (ChannelMax[i - 1] - ChannelMini[i - 1])) # # 同步拉条状态 # setText(f'txtVolume{i}', f'{chRound}%') # setAllBarLevel(f'barVolume{i}', chRound) # setBarLevel(f'barVolume{i}', chRound) # # 同步静音状态 # ChannelMute[i - 1] = getSystemInt(f'JINYING{i}', ChannelMute[i - 1]) # if ChannelMute[i - 1] == 1: # setButtonImage(f'btnVolumeMute{i}', ChannelMute_ONIMG) # else: # setButtonImage(f'btnVolumeMute{i}', ChannelMute_OFFIMG) # # setButtonImage('ypModel1', 'TemporalPowerOFF_png') # setButtonImage('ypModel2', 'TemporalPowerOFF_png') # setButtonImage('ypModel3', 'TemporalPowerOFF_png') # model_value = getSystemInt('ypModelValue', 1) # setButtonImage(f'ypModel{model_value}', 'TemporalPowerON_png') # # # def delay(seconds, function): # time.sleep(seconds) # function() # # # # 延迟5秒后初始化音频状态 # delay(5, INITFrequencyStatus) # # # # 拉条的方法 # def SetBrace(channel): # getBarNum = getBarLevel(f'barVolume{channel}') # getBarLevel()方法获取拉条当前值 # # 当前通道音量分贝值 = 拉条值((最大分贝值-最小分贝值)100)+ 最小分贝值; # ChannelValue[channel] = round(getBarNum * (ChannelMax[channel] - ChannelMini[channel]) / 100) + ChannelMini[channel] # SetVolume(channel) # # # def ypModel(arg): # if arg == 3: # setSystemInt('INVOLUME1', 0) # setSystemInt('INVOLUME2', 0) # setSystemInt('INVOLUME3', 0) # metAudio.update() # INITFrequencyStatus() # # setSystemInt('ypModelValue', arg) # setButtonImage('ypModel1', 'TemporalPowerOFF_png') # setButtonImage('ypModel2', 'TemporalPowerOFF_png') # setButtonImage('ypModel3', 'TemporalPowerOFF_png') # setButtonImage(f'ypModel{arg}', 'TemporalPowerON_png') # sendCodeString(YPCOM, f'DEVICE recallPreset 100{arg}x0d') # # # def getYpDp(): # sendCodeString('NET1', 'AudioMeter2 get levelsx0d') # delay(0.3, lambda: sendCodeString('NET1', 'AudioMeter4 get levelsx0d')) # delay(0.6, lambda: sendCodeString('NET1', 'AudioMeter5 get levelsx0d')) # delay(1, getYpDp) # # # def getYpDp1(): # sendCodeString('NET1', # 'xFFxFBx18xFFxFBx1FxFFxFCx20xFFxFCx23xFFxFBx27xFFxFCx24xFFxFAx1Fx00x78x00x32xFFxF0xFFxFAx27x00xFFxF0xFFxFAx18x00x41x4Ex53x49xFFxF0xFFxFDx03xFFxFBx01x0dx0a') # delay(60, getYpDp1) # # # getYpDp() # getYpDp1() # # # def setStringReceive(com, callback): # def receive_data(data): # sendLog(f'{com} Receive', data) # CountArrayCount[7] = 0 # callback(data) # # # 假设这里有一个机制来接收数据并调用receive_data # pass # # # def handle_com7_data(data): # sendLog('COM7 Receive', data) # CountArrayCount[7] = 0 # # # def handle_net1_data(data): # CountArrayCount[7] = 0 # a = data.find('AudioMeter') # if a != -1: # num = data[a + 10] # c = data[data.find('value'):].split() # if num == '2': # ChannelDPValue[2] = round(float(c[7])) # ChannelDPValue[3] = round(float(c[8])) # ChannelDPValue[4] = round(float(c[9])) # ChannelDPValue[5] = round(float(c[0])) # ChannelDPValue[6] = round(float(c[1])) # ChannelDPValue[7] = round(float(c[2])) # ChannelDPValue[8] = round(float(c[3])) # ChannelDPValue[9] = round(float(c[4])) # ChannelDPValue[10] = round(float(c[5])) # ChannelDPValue[11] = round(float(c[6])) # ChannelDPValue[12] = round(float(c[7])) # elif num == '4': # ChannelDPValue[13] = round(float(c[1])) # ChannelDPValue[14] = round(float(c[2])) # else: # ChannelDPValue[0] = round(float(c[0])) # ChannelDPValue[1] = round(float(c[1])) # metAudio.update() # # # setStringReceive(YPCOM, handle_com7_data) # setStringReceive('NET1', handle_net1_data)