import struct import datetime class msg_ccUFbMsg: def __init__(self): # 消息头 self.start1 = 0x20 self.start2 = 0x20 self.id = 0x0051 # CCU_STATE_FB_ID self.length = 0 self.checkCode = 0x00 # CCU状态数据 - 根据ccuState结构体定义 self.fc_mode = 0x00 self.fc_status = 0x00 self.fc_fault_level = 0x00 self.output_power_limit = 0 self.total_generation_time = 0 self.total_generation_power = 0 self.fault_level_1 = 0 self.fault_level_2 = 0 self.fault_level_3 = 0 self.fault_level_4 = 0 self.hydrogen_capacity = 0 self.liquid_oxygen_capacity = 0 self.palladium_temp = 0 self.main_pipe_pressure = 0 self.aux_pipe_pressure = 0 self.cabin_pressure1 = 0 self.cabin_pressure2 = 0 self.cabin_temp1 = 0 self.cabin_temp2 = 0 self.cabin_humidity1 = 0 self.cabin_humidity2 = 0 self.flame_detector1 = 0x00 self.flame_detector2 = 0x00 self.h2_concentration1 = 0 self.h2_concentration2 = 0 self.h2_concentration3 = 0 self.o2_concentration1 = 0 self.o2_concentration2 = 0 self.ch3oh_concentration1 = 0 self.ch3oh_concentration2 = 0 self.reserved1 = [0, 0] self.emergency_battery1_voltage = 0 self.emergency_battery1_current = 0 self.emergency_battery1_max_temp = 0 self.emergency_battery1_fault_word = 0 self.emergency_battery2_voltage = 0 self.emergency_battery2_current = 0 self.emergency_battery2_max_temp = 0 self.emergency_battery2_fault_word = 0 self.cabin_ox_concentration = 0 self.cabin_temperature = 0 self.cabin_humidity = 0 self.cabin_pressure = 0 self.power_cabin_ox_concentration = 0 self.power_cabin_temperature = 0 self.power_cabin_humidity = 0 self.power_cabin_pressure = 0 self.reserved2 = [0] self.dyn_alarm_flag = [0] * 6 self.ins_alarm_flag = [0] * 6 self.ins_relay_status1 = 0x00 self.ins_relay_status2 = 0x00 self.dyn_relay_status1 = 0x00 self.dyn_relay_status2 = 0x00 self.ins_max_discharge_power = 0 self.dyn_max_discharge_power = 0 self.ins_soc = 0 self.dyn_soc = 0 self.ins_total_energy = 0 self.dyn_total_energy = 0 self.ins_power_input = 0 self.dyn_power_input = 0 self.ins_charge_status = 0x00 self.dyn_charge_status = 0x00 self.ins_voltage_link = 0 self.ins_voltage_pack = 0 self.ins_current = 0 self.ins_resistance_pos = 0 self.ins_resistance_neg = 0 self.dyn_voltage_link = 0 self.dyn_voltage_pack = 0 self.dyn_current = 0 self.dyn_resistance_pos = 0 self.dyn_resistance_neg = 0 self.ins_emergency_status = 0x00 self.dyn_emergency_status = 0x00 self.reserved3 = [0] * 2 self.ins_soc_threshold1 = 0 self.ins_soc_threshold2 = 0 self.ins_soc_threshold3 = 0 self.dyn_soc_threshold1 = 0 self.dyn_soc_threshold2 = 0 self.dyn_soc_threshold3 = 0 self.ins_power_limit1 = 0 self.ins_power_limit2 = 0 self.dyn_power_limit1 = 0 self.dyn_power_limit2 = 0 self.device_online_flag1 = 0 self.device_online_flag2 = 0 self.dyn_charge_level = 0x00 self.dyn_water_leak_status = 0x00 self.ins_water_leak_dcdc_status = 0x00 self.reserved4 = 0x00 self.heartbeat = 0 def pack(self): """打包消息为字节数据""" # 重置校验码 self.checkCode = 0x00 # 打包消息头 data = struct.pack('