# coding: gb2312 import traceback from LogRecord.log_recorder import GLOBAL_LOG from PureBackend.base_driver import MODEL_MEDIAPIPE from PureBackend.exam_driver import ExamDriver from PureBackend.general import * class PushupBackend(ExamDriver): def __init__(self, master_mode=True, positioning=True, camera=True, model=MODEL_MEDIAPIPE, speaker=True, multi_positioning_mode=True, device_type=UNKNOWN, pure_mode=False): super().__init__(master_mode, positioning, camera, model, speaker, multi_positioning_mode, device_type, pure_mode) if model == MODEL_MEDIAPIPE: from Exercise3.push_up_1 import PushUp_1 from Exercise3.push_up_2 import PushUp_2 from Exercise3.push_up_3 import PushUp_3 else: from Exercise_mn.push_up_1 import PushUp_1 from Exercise_mn.push_up_2 import PushUp_2 from Exercise_mn.push_up_3 import PushUp_3 self.push_up_1 = PushUp_1 self.push_up_2 = PushUp_2 self.push_up_3 = PushUp_3 # 准备进行俯卧撑 def active_push_up(self, person_id, band_id): if self.project: self.project.kill() if person_id: info = self.manager.select_a_person(person_id)[0] else: if band_id: raw_info = self.manager.select_a_person_from_band(band_id) if not raw_info: GLOBAL_LOG.write(f"准备进行俯卧撑发生错误: 该手环没有匹配的人员", need_print=True) return False info = raw_info[0] else: GLOBAL_LOG.write(f"准备进行俯卧撑发生错误: 参数缺失", need_print=True) return False try: train_info = self.get_train_info() difficulty = train_info[DIFFICULTY] standards = train_info[STANDARDS] if difficulty == DIFFICULT_HARD: self.project = self.push_up_1(info, camera=self.camera) elif difficulty == DIFFICULT_EASY: self.project = self.push_up_2(info, camera=self.camera) elif difficulty == COMMON_EASY: self.project = self.push_up_3(info, camera=self.camera) self.exercise_tag = PUSHUP return True except Exception as e: GLOBAL_LOG.write(f"准备进行俯卧撑发生错误,{str(e)},错误来源:{traceback.format_exc()}", need_print=True) return False