LISHUZUOXUN_yangjiang/PureBackend/running_backend.py

179 lines
6.6 KiB
Python
Raw Normal View History

2024-09-23 14:54:15 +08:00
# coding: gb2312
import time
import traceback
import Exercise3.running_muwb_pure_detection
import Exercise3.running_muwb_with_rssi
from DeviceDefine.consensus import *
from PureBackend.general import RUNNING
from LogRecord.log_recorder import GLOBAL_LOG
from PureBackend.base_driver import MODEL_MEDIAPIPE
from PureBackend.exam_driver import ExamDriver
class RunningBackend(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)
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><D5BE><EFBFBD><EFBFBD>ģʽ
def running_master_mode(self):
self.running_mes.clear()
try:
if self.multi_positioning_mode:
self.running = Exercise3.running_muwb_with_rssi.Running(positioning=self.positioning)
else:
self.running = Exercise3.running_muwb_pure_detection.Running(positioning=self.positioning)
coordinates_data = {
"master": [
[0, 0, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"]
for _ in range(len(self.positioning.multi_uwb.uwb_driver_table))
],
"slaver": []
}
self.speak_driver.add_speak("<EFBFBD><EFBFBD>վʶ<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
return coordinates_data
except Exception as e:
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>󣬴<EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>{e.args}, {traceback.format_exc()}")
# <20><><EFBFBD>ó<EFBFBD><C3B3>ܵ<EFBFBD>ȦʱȦ<CAB1><C8A6>
def set_running_config(self, round_num, min_round_time):
try:
self.running.set_config(round_num, min_round_time)
return True
except Exception as e:
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><EFBFBD>ܵ<EFBFBD>ȦʱȦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>󣬴<EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>{e.args}, {traceback.format_exc()}")
return False
# <20><><EFBFBD><EFBFBD><E8B3A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
def running_reset(self):
try:
self.running_mes.clear()
self.running.reset()
return True
except Exception as e:
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>󣬴<EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>{e.args}, "
f"{traceback.format_exc()}")
return False
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֻ<EFBFBD>
def running_set_bands(self, ids):
try:
self.running_mes = {}
self.running.reset()
test_person_name = []
for person_id in ids:
person_mes = self.manager.select_a_person(person_id)
band_id = person_mes[0]["band_id"]
if not band_id:
if person_mes:
GLOBAL_LOG.write(f"{person_mes[0]['name']}δ<EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>")
return False
else:
GLOBAL_LOG.write(f"<EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<{person_id}><3E><><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>")
return False
self.running_mes[band_id] = person_mes[0]
self.running.add_tag(band_id)
self.running.add_tag_mes(band_id, person_mes[0])
test_person_name.append(person_mes[0]["name"])
return True
except Exception as e:
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>󣬴<EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>{e.args}, "
f"{traceback.format_exc()}")
return False
# <20><EFBFBD><E9BFB4>ǰָ<C7B0><D6B8><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>Ȧʱ
def get_round_time(self, person_id):
try:
data = self.running.get_person_round_time(person_id)
result = []
time_counting = 0
if data:
for key, value in data.items():
time_counting += value
round_time = str(time.strftime("%H:%M:%S", time.gmtime(value)))
counting_round_time = str(time.strftime("%H:%M:%S", time.gmtime(time_counting)))
result.append({
"name": f"<EFBFBD><EFBFBD>{key}Ȧ<EFBFBD><EFBFBD>ʱ",
"time": f"{round_time}({counting_round_time})",
"no": key
})
else:
result = []
result = sorted(result, key=lambda x: x["no"])
return result
except Exception as e:
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD>ǰָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD>Ȧʱ<EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>󣬴<EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>{e.args}, "
f"{traceback.format_exc()}")
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><D0BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
def get_running_all_score(self):
try:
data = self.running.get_all_score()
return data
except Exception as e:
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>󣬴<EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>{e.args}, "
f"{traceback.format_exc()}")
# <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD>
def fix_score(self, person_id):
try:
self.running.fix_score(person_id)
return True
except Exception as e:
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>󣬴<EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>{e.args}, "
f"{traceback.format_exc()}")
return False
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD>
def fix_withdraw(self, person_id):
try:
self.running.fix_withdraw(person_id)
return True
except Exception as e:
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>󣬴<EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>{e.args}, "
f"{traceback.format_exc()}")
return False
# <20><><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>б<EFBFBD>
def running_list(self):
try:
return list(self.running_mes.values())
except Exception as e:
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>󣬴<EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>{e.args}, "
f"{traceback.format_exc()}")
# <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
def start_running(self):
try:
self.running.start()
return True
except Exception as e:
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD>ܳ<EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>󣬴<EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>{e.args}, "
f"{traceback.format_exc()}")
return False
# <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
def voice_play(self, is_play):
try:
self.running.set_play(is_play)
return True
except Exception as e:
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>󣬴<EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>{e.args}, "
f"{traceback.format_exc()}")
return False
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
def stop_running(self):
try:
self.synchronization_info[RUNNING] = []
self.send_score_signal.set()
if self.running:
self.running.stop()
return True
except Exception as e:
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܳ<EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>󣬴<EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>{e.args}, "
f"{traceback.format_exc()}")
return False