| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308 |
- from collections import defaultdict
- from .McuDebug import McuDebug
- from functools import partial
- import time, asyncio
- import settings
- class McuDeviationSet:
- # 调试处理
- # data_sign = Signal(dict)
- # info_sign = Signal(str)
- # is_get_offset = Signal(dict)
- def __init__(self, mcu):
- super().__init__()
- self.mcu = mcu
- # self.setupUi(self)
- # self.init()
- # self.set_enable_by_mcu()
- # self.show()
- self.last_value = defaultdict(float)
- is_debug = True if settings.IS_DEBUG == "true" else False
- self.mcu_debug = McuDebug(mcu, is_debug=is_debug, is_deviation=False)
- # loop = asyncio.get_event_loop()
- self.get_mcu_deviation()
- # # 运动到设定位
- # QTimer.singleShot(2500, self.init_pos)
- # def set_enable_by_mcu(self):
- # if self.mcu.state_camera_motor != 2:
- # self.doubleSpinBox.setEnabled(False)
- # self.pushButton_3.setEnabled(False)
- # if self.mcu.state_camera_steering != 2:
- # self.doubleSpinBox_2.setEnabled(False)
- # self.pushButton_16.setEnabled(False)
- # if self.mcu.state_turntable_steering != 2:
- # self.doubleSpinBox_3.setEnabled(False)
- # self.pushButton_22.setEnabled(False)
- # self.doubleSpinBox_7.setEnabled(False)
- def init(self):
- self.is_get_offset.connect(self.init_pos)
- self.windows.data_info.connect(self.get_mcu_deviation_info)
- # 相机电机
- self.doubleSpinBox.setSingleStep(1)
- self.doubleSpinBox.setMinimum(0)
- self.doubleSpinBox.setMaximum(400)
- self.doubleSpinBox.valueChanged.connect(
- lambda x: self.change_value(x, "相机电机")
- )
- # 相机舵机
- self.doubleSpinBox_2.setSingleStep(0.1)
- self.doubleSpinBox_2.setMinimum(-40)
- self.doubleSpinBox_2.setMaximum(40)
- self.doubleSpinBox_2.valueChanged.connect(
- lambda x: self.change_value(x, "相机舵机")
- )
- # 转盘电机
- self.doubleSpinBox_3.setSingleStep(1)
- self.doubleSpinBox_3.setMinimum(-720)
- self.doubleSpinBox_3.setMaximum(720)
- self.doubleSpinBox_3.valueChanged.connect(
- lambda x: self.change_value(x, "转盘舵机")
- )
- # 转盘前后电机
- self.doubleSpinBox_7.setSingleStep(1)
- self.doubleSpinBox_7.setMinimum(0)
- self.doubleSpinBox_7.setMaximum(950)
- self.doubleSpinBox_7.setValue(300)
- self.doubleSpinBox_7.valueChanged.connect(
- lambda x: self.change_value(x, "转盘前后电机")
- )
- # 翻板舵机中位
- self.doubleSpinBox_4.setSingleStep(0.5)
- self.doubleSpinBox_4.setValue(90)
- self.doubleSpinBox_4.setMinimum(0)
- self.doubleSpinBox_4.setMaximum(180)
- self.doubleSpinBox_4.valueChanged.connect(
- lambda x: self.change_value(x, "翻板舵机中位")
- )
- # 翻板舵机高位
- self.doubleSpinBox_5.setSingleStep(0.5)
- self.doubleSpinBox_5.setValue(10)
- self.doubleSpinBox_5.setMinimum(0)
- self.doubleSpinBox_5.setMaximum(180)
- self.doubleSpinBox_5.valueChanged.connect(
- lambda x: self.change_value(x, "翻板舵机高位")
- )
- # 翻板舵机上升速度
- self.doubleSpinBox_6.setSingleStep(1)
- self.doubleSpinBox_6.setValue(5)
- self.doubleSpinBox_6.setMinimum(1)
- self.doubleSpinBox_6.setMaximum(10)
- self.doubleSpinBox_6.valueChanged.connect(
- lambda x: self.change_value(x, "翻板舵机上升速度")
- )
- # 翻板舵机下降速度
- self.doubleSpinBox_8.setSingleStep(1)
- self.doubleSpinBox_8.setValue(5)
- self.doubleSpinBox_8.setMinimum(1)
- self.doubleSpinBox_8.setMaximum(10)
- self.doubleSpinBox_8.valueChanged.connect(
- lambda x: self.change_value(x, "翻板舵机下降速度")
- )
- # 获取偏移量
- self.pushButton_2.clicked.connect(self.get_mcu_deviation)
- # 设定相机高度偏移量
- self.pushButton_3.clicked.connect(lambda *args: self.set_deviation("相机电机"))
- # 设定相机舵机偏移量
- self.pushButton_16.clicked.connect(lambda *args: self.set_deviation("相机舵机"))
- # 设定转盘偏移量
- self.pushButton_22.clicked.connect(lambda *args: self.set_deviation("转盘舵机"))
- # 设定翻版舵机偏移量
- self.pushButton_8.clicked.connect(
- lambda *args: self.set_deviation("翻板舵机中位")
- )
- # 设定翻版舵机偏移量
- self.pushButton_9.clicked.connect(
- lambda *args: self.set_deviation("翻板舵机高位")
- )
- self.pushButton_10.clicked.connect(
- lambda *args: self.set_deviation("翻板舵机上升速度")
- )
- self.pushButton_12.clicked.connect(
- lambda *args: self.set_deviation("翻板舵机下降速度")
- )
- # 转盘重新获取转速比
- # self.pushButton_7.clicked.connect(self.set_turntable_to_ratio_init)
- # 转盘重新定位到原点
- self.pushButton_11.clicked.connect(self._to_init_all)
- def init_pos(self, data):
- time.sleep(0.6)
- func = partial(self._move_equipment, data=data)
- self.do_thread_run(func, call_back=None, time_out=30)
- def _move_equipment(self, data):
- self.mcu_debug.move_equipment(data=data)
- # MCU运动是否有停止检查,设定超时时间
- time.sleep(1.5)
- if self.check_mcu_move_is_stop() is False:
- return
- def check_mcu_move_is_stop(self, out_time=15):
- _s = time.time()
- while 1:
- time.sleep(0.1)
- if time.time() - _s > out_time:
- return True
- if self.mcu.mcu_move_state == 2:
- return True
- if settings.IS_LIN_SHI_TEST:
- time.sleep(3)
- return True
- def change_value(self, value, name):
- value = round(float(value), 2)
- print("change_value===>", value, name)
- 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):
- if name == "相机电机":
- # 设定相机高度偏移量 单位mm
- camera_high_motor_deviation = int(self.last_value[name])
- device_name = "camera_high_motor"
- self.mcu.set_deviation(
- device_name=device_name, _type=0, deviation=camera_high_motor_deviation
- )
- if name == "相机舵机":
- # 设定相机舵机偏移量
- camera_steering_deviation = self.last_value[name]
- device_name = "camera_steering"
- self.mcu.set_deviation(
- device_name=device_name, _type=0, deviation=camera_steering_deviation
- )
- # self.doubleSpinBox_2.setValue(0.0)
- if name == "转盘舵机":
- # 设定转盘舵机偏移角度 单位 度
- turntable_steering_deviation = self.last_value[name]
- device_name = "turntable_steering"
- self.mcu.set_deviation(
- device_name=device_name, _type=1, deviation=turntable_steering_deviation
- )
- if name == "翻板舵机中位":
- # 设定翻版舵机偏移量
- value = self.last_value[name]
- device_name = "overturn_steering"
- self.mcu.set_deviation(device_name=device_name, _type=0, deviation=value)
- if name == "翻板舵机高位":
- # 设定翻版舵机偏移量
- value = self.last_value[name]
- device_name = "overturn_steering"
- self.mcu.set_deviation(device_name=device_name, _type=1, deviation=value)
- if name == "翻板舵机上升速度":
- # 设定翻版舵机偏移量
- value = self.last_value[name]
- device_name = "overturn_steering"
- self.mcu.set_deviation(device_name=device_name, _type=2, deviation=value)
- if name == "翻板舵机下降速度":
- # 设定翻版舵机偏移量
- value = self.last_value[name]
- device_name = "overturn_steering"
- self.mcu.set_deviation(device_name=device_name, _type=3, deviation=value)
- def _to_init_all(self, *args):
- self.mcu.to_init_device_origin_point(device_name="mcu", is_force=True)
- def get_mcu_deviation(self):
- asyncio.run(self.mcu.getDeviationInfo())
- def get_mcu_deviation_info(self, data):
- if "_type" not in data:
- return
- get_deviation_data = {}
- if data["_type"] == "get_deviation_data":
- data = data["data"]
- print("偏移量信息")
- # overturn_steering_up_speed overturn_steering_down_speed
- # 相机电机 单位mm
- if "camera_high_motor_deviation" in data:
- # self.doubleSpinBox.setValue(float(data["camera_high_motor_deviation"]))
- get_deviation_data["camera_high_motor_deviation"] = float(
- data["camera_high_motor_deviation"]
- )
- # 相机舵机
- if "camera_steering_deviation" in data:
- # self.doubleSpinBox_2.setValue(float(data["camera_steering_deviation"]))
- get_deviation_data["camera_steering_deviation"] = float(
- data["camera_steering_deviation"]
- )
- # 转盘偏移位
- if "turntable_steering_deviation" in data:
- # self.doubleSpinBox_3.setValue(
- # float(data["turntable_steering_deviation"])
- # )
- get_deviation_data["turntable_steering_deviation"] = float(
- data["turntable_steering_deviation"]
- )
- # 翻板舵机中位
- if "overturn_steering_middle" in data:
- # self.doubleSpinBox_4.setValue(float(data["overturn_steering_middle"]))
- get_deviation_data["overturn_steering_middle"] = float(
- data["overturn_steering_middle"]
- )
- # 翻板舵机高位
- if "overturn_steering_high" in data:
- # self.doubleSpinBox_5.setValue(float(data["overturn_steering_high"]))
- get_deviation_data["overturn_steering_high"] = float(
- data["overturn_steering_high"]
- )
- # 翻板舵机
- if "overturn_steering_up_speed" in data:
- # self.doubleSpinBox_6.setValue(float(data["overturn_steering_up_speed"]))
- get_deviation_data["overturn_steering_up_speed"] = float(
- data["overturn_steering_up_speed"]
- )
- if "overturn_steering_down_speed" in data:
- # self.doubleSpinBox_8.setValue(
- # float(data["overturn_steering_down_speed"])
- # )
- get_deviation_data["overturn_steering_down_speed"] = float(
- data["overturn_steering_down_speed"]
- )
- # 初始化位置
- # data = {
- # "相机电机": self.doubleSpinBox.value(),
- # "相机舵机": self.doubleSpinBox_2.value(),
- # "转盘舵机": self.doubleSpinBox_3.value(),
- # "转盘前后电机": self.doubleSpinBox_7.value(),
- # }
- # self.is_get_offset.emit(data)
- print("获取初始化位置 [get_deviation_data] ", get_deviation_data)
- def __del__(self):
- self.state = 2
- self.t = None
|