224 lines
9.4 KiB
Python
224 lines
9.4 KiB
Python
|
# coding: gb2312
|
|||
|
import UWB
|
|||
|
import UWB.positioning_cluster
|
|||
|
import UWB.positioning_standalone
|
|||
|
import UWB.positioning_standalone_pd
|
|||
|
import UWB.positioning_standalone_v2
|
|||
|
from Database.database_pyqt import *
|
|||
|
from AcrossPlatform.get_platform import *
|
|||
|
from DeviceDefine.consensus import UNKNOWN
|
|||
|
from LSZXBackend.tag_control import *
|
|||
|
from LSZXNetWork.lszx_network import Network
|
|||
|
from LogRecord.log_recorder import GLOBAL_LOG
|
|||
|
from Speaker import fake_speak_base
|
|||
|
from Speaker.speak_base import SpeakServer
|
|||
|
from LSZXVideo.video_recording import VideoRecording
|
|||
|
from LSZXVideo.video_sender import VideoSending
|
|||
|
|
|||
|
MODEL_MEDIAPIPE = "mediapipe"
|
|||
|
MODEL_MOVE_NET = "move_net"
|
|||
|
|
|||
|
|
|||
|
class BaseDriver:
|
|||
|
|
|||
|
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
|
|||
|
):
|
|||
|
GLOBAL_LOG.write("ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD>", need_print=True)
|
|||
|
self.speak_driver = fake_speak_base.SpeakServer()
|
|||
|
if speaker:
|
|||
|
self.speak_driver = SpeakServer()
|
|||
|
self.speak_driver.volume_control(1)
|
|||
|
self.speak_driver.speed_control(200)
|
|||
|
# <20><>ѵϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
GLOBAL_LOG.write("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD>(1/5)", need_print=True)
|
|||
|
self.manager = Database()
|
|||
|
GLOBAL_LOG.write("<EFBFBD><EFBFBD>ѵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>(1/5)", need_print=True)
|
|||
|
GLOBAL_LOG.write("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(2/5)", need_print=True)
|
|||
|
self.connection = Network(master_mode=master_mode, device_type=device_type)
|
|||
|
GLOBAL_LOG.write("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>(2/5)", need_print=True)
|
|||
|
GLOBAL_LOG.write("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(3/5)", need_print=True)
|
|||
|
self.positioning = None
|
|||
|
self.multi_positioning_mode = multi_positioning_mode
|
|||
|
if positioning:
|
|||
|
if not multi_positioning_mode:
|
|||
|
if pure_mode:
|
|||
|
self.positioning = UWB.positioning_standalone_pd.Positioning()
|
|||
|
else:
|
|||
|
self.positioning = UWB.positioning_standalone_v2.Positioning()
|
|||
|
else:
|
|||
|
self.positioning = UWB.positioning_cluster.Positioning()
|
|||
|
self.positioning.start()
|
|||
|
self.positioning.resume()
|
|||
|
GLOBAL_LOG.write("<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>(3/5)", need_print=True)
|
|||
|
GLOBAL_LOG.write("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(4/5)", need_print=True)
|
|||
|
self.camera = None
|
|||
|
if camera:
|
|||
|
# time.sleep(5)
|
|||
|
# # <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>
|
|||
|
# while not camera_is_available():
|
|||
|
# beep(freq=300, duration=500)
|
|||
|
# time.sleep(1)
|
|||
|
self.default_source = 0
|
|||
|
if model == MODEL_MEDIAPIPE:
|
|||
|
import MCamera.mp_camera
|
|||
|
MCamera.mp_camera.Camera.add_source(source=self.default_source)
|
|||
|
self.camera = MCamera.mp_camera.Camera()
|
|||
|
elif model == MODEL_MOVE_NET:
|
|||
|
import MCamera.mn_camera
|
|||
|
MCamera.mn_camera.Camera.add_source(source=self.default_source)
|
|||
|
self.camera = MCamera.mn_camera.Camera()
|
|||
|
else:
|
|||
|
GLOBAL_LOG.write("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>豸<EFBFBD><EFBFBD>", need_print=True)
|
|||
|
GLOBAL_LOG.write('<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>(4/5)', need_print=True)
|
|||
|
GLOBAL_LOG.write("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѵ<EFBFBD>ն˺<EFBFBD>̨(5/5)", need_print=True)
|
|||
|
if SYS_PLATFORM == WINDOWS:
|
|||
|
# <><D7BC><EFBFBD><EFBFBD>Ƶ¼<C6B5><C2BC>
|
|||
|
self.video_recorder = VideoRecording()
|
|||
|
self.video_recorder.start()
|
|||
|
# <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>
|
|||
|
self.video_sending = VideoSending()
|
|||
|
GLOBAL_LOG.write("<EFBFBD><EFBFBD>ѵ<EFBFBD>ն˺<EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>(5/5)", 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><EFBFBD><EFBFBD>ѵϵͳ<EFBFBD><EFBFBD>")
|
|||
|
GLOBAL_LOG.write("ϵͳ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>", need_print=True)
|
|||
|
|
|||
|
def pure_camera(self):
|
|||
|
return self.camera.get_frame(self.default_source)
|
|||
|
|
|||
|
def get_band_id(self):
|
|||
|
try:
|
|||
|
lives_bands_id = get_tag_func(
|
|||
|
speak_driver=self.speak_driver,
|
|||
|
positioning=self.positioning
|
|||
|
)
|
|||
|
data = {"band_id": lives_bands_id}
|
|||
|
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()}")
|
|||
|
data = None
|
|||
|
return data
|
|||
|
|
|||
|
# # TODO: <20><><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
|
|||
|
# )
|
|||
|
# # <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"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{str(e)}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>{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:
|
|||
|
# error_msg = {"status": CONNECTION_ERROR, "error_message": "<22><><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD>ӣ<EFBFBD>"}
|
|||
|
# return jsonify(error_msg)
|
|||
|
# except Exception as e:
|
|||
|
# GLOBAL_LOG.write(f"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{str(e)}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>{traceback.format_exc()}")
|
|||
|
# try:
|
|||
|
# response = requests.post(
|
|||
|
# url=f"http://{master_ip}:{TERMINAL}/tag_control_server",
|
|||
|
# json={CMD: CMD_GET_BAND_ID}
|
|||
|
# )
|
|||
|
# detected_tag = response.json()[DETECTED_TAG]
|
|||
|
# return jsonify({"band_id": detected_tag})
|
|||
|
# except Exception as e:
|
|||
|
# GLOBAL_LOG.write(f"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{str(e)}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>{traceback.format_exc()}")
|
|||
|
#
|
|||
|
# # <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:
|
|||
|
# error_msg = {"status": CONNECTION_ERROR, "error_message": "<22><><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD>ӣ<EFBFBD>"}
|
|||
|
# return jsonify(error_msg)
|
|||
|
# except Exception as e:
|
|||
|
# error_msg = {"status": STATUS_UNKNOWN_ERROR, "error_message": f"<22><><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD>ӣ<EFBFBD>{e.args}"}
|
|||
|
# return jsonify(error_msg)
|
|||
|
# try:
|
|||
|
# requests.post(
|
|||
|
# url=f"http://{master_ip}:{TERMINAL}/tag_control_server",
|
|||
|
# json={CMD: CMD_CLOSE_BAND}
|
|||
|
# )
|
|||
|
# return jsonify({"status": STATUS_OK})
|
|||
|
# except Exception as e:
|
|||
|
# error_msg = {"status": STATUS_UNKNOWN_ERROR,
|
|||
|
# "error_message": "<22><><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>{}".format(e)}
|
|||
|
# print(traceback.format_exc())
|
|||
|
# return jsonify(error_msg)
|
|||
|
#
|
|||
|
# # <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:
|
|||
|
# error_msg = {"status": CONNECTION_ERROR, "error_message": "<22><><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD>ӣ<EFBFBD>"}
|
|||
|
# return jsonify(error_msg)
|
|||
|
# except Exception as e:
|
|||
|
# error_msg = {"status": STATUS_UNKNOWN_ERROR, "error_message": f"<22><><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD>ӣ<EFBFBD>{e.args}"}
|
|||
|
# return jsonify(error_msg)
|
|||
|
# try:
|
|||
|
# requests.post(
|
|||
|
# url=f"http://{master_ip}:45678/tag_control_server",
|
|||
|
# json={CMD: CMD_STOP_ALARM_ALL}
|
|||
|
# )
|
|||
|
# return jsonify({"status": STATUS_OK})
|
|||
|
# except Exception as e:
|
|||
|
# error_msg = {"status": STATUS_UNKNOWN_ERROR,
|
|||
|
# "error_message": "<22><><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>{}".format(e)}
|
|||
|
# print(traceback.format_exc())
|
|||
|
# return jsonify(error_msg)
|
|||
|
#
|
|||
|
# # <20>ر<EFBFBD><D8B1>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
# def stop_band_alarm(self):
|
|||
|
# data = request.json
|
|||
|
# band_id = data.get(BAND_ID)
|
|||
|
# try:
|
|||
|
# if self.connection.get_connected_wifi_name():
|
|||
|
# master_ip = self.connection.get_master_ip()
|
|||
|
# else:
|
|||
|
# error_msg = {"status": CONNECTION_ERROR, "error_message": "<22><><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD>ӣ<EFBFBD>"}
|
|||
|
# return jsonify(error_msg)
|
|||
|
# except Exception as e:
|
|||
|
# error_msg = {"status": STATUS_UNKNOWN_ERROR, "error_message": f"<22><><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD>ӣ<EFBFBD>{e.args}"}
|
|||
|
# return jsonify(error_msg)
|
|||
|
# try:
|
|||
|
# requests.post(
|
|||
|
# url=f"http://{master_ip}:45678/tag_control_server",
|
|||
|
# json={CMD: CMD_STOP_ALARM_ALL, TAG: band_id}
|
|||
|
# )
|
|||
|
# return jsonify({"status": STATUS_OK})
|
|||
|
# except Exception as e:
|
|||
|
# error_msg = {"status": STATUS_UNKNOWN_ERROR,
|
|||
|
# "error_message": "<22><><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>{}".format(e)}
|
|||
|
# return jsonify(error_msg)
|