563 lines
26 KiB
Python
563 lines
26 KiB
Python
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD>Һ<EFBFBD>
|
|||
|
# coding: gb2312
|
|||
|
import copy
|
|||
|
|
|||
|
from PureBackend.base_driver import MODEL_MEDIAPIPE
|
|||
|
from PureBackend.manage_driver import ManagerDriver
|
|||
|
from LSZXNetWork.lszx_network import *
|
|||
|
from LSZXNetWork.data_transit import *
|
|||
|
from PureBackend.general import *
|
|||
|
from LSZXBackend.tag_control import *
|
|||
|
import shutil
|
|||
|
|
|||
|
video_path = os.path.join(GLOBAL_DIR, "LSZXVideo", "Video")
|
|||
|
output_video_path = os.path.join(GLOBAL_DIR, "LSZXVideo", "Output_Video")
|
|||
|
|
|||
|
|
|||
|
class Synchronization(ManagerDriver):
|
|||
|
|
|||
|
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)
|
|||
|
|
|||
|
# ͬ<><CDAC>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
self.synchronization_kill_sign = True
|
|||
|
self.synchronization_message = {
|
|||
|
TASK_HAD_DONE: 0,
|
|||
|
STATUS: STOP,
|
|||
|
TASK_NUMBER: 0
|
|||
|
}
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ն˺ͷ<CBBA><CDB7>Ͷ<EFBFBD>
|
|||
|
self.server = Server(ip="0.0.0.0", port=server_port, file_port=server_file_port, cache_path=video_path)
|
|||
|
self.client = Client(ip="0.0.0.0")
|
|||
|
self.transit_server = Transit_Server(ip="0.0.0.0", transit_port=transit_server_port)
|
|||
|
self.transit_client = Transit_Client(ip="0.0.0.0")
|
|||
|
threading.Thread(target=self.receive_threads).start()
|
|||
|
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>
|
|||
|
def receive_threads(self):
|
|||
|
while True:
|
|||
|
try:
|
|||
|
data = self.server.get_data()
|
|||
|
if data[0]['data_type'] == 'person_data':
|
|||
|
self.synchronization_server(data)
|
|||
|
elif data[0]['data_type'] == 'score_data':
|
|||
|
self.score_synchronization_server(data)
|
|||
|
elif data[0]['data_type'] == 'totals_data':
|
|||
|
self.totals_synchronization_server(data[0]['data'])
|
|||
|
elif data[0]['data_type'] == 'totals_sql_data':
|
|||
|
self.totals_sql_synchronization_server(data[0]['data'])
|
|||
|
elif data[0]['data_type'] == 'hrbo_data':
|
|||
|
self.totals_HrBoInfo_server(data[0])
|
|||
|
elif data[0]['data_type'] == 'broadcast':
|
|||
|
self.broadcast(address_list=data[0]['address_list'], pkg_list=data[0]['pkg_list'])
|
|||
|
elif data[0]['data_type'] == 'tag_control_data':
|
|||
|
self.tag_control_server(data[0])
|
|||
|
elif data[0]['data_type'] == 'get_band_id_response':
|
|||
|
self.get_band_id_response(data[0])
|
|||
|
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>{str(e)}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>{traceback.format_exc()}")
|
|||
|
|
|||
|
# <20>㲥<EFBFBD><E3B2A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
def broadcast(self, address_list, pkg_list):
|
|||
|
try:
|
|||
|
self.client.distributed_send(address_list, pkg_list)
|
|||
|
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>{str(e)}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>{traceback.format_exc()}")
|
|||
|
return False
|
|||
|
|
|||
|
# <20><><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD>Ϣ
|
|||
|
def reset_synchronization_status(self):
|
|||
|
self.synchronization_message = {
|
|||
|
TASK_HAD_DONE: 0,
|
|||
|
STATUS: STOP,
|
|||
|
TASK_NUMBER: 0
|
|||
|
}
|
|||
|
|
|||
|
# <20>ն˴<D5B6><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>Ϣ
|
|||
|
def synchronization_server(self, cmd_data):
|
|||
|
try:
|
|||
|
for cmd in cmd_data:
|
|||
|
if self.synchronization_message[STATUS] == STARTING:
|
|||
|
if cmd[MSG] == "start":
|
|||
|
self.synchronization_message[TASK_HAD_DONE] = 0
|
|||
|
self.synchronization_message[TASK_NUMBER] = cmd[TASK_NUMBER]
|
|||
|
self.synchronization_cache = []
|
|||
|
elif cmd[MSG] == DATA:
|
|||
|
data = cmd[DATA]
|
|||
|
self.synchronization_cache.extend(data)
|
|||
|
self.synchronization_message[TASK_HAD_DONE] += cmd[TASK_NUMBER]
|
|||
|
elif cmd[MSG] == "stop":
|
|||
|
if self.synchronization_message[TASK_HAD_DONE] == self.synchronization_message[TASK_NUMBER]:
|
|||
|
# <20><><EFBFBD>±<EFBFBD>
|
|||
|
train_info = cmd[DIFFICULTY_MES]
|
|||
|
self.set_train_info(train_info)
|
|||
|
# ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>Ϣ
|
|||
|
self.manager.delete_all_person()
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>Ϣ
|
|||
|
format_container = [
|
|||
|
{
|
|||
|
PERSON_FEATURE_LIST[key_index]: row[key_index]
|
|||
|
for key_index in range(0, len(PERSON_FEATURE_LIST))
|
|||
|
}
|
|||
|
for row in self.synchronization_cache
|
|||
|
]
|
|||
|
container_dir = {}
|
|||
|
for con in format_container:
|
|||
|
container_dir[con["id"]] = con
|
|||
|
format_container = container_dir.values()
|
|||
|
self.manager.insert_many_person_from_json(format_container)
|
|||
|
self.synchronization_message[STATUS] = SUCCESS
|
|||
|
else:
|
|||
|
self.synchronization_cache = []
|
|||
|
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>{str(e)}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>{traceback.format_exc()}")
|
|||
|
return False
|
|||
|
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ճɼ<D5B3><C9BC><EFBFBD>Ϣ
|
|||
|
def score_synchronization_server(self, cmd_data):
|
|||
|
try:
|
|||
|
for cmd in cmd_data:
|
|||
|
if self.synchronization_message[STATUS] == STARTING:
|
|||
|
if cmd[MSG] == "start":
|
|||
|
self.synchronization_message[TASK_HAD_DONE] = 0
|
|||
|
self.synchronization_message[TASK_NUMBER] = cmd[TASK_NUMBER]
|
|||
|
self.synchronization_cache = []
|
|||
|
elif cmd[MSG] == DATA:
|
|||
|
data = cmd[DATA]
|
|||
|
self.synchronization_cache.extend(data)
|
|||
|
self.synchronization_message[TASK_HAD_DONE] = cmd[TASK_NUMBER]
|
|||
|
elif cmd[MSG] == "stop":
|
|||
|
if self.synchronization_message[TASK_HAD_DONE] == self.synchronization_message[TASK_NUMBER]:
|
|||
|
self.synchronization_cache.copy()
|
|||
|
format_container = [
|
|||
|
{
|
|||
|
SCORE_FEATURE_LIST[key_index]: row[key_index]
|
|||
|
for key_index in range(0, len(SCORE_FEATURE_LIST))
|
|||
|
}
|
|||
|
for row in self.synchronization_cache
|
|||
|
]
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
for con in format_container:
|
|||
|
result = self.manager.select_a_score(person_id=con[ID], score_type=con['score_type'],
|
|||
|
batch=self.summary_info['batch'])
|
|||
|
if result is None:
|
|||
|
self.manager.insert_a_score(record=con["record"], score=con['score'],
|
|||
|
person_id=con[ID], score_type=con['score_type'],
|
|||
|
batch=self.summary_info['batch'],
|
|||
|
person_class=con['class'],
|
|||
|
name=con[NAME])
|
|||
|
else:
|
|||
|
_record = float(result[0]['record'])
|
|||
|
_score = float(result[0]['score'])
|
|||
|
|
|||
|
if con['score_type'] in {RUNAROUND, RUNNING} and con["record"] != -1 \
|
|||
|
and (float(con["record"]) < _record or float(con['score']) > _score):
|
|||
|
self.manager.update_timekeeping_score(record=con["record"], score=con['score'],
|
|||
|
person_id=con[ID],
|
|||
|
score_type=con['score_type'],
|
|||
|
batch=self.summary_info['batch'])
|
|||
|
elif float(con["record"]) > _record or float(con['score']) > _score:
|
|||
|
self.manager.update_counting_score(record=con["record"], score=con['score'],
|
|||
|
person_id=con[ID],
|
|||
|
score_type=con['score_type'],
|
|||
|
batch=self.summary_info['batch'])
|
|||
|
self.synchronization_message[STATUS] = SUCCESS
|
|||
|
else:
|
|||
|
self.synchronization_cache = []
|
|||
|
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>{str(e)}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>{traceback.format_exc()}")
|
|||
|
return False
|
|||
|
|
|||
|
def data_synchronization(self):
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
try:
|
|||
|
if not self.connection.get_connected_wifi() and not self.connection.master_mode:
|
|||
|
self.speak_driver.add_speak("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>")
|
|||
|
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>", need_print=True)
|
|||
|
return False
|
|||
|
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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>WiFi<EFBFBD><EFBFBD>", need_print=True)
|
|||
|
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>WiFi<EFBFBD><EFBFBD>")
|
|||
|
return False
|
|||
|
self_ip = self.connection.get_self_ip()
|
|||
|
if not self_ip:
|
|||
|
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><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>WiFi<EFBFBD><EFBFBD>")
|
|||
|
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><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>WiFi<EFBFBD><EFBFBD>", need_print=True)
|
|||
|
return False
|
|||
|
try:
|
|||
|
self.synchronization_message[STATUS] = STARTING
|
|||
|
self.speak_driver.add_speak("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>")
|
|||
|
while not self.synchronization_kill_sign:
|
|||
|
time.sleep(0.1)
|
|||
|
# <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>½<EFBFBD><C2BD><EFBFBD>
|
|||
|
if self.synchronization_message[STATUS] == STOP:
|
|||
|
break
|
|||
|
elif self.synchronization_message[STATUS] == SUCCESS:
|
|||
|
self.reset_synchronization_status()
|
|||
|
# <20><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB>Ƶ
|
|||
|
self.video_recorder.delete_video()
|
|||
|
self.speak_driver.add_speak("ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>")
|
|||
|
break
|
|||
|
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>{str(e)}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>{traceback.format_exc()}", need_print=True)
|
|||
|
return False
|
|||
|
|
|||
|
# <20>ն˿<D5B6><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>
|
|||
|
def waiting_data_synchronization(self):
|
|||
|
self.synchronization_kill_sign = False
|
|||
|
self.reset_synchronization_status()
|
|||
|
synchronization_thread = threading.Thread(target=self.data_synchronization)
|
|||
|
synchronization_thread.start()
|
|||
|
|
|||
|
def score_synchronization(self):
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
try:
|
|||
|
if not self.connection.get_connected_wifi() and not self.connection.master_mode:
|
|||
|
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>", need_print=True)
|
|||
|
return False
|
|||
|
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>", need_print=True)
|
|||
|
return False
|
|||
|
|
|||
|
self_ip = self.connection.get_self_ip()
|
|||
|
if not self_ip:
|
|||
|
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><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>WiFi<EFBFBD><EFBFBD>", need_print=True)
|
|||
|
return False
|
|||
|
|
|||
|
try:
|
|||
|
self.synchronization_message[STATUS] = STARTING
|
|||
|
self.speak_driver.add_speak("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>")
|
|||
|
while not self.synchronization_kill_sign:
|
|||
|
time.sleep(0.1)
|
|||
|
# <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>½<EFBFBD><C2BD><EFBFBD>
|
|||
|
if self.synchronization_message[STATUS] == STOP:
|
|||
|
break
|
|||
|
elif self.synchronization_message[STATUS] == SUCCESS:
|
|||
|
self.reset_synchronization_status()
|
|||
|
self.speak_driver.add_speak("ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>")
|
|||
|
break
|
|||
|
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>{str(e)}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>{traceback.format_exc()}")
|
|||
|
return False
|
|||
|
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD><CBBF><EFBFBD><EFBFBD>ɼ<EFBFBD>ͬ<EFBFBD><CDAC>
|
|||
|
def waiting_score_synchronization(self):
|
|||
|
self.synchronization_kill_sign = False
|
|||
|
self.reset_synchronization_status()
|
|||
|
synchronization_thread = threading.Thread(target=self.score_synchronization)
|
|||
|
synchronization_thread.start()
|
|||
|
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD>˷<EFBFBD><CBB7><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
def send_data_synchronization(self):
|
|||
|
self.synchronization_kill_sign = False
|
|||
|
self.reset_synchronization_status()
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
try:
|
|||
|
if not self.connection.get_connected_wifi() and not self.connection.master_mode:
|
|||
|
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>", need_print=True)
|
|||
|
return False
|
|||
|
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>", need_print=True)
|
|||
|
return False
|
|||
|
self.synchronization_message[STATUS] = STARTING
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸ip
|
|||
|
ip_list = self.connection.get_other()
|
|||
|
if not ip_list:
|
|||
|
self.speak_driver.add_speak("δ<EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>磬ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
|||
|
self.reset_synchronization_status()
|
|||
|
return False
|
|||
|
try:
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>Ϣ
|
|||
|
data = self.manager.select_all_person()
|
|||
|
format_data = [[row.get(key) for key in PERSON_FEATURE_LIST] for row in data]
|
|||
|
self.synchronization_message[TASK_NUMBER] = len(format_data)
|
|||
|
step = 100
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
|
|||
|
start_pkg = {MSG: "start", TASK_NUMBER: len(format_data), 'data_type': 'person_data'}
|
|||
|
pkg = [start_pkg]
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
for segment_data in [format_data[i: i + step] for i in range(0, len(format_data), step)]:
|
|||
|
counting = len(segment_data)
|
|||
|
data_pkg = {MSG: DATA, DATA: segment_data, TASK_NUMBER: counting}
|
|||
|
pkg.append(data_pkg)
|
|||
|
self.synchronization_message[TASK_HAD_DONE] += len(segment_data)
|
|||
|
# <20><><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
stop_pkg = {MSG: "stop", DIFFICULTY_MES: self.train_info}
|
|||
|
pkg.append(stop_pkg)
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>Ϣ
|
|||
|
address_list = []
|
|||
|
pkg_list = []
|
|||
|
for ip in ip_list:
|
|||
|
address_list.append((ip, server_port))
|
|||
|
pkg_list.append(pkg)
|
|||
|
# <20><><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
|
|||
|
broadcast_pkg = [{'address_list': address_list, 'pkg_list': pkg_list, 'data_type': 'broadcast'}]
|
|||
|
master_ip = self.connection.get_master_ip()
|
|||
|
print(pkg)
|
|||
|
self.client.connect2(ip=master_ip, port=server_port)
|
|||
|
self.client.send(broadcast_pkg)
|
|||
|
# <20><><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>״̬<D7B4><CCAC>
|
|||
|
self.synchronization_message[STATUS] = SUCCESS
|
|||
|
self.speak_driver.add_speak("ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>")
|
|||
|
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>{str(e)}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>{traceback.format_exc()}")
|
|||
|
return False
|
|||
|
|
|||
|
def send_score_synchronization_thread(self):
|
|||
|
synchronization_thread = threading.Thread(target=self.send_score_synchronization)
|
|||
|
synchronization_thread.start()
|
|||
|
|
|||
|
# <20>ն˷<D5B6><CBB7><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>ɼ<EFBFBD>
|
|||
|
def send_score_synchronization(self):
|
|||
|
self.synchronization_kill_sign = False
|
|||
|
self.reset_synchronization_status()
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
try:
|
|||
|
if (not self.connection.get_connected_wifi()
|
|||
|
and not self.connection.master_mode):
|
|||
|
self.speak_driver.add_speak("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>")
|
|||
|
return False
|
|||
|
except Exception as e:
|
|||
|
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>WiFi<EFBFBD><EFBFBD>")
|
|||
|
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>", need_print=True)
|
|||
|
return False
|
|||
|
if not self.connection.get_manager():
|
|||
|
self.speak_driver.add_speak("δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>磡")
|
|||
|
self.reset_synchronization_status()
|
|||
|
return False
|
|||
|
|
|||
|
try:
|
|||
|
self.speak_driver.add_speak("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>")
|
|||
|
# <20><><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>״̬<D7B4><CCAC>
|
|||
|
self.synchronization_message[STATUS] = STARTING
|
|||
|
self.synchronization_message[TASK_HAD_DONE] = 0
|
|||
|
self.synchronization_message[TASK_NUMBER] = 0
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>гɼ<D0B3><C9BC><EFBFBD>Ϣ
|
|||
|
data = self.manager.select_score()
|
|||
|
format_data = [[row.get(key) for key in SCORE_FEATURE_LIST] for row in data]
|
|||
|
video_num = len(os.listdir(video_path))
|
|||
|
manager_num = len(self.connection.get_manager())
|
|||
|
self.synchronization_message[TASK_NUMBER] = len(format_data) + video_num + video_num * manager_num
|
|||
|
step = 100
|
|||
|
counting = 0
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
|
|||
|
master_ip = self.connection.get_master_ip()
|
|||
|
start_pkg = {MSG: "start", TASK_NUMBER: len(format_data), 'data_type': 'score_data'}
|
|||
|
pkg = [start_pkg]
|
|||
|
for segment_data in [
|
|||
|
format_data[i: i + step]
|
|||
|
for i in range(0, len(format_data), step)
|
|||
|
]:
|
|||
|
counting += len(segment_data)
|
|||
|
data_pkg = {MSG: DATA, DATA: segment_data, TASK_NUMBER: counting}
|
|||
|
pkg.append(data_pkg)
|
|||
|
self.synchronization_message[TASK_HAD_DONE] += len(segment_data)
|
|||
|
# ѹ<><D1B9><EFBFBD><EFBFBD>Ƶ
|
|||
|
try:
|
|||
|
if not os.path.exists(output_video_path):
|
|||
|
os.mkdir(output_video_path)
|
|||
|
else:
|
|||
|
shutil.rmtree(output_video_path)
|
|||
|
os.mkdir(output_video_path)
|
|||
|
input_video_list = os.listdir(video_path)
|
|||
|
for vide_path in input_video_list:
|
|||
|
if not self.synchronization_kill_sign:
|
|||
|
self.video_sending.convert_video(vide_path)
|
|||
|
self.synchronization_message[TASK_HAD_DONE] += 1
|
|||
|
else:
|
|||
|
break
|
|||
|
|
|||
|
for _ip in self.connection.get_manager():
|
|||
|
self.transit_client.connect_transit(ip=master_ip, port=transit_server_port)
|
|||
|
for filename in os.listdir(output_video_path):
|
|||
|
if not self.synchronization_kill_sign:
|
|||
|
v_name = os.path.join(output_video_path, filename)
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ
|
|||
|
self.transit_client.transit_file(file_path=v_name, file_name=filename,
|
|||
|
final_target_ip=_ip)
|
|||
|
self.synchronization_message[TASK_HAD_DONE] += 1
|
|||
|
else:
|
|||
|
break
|
|||
|
except:
|
|||
|
print(traceback.format_exc())
|
|||
|
print("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
|||
|
# <20><><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
stop_pkg = {MSG: "stop"}
|
|||
|
pkg.append(stop_pkg)
|
|||
|
# <20><><EFBFBD>ͳɼ<CDB3><C9BC><EFBFBD>Ϣ
|
|||
|
address_list = []
|
|||
|
pkg_list = []
|
|||
|
for ip in self.connection.get_manager():
|
|||
|
address_list.append((ip, server_port))
|
|||
|
pkg_list.append(pkg)
|
|||
|
broadcast_pkg = [{'address_list': address_list, 'pkg_list': pkg_list, 'data_type': 'broadcast'}]
|
|||
|
# self.client.distributed_send(address_list, pkg_list)
|
|||
|
self.client.connect2(ip=master_ip, port=server_port)
|
|||
|
self.client.send(broadcast_pkg)
|
|||
|
# <20><><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>״̬<D7B4><CCAC>
|
|||
|
self.synchronization_message[STATUS] = SUCCESS
|
|||
|
self.speak_driver.add_speak("ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>")
|
|||
|
return True
|
|||
|
except Exception as e:
|
|||
|
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>")
|
|||
|
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{str(e)}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>{traceback.format_exc()}")
|
|||
|
return False
|
|||
|
|
|||
|
# <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
def get_synchronization_processing(self):
|
|||
|
mes_got = copy.deepcopy(self.synchronization_message)
|
|||
|
try:
|
|||
|
return mes_got
|
|||
|
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>{str(e)}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>{traceback.format_exc()}")
|
|||
|
return None
|
|||
|
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>
|
|||
|
def stop_data_synchronization(self):
|
|||
|
try:
|
|||
|
self.synchronization_kill_sign = True
|
|||
|
self.speak_driver.add_speak("ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
|||
|
self.reset_synchronization_status()
|
|||
|
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>{str(e)}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>{traceback.format_exc()}")
|
|||
|
return False
|
|||
|
|
|||
|
# <20>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
def tag_control_server(self, data):
|
|||
|
try:
|
|||
|
detected_tag = None
|
|||
|
# <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if data[CMD] == CMD_GET_BAND_ID:
|
|||
|
detected_tag = get_tag_func(
|
|||
|
speak_driver=self.speak_driver,
|
|||
|
positioning=self.positioning
|
|||
|
)
|
|||
|
if detected_tag:
|
|||
|
master_ip = self.connection.get_master_ip()
|
|||
|
pkg = [{'data': detected_tag, 'data_type': 'get_band_id_response'}]
|
|||
|
self.client.connect2(ip=master_ip, port=server_port)
|
|||
|
self.client.send(pkg)
|
|||
|
|
|||
|
# <20>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
elif data[CMD] == CMD_CLOSE_BAND:
|
|||
|
close_all_band(
|
|||
|
speak_driver=self.speak_driver,
|
|||
|
positioning=self.positioning
|
|||
|
)
|
|||
|
# <20>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>ľ<EFBFBD><C4BE><EFBFBD>
|
|||
|
elif data[CMD] == CMD_STOP_ALARM_ALL:
|
|||
|
close_all_band_alarm(
|
|||
|
speak_driver=self.speak_driver,
|
|||
|
positioning=self.positioning
|
|||
|
)
|
|||
|
# <20>ر<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ֻ<EFBFBD><D6BB>ľ<EFBFBD><C4BE><EFBFBD>
|
|||
|
elif data[CMD] == CMD_STOP_ALARM:
|
|||
|
tag_id = data[TAG]
|
|||
|
stop_assign_alarm(
|
|||
|
speak_driver=self.speak_driver,
|
|||
|
positioning=self.positioning,
|
|||
|
tag_id=tag_id
|
|||
|
)
|
|||
|
return detected_tag
|
|||
|
except Exception as e:
|
|||
|
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{str(e)}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>{traceback.format_exc()}")
|
|||
|
|
|||
|
# <20><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>
|
|||
|
def get_band_id_passive(self):
|
|||
|
try:
|
|||
|
if self.connection.get_connected_wifi_name():
|
|||
|
master_ip = self.connection.get_master_ip()
|
|||
|
else:
|
|||
|
self.speak_driver.add_speak("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
|||
|
return True
|
|||
|
except Exception as e:
|
|||
|
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{str(e)}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>{traceback.format_exc()}")
|
|||
|
return False
|
|||
|
try:
|
|||
|
pkg = [{CMD: CMD_GET_BAND_ID, 'data_type': 'tag_control_data'}]
|
|||
|
self.client.connect2(ip=master_ip, port=server_port)
|
|||
|
self.client.send(pkg)
|
|||
|
return None
|
|||
|
except Exception as e:
|
|||
|
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{str(e)}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>{traceback.format_exc()}")
|
|||
|
return None
|
|||
|
|
|||
|
# <20><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD>Ӧ
|
|||
|
def get_band_id_response(self, data):
|
|||
|
try:
|
|||
|
response = data['data']
|
|||
|
detected_tag = response.json()[DETECTED_TAG]
|
|||
|
return detected_tag
|
|||
|
except Exception as e:
|
|||
|
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{str(e)}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>{traceback.format_exc()}")
|
|||
|
return None
|
|||
|
|
|||
|
# <20>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>
|
|||
|
def close_all_band(self):
|
|||
|
try:
|
|||
|
if self.connection.get_connected_wifi_name():
|
|||
|
master_ip = self.connection.get_master_ip()
|
|||
|
else:
|
|||
|
self.speak_driver.add_speak("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
|||
|
return True
|
|||
|
except Exception as e:
|
|||
|
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{str(e)}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>{traceback.format_exc()}")
|
|||
|
return False
|
|||
|
try:
|
|||
|
pkg = [{CMD: CMD_CLOSE_BAND, 'data_type': 'tag_control_data'}]
|
|||
|
self.client.connect2(ip=master_ip, port=server_port)
|
|||
|
self.client.send(pkg)
|
|||
|
return True
|
|||
|
except Exception as e:
|
|||
|
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{str(e)}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>{traceback.format_exc()}", need_print=True)
|
|||
|
return False
|
|||
|
|
|||
|
# <20>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
def stop_all_band_alarm(self):
|
|||
|
try:
|
|||
|
if self.connection.get_connected_wifi_name():
|
|||
|
master_ip = self.connection.get_master_ip()
|
|||
|
else:
|
|||
|
self.speak_driver.add_speak("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
|||
|
return True
|
|||
|
except Exception as e:
|
|||
|
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{str(e)}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>{traceback.format_exc()}")
|
|||
|
return False
|
|||
|
try:
|
|||
|
pkg = [{CMD: CMD_STOP_ALARM_ALL, 'data_type': 'tag_control_data'}]
|
|||
|
self.client.connect2(ip=master_ip, port=server_port)
|
|||
|
self.client.send(pkg)
|
|||
|
return True
|
|||
|
except Exception as e:
|
|||
|
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{str(e)}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>{traceback.format_exc()}", need_print=True)
|
|||
|
return False
|
|||
|
|
|||
|
# <20>ر<EFBFBD><D8B1>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
def stop_band_alarm(self, data):
|
|||
|
band_id = data.get(BAND_ID)
|
|||
|
try:
|
|||
|
if self.connection.get_connected_wifi_name():
|
|||
|
master_ip = self.connection.get_master_ip()
|
|||
|
else:
|
|||
|
self.speak_driver.add_speak("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
|||
|
return True
|
|||
|
except Exception as e:
|
|||
|
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{str(e)}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>{traceback.format_exc()}")
|
|||
|
return False
|
|||
|
try:
|
|||
|
pkg = [{CMD: CMD_STOP_ALARM_ALL, TAG: band_id, 'data_type': 'tag_control_data'}]
|
|||
|
self.client.connect2(ip=master_ip, port=server_port)
|
|||
|
self.client.send(pkg)
|
|||
|
return True
|
|||
|
except Exception as e:
|
|||
|
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{str(e)}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>{traceback.format_exc()}", need_print=True)
|
|||
|
return False
|