179 lines
6.6 KiB
Python
179 lines
6.6 KiB
Python
|
# 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
|