|
|
@@ -0,0 +1,241 @@
|
|
|
+import threading
|
|
|
+
|
|
|
+import settings
|
|
|
+from collections import defaultdict
|
|
|
+import time
|
|
|
+from .McuDebug import McuDebug
|
|
|
+
|
|
|
+
|
|
|
+class OtherSet():
|
|
|
+ def __init__(self, mcu):
|
|
|
+ super().__init__()
|
|
|
+ self.mcu = mcu
|
|
|
+ self.get_value_flag = False
|
|
|
+ self.last_value = defaultdict(float)
|
|
|
+ self.mcu_debug = McuDebug(mcu, is_debug=True, is_deviation=False)
|
|
|
+ # self.ampy_run = None
|
|
|
+ # 自动获取数据
|
|
|
+ # QTimer.singleShot(500, self.get_data_from_mcu)
|
|
|
+
|
|
|
+ def get_data_from_mcu(self, *args):
|
|
|
+ self.get()
|
|
|
+
|
|
|
+ def init(self):
|
|
|
+ self.ui.is_auto_send_base_info.setMinimum(0)
|
|
|
+ self.ui.is_auto_send_base_info.setMaximum(10000)
|
|
|
+ self.ui.is_move_retry.setMinimum(0)
|
|
|
+ self.ui.is_move_retry.setMaximum(10000)
|
|
|
+ self.ui.is_data_response.setMinimum(0)
|
|
|
+ self.ui.is_data_response.setMaximum(10000)
|
|
|
+ self.ui.low_speed.setMinimum(0)
|
|
|
+ self.ui.low_speed.setMaximum(10000)
|
|
|
+ self.ui.is_test.setMinimum(0)
|
|
|
+ self.ui.is_test.setMaximum(10000)
|
|
|
+ self.ui.to_init_mode.setMinimum(0)
|
|
|
+ self.ui.to_init_mode.setMaximum(10000)
|
|
|
+ self.ui.turntable_move_to_init_mode.setMinimum(0)
|
|
|
+ self.ui.turntable_move_to_init_mode.setMaximum(10000)
|
|
|
+ self.ui.led_count.setMinimum(0)
|
|
|
+ self.ui.led_count.setMaximum(10000)
|
|
|
+ self.ui.turntable_steering_angle_ratio.setMinimum(0)
|
|
|
+ self.ui.turntable_steering_angle_ratio.setMaximum(10000)
|
|
|
+ self.ui.is_manual_check.setMinimum(0)
|
|
|
+ self.ui.is_manual_check.setMaximum(10000)
|
|
|
+ self.ui.camera_steering_angle_ratio.setMinimum(0)
|
|
|
+ self.ui.camera_steering_angle_ratio.setMaximum(100000)
|
|
|
+ self.ui.is_auto_motor_to_disable.setMinimum(0)
|
|
|
+ self.ui.is_auto_motor_to_disable.setMaximum(10000)
|
|
|
+ self.ui.diff_dir.setMinimum(0)
|
|
|
+ self.ui.diff_dir.setMaximum(10000)
|
|
|
+ self.ui.is_auto_send_pos_info.setMinimum(0)
|
|
|
+ self.ui.is_auto_send_pos_info.setMaximum(10000)
|
|
|
+ self.ui.is_dog.setMinimum(0)
|
|
|
+ self.ui.is_dog.setMaximum(10000)
|
|
|
+ self.ui.has_been_set_motor_config.setMinimum(0)
|
|
|
+ self.ui.has_been_set_motor_config.setMaximum(10000)
|
|
|
+ # 相机舵机
|
|
|
+ self.ui.camera_degree.setSingleStep(0.1)
|
|
|
+ self.ui.camera_degree.setMinimum(-90)
|
|
|
+ self.ui.camera_degree.setMaximum(90)
|
|
|
+ self.ui.camera_degree.valueChanged.connect(
|
|
|
+ lambda x: self.change_value(x, "相机舵机")
|
|
|
+ )
|
|
|
+
|
|
|
+ self.ui.set.clicked.connect(self.set)
|
|
|
+ self.ui.get.clicked.connect(self.get)
|
|
|
+ self.ui.init_mcu.clicked.connect(self.init_mcu)
|
|
|
+ self.ui.pushButton.clicked.connect(self.check_and_upload)
|
|
|
+ self.ui.pushButton_2.clicked.connect(self.stop_mcu)
|
|
|
+ # 设定相机舵机偏移量
|
|
|
+ self.ui.set_camera_degree.clicked.connect(
|
|
|
+ lambda *args: self.set_deviation("相机舵机")
|
|
|
+ )
|
|
|
+
|
|
|
+ def check_and_upload(self, *args):
|
|
|
+ try:
|
|
|
+ ampy_class = settings.PLUGINS_DICT["ampy_scribe"]["AMPY插件"]
|
|
|
+ except:
|
|
|
+ return
|
|
|
+ self.s = threading.Thread(
|
|
|
+ target=ampy_class(top_windows=self.windows, windows=self).run, args=()
|
|
|
+ )
|
|
|
+ self.s.start()
|
|
|
+
|
|
|
+ def stop_mcu(self, *args):
|
|
|
+ self.mcu.stop_mcu()
|
|
|
+
|
|
|
+ def send_log(self, text):
|
|
|
+ if self.mcu:
|
|
|
+ self.mcu.send_log(text)
|
|
|
+
|
|
|
+ # 写入文件测试
|
|
|
+ def init_mcu(self, *args):
|
|
|
+ self.mcu.to_init_device_origin_point(device_name="mcu", is_force=True)
|
|
|
+
|
|
|
+ def change_value(self, value, name):
|
|
|
+ value = round(value, 2)
|
|
|
+ if self.last_value[name] - 1 <= value <= self.last_value[name] + 1:
|
|
|
+ if name == "相机电机":
|
|
|
+ self.mcu_debug.camera_high_motor(value=value)
|
|
|
+ if name == "相机舵机":
|
|
|
+ self.mcu_debug.camera_steering(value=value)
|
|
|
+ if name == "转盘舵机":
|
|
|
+ self.mcu_debug.turntable_steering(value=value)
|
|
|
+ if name == "转盘前后电机":
|
|
|
+ self.mcu_debug.turntable_position_motor(value=value)
|
|
|
+ if name == "翻板舵机中位":
|
|
|
+ self.mcu_debug.overturn_steering(value=value)
|
|
|
+ if name == "翻板舵机高位":
|
|
|
+ self.mcu_debug.overturn_steering(value=value)
|
|
|
+ if name == "翻板舵机上升速度":
|
|
|
+ pass
|
|
|
+ print(value, name)
|
|
|
+ self.last_value[name] = value
|
|
|
+
|
|
|
+ def set_deviation(self, name, camera_steering_deviation):
|
|
|
+ if name == "相机舵机":
|
|
|
+ # 设定相机舵机偏移量
|
|
|
+ # camera_steering_deviation = self.ui.camera_degree.value()
|
|
|
+ device_name = "camera_steering"
|
|
|
+ self.mcu.set_deviation(
|
|
|
+ device_name=device_name, _type=0, deviation=camera_steering_deviation
|
|
|
+ )
|
|
|
+ # self.ui.camera_degree.setValue(0.0)
|
|
|
+
|
|
|
+ def setMcuInfo(self, data):
|
|
|
+ self.mcu.msg_type = "set_other_mcu_info"
|
|
|
+ if not self.get_value_flag:
|
|
|
+ self.mcu.sendSocketMessage(
|
|
|
+ code=1, msg="请先获取其他mcu配置信息", device_status=0, data=None
|
|
|
+ )
|
|
|
+ self.mcu.msg_type = "mcu"
|
|
|
+ return
|
|
|
+
|
|
|
+ # is_auto_send_base_info = data.get("is_auto_send_base_info")
|
|
|
+ # is_move_retry = data.get("is_move_retry")
|
|
|
+ # is_data_response = data.get("is_data_response")
|
|
|
+ # low_speed = data.get("low_speed")
|
|
|
+ # is_test = data.get("is_test")
|
|
|
+ # to_init_mode = data.get("to_init_mode")
|
|
|
+ # turntable_move_to_init_mode = data.get("turntable_move_to_init_mode")
|
|
|
+ # led_count = data.get("led_count")
|
|
|
+ # turntable_steering_angle_ratio = data.get("turntable_steering_angle_ratio")
|
|
|
+ # is_manual_check = data.get("is_manual_check")
|
|
|
+ # camera_steering_angle_ratio = data.get("camera_steering_angle_ratio")
|
|
|
+ # is_auto_motor_to_disable = data.get("is_auto_motor_to_disable")
|
|
|
+ # diff_dir = data.get("diff_dir")
|
|
|
+ # is_auto_send_pos_info = data.get("is_auto_send_pos_info")
|
|
|
+ # is_dog = data.get("is_dog")
|
|
|
+ # has_been_set_motor_config = data.get("has_been_set_motor_config")
|
|
|
+
|
|
|
+ # data = {
|
|
|
+ # "is_auto_send_base_info": is_auto_send_base_info,
|
|
|
+ # "is_move_retry": is_move_retry,
|
|
|
+ # "is_data_response": is_data_response,
|
|
|
+ # "low_speed": low_speed,
|
|
|
+ # "is_test": is_test,
|
|
|
+ # "to_init_mode": to_init_mode,
|
|
|
+ # "turntable_move_to_init_mode": turntable_move_to_init_mode,
|
|
|
+ # "led_count": led_count,
|
|
|
+ # "turntable_steering_angle_ratio": turntable_steering_angle_ratio,
|
|
|
+ # "is_manual_check": is_manual_check,
|
|
|
+ # "camera_steering_angle_ratio": camera_steering_angle_ratio,
|
|
|
+ # "is_auto_motor_to_disable": is_auto_motor_to_disable,
|
|
|
+ # "diff_dir": diff_dir,
|
|
|
+ # "is_auto_send_pos_info": is_auto_send_pos_info,
|
|
|
+ # "is_dog": is_dog,
|
|
|
+ # "has_been_set_motor_config": has_been_set_motor_config,
|
|
|
+ # }
|
|
|
+ self.mcu.set_to_mcu_other_info(data)
|
|
|
+ self.mcu.sendSocketMessage(code=0, msg="已完成设置", device_status=2, data=None)
|
|
|
+ print("已完成设置")
|
|
|
+ self.mcu.msg_type = "mcu"
|
|
|
+
|
|
|
+ def getMcuInfo(self, *args):
|
|
|
+ self.mcu.get_other_info()
|
|
|
+ _s = time.time()
|
|
|
+ last_num = self.mcu.last_mcu_other_info_data["num"]
|
|
|
+ print("_s", _s)
|
|
|
+ while 1:
|
|
|
+ time.sleep(0.1)
|
|
|
+ if time.time() - _s > 2:
|
|
|
+ return False
|
|
|
+ print(
|
|
|
+ "last_mcu_other_info_data num",
|
|
|
+ self.mcu.last_mcu_other_info_data["num"],
|
|
|
+ )
|
|
|
+ if last_num < self.mcu.last_mcu_other_info_data["num"]:
|
|
|
+ data = self.mcu.last_mcu_other_info_data["data"]
|
|
|
+ print("获取中断", data)
|
|
|
+ break
|
|
|
+ # if self.mcu.last_mcu_other_info_data["time"] - _s > 0:
|
|
|
+ # data = self.mcu.last_mcu_other_info_data["data"]
|
|
|
+ # break
|
|
|
+ print("获取成功")
|
|
|
+ is_auto_send_base_info = data["is_auto_send_base_info"]
|
|
|
+ is_move_retry = data["is_move_retry"]
|
|
|
+ is_data_response = data["is_data_response"]
|
|
|
+ low_speed = data["low_speed"]
|
|
|
+ is_test = data["is_test"]
|
|
|
+ to_init_mode = data["to_init_mode"]
|
|
|
+ turntable_move_to_init_mode = data["turntable_move_to_init_mode"]
|
|
|
+ led_count = data["led_count"]
|
|
|
+ turntable_steering_angle_ratio = data["turntable_steering_angle_ratio"]
|
|
|
+ is_manual_check = data["is_manual_check"]
|
|
|
+ camera_steering_angle_ratio = data["camera_steering_angle_ratio"]
|
|
|
+ diff_dir = data["diff_dir"]
|
|
|
+ is_auto_send_pos_info = data["is_auto_send_pos_info"]
|
|
|
+ is_dog = data["is_dog"]
|
|
|
+ has_been_set_motor_config = data["has_been_set_motor_config"]
|
|
|
+
|
|
|
+ is_auto_motor_to_disable = data["is_auto_motor_to_disable"]
|
|
|
+ if is_auto_motor_to_disable is None:
|
|
|
+ is_auto_motor_to_disable = False
|
|
|
+ dataSend = {
|
|
|
+ "is_auto_send_base_info": is_auto_send_base_info,
|
|
|
+ "is_move_retry": is_move_retry,
|
|
|
+ "is_data_response": is_data_response,
|
|
|
+ "low_speed": low_speed,
|
|
|
+ "is_test": is_test,
|
|
|
+ "to_init_mode": to_init_mode,
|
|
|
+ "turntable_move_to_init_mode": turntable_move_to_init_mode,
|
|
|
+ "led_count": led_count,
|
|
|
+ "turntable_steering_angle_ratio": turntable_steering_angle_ratio,
|
|
|
+ "is_manual_check": is_manual_check,
|
|
|
+ "camera_steering_angle_ratio": camera_steering_angle_ratio,
|
|
|
+ "is_auto_motor_to_disable": is_auto_motor_to_disable,
|
|
|
+ "diff_dir": diff_dir,
|
|
|
+ "is_auto_send_pos_info": is_auto_send_pos_info,
|
|
|
+ "is_dog": is_dog,
|
|
|
+ "has_been_set_motor_config": has_been_set_motor_config,
|
|
|
+ }
|
|
|
+ self.get_value_flag = True
|
|
|
+ self.mcu.msg_type = "get_other_mcu_info"
|
|
|
+ self.mcu.sendSocketMessage(
|
|
|
+ code=0, msg="获取mcu其他配置信息", device_status=2, data=dataSend
|
|
|
+ )
|
|
|
+ self.mcu.msg_type = "mcu"
|
|
|
+
|
|
|
+ def __del__(self):
|
|
|
+ self.state = 2
|
|
|
+ self.t = None
|