|
|
@@ -23,6 +23,7 @@ import logging
|
|
|
from mcu.capture.smart_shooter_class import SmartShooter
|
|
|
import logging
|
|
|
from conifg_info import ConfigManager
|
|
|
+
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
|
@@ -31,29 +32,38 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
lock = threading.Lock()
|
|
|
|
|
|
def __init__(
|
|
|
- self, websocket_manager: ConnectionManager, smart_shooter: SmartShooter = None
|
|
|
+ self, websocket_manager: ConnectionManager, smart_shooter: SmartShooter = None
|
|
|
):
|
|
|
super().__init__(
|
|
|
websocket_manager=websocket_manager, smart_shooter=smart_shooter
|
|
|
)
|
|
|
+ self.camera_high_motor_deviation_offset = 0
|
|
|
self.camera_height = 400
|
|
|
self.config_manager = None
|
|
|
self.msg_type = "mcu"
|
|
|
self.command = {
|
|
|
"to_device_move": 1, # 设备运动
|
|
|
- "to_init_device": 2, # 初始化设备
|
|
|
+ 'to_init_device': 2, # 初始化设备
|
|
|
"to_deal_other_device": 3, # 处理其他设备
|
|
|
- "get_all_info": 29, # 获取所有信息
|
|
|
- "set_deviation": 40, # 设置偏移量
|
|
|
- "get_deviation": 41, # 读取偏移量
|
|
|
+ 'get_all_info': 29, # 获取所有信息
|
|
|
+ 'set_deviation': 40, # 设置偏移量
|
|
|
+ 'get_deviation': 41, # 读取偏移量
|
|
|
"signal_forwarding": 91, # 信号转发处理
|
|
|
"signal_forwarding_return": 92, # 信号转发返回
|
|
|
"get_other_info": 44, # 获取其他信息
|
|
|
"open_rgb_led": 43, ## RGB灯的处理与通讯
|
|
|
"set_other_info": 45, # 设置其他信息
|
|
|
"query_remote_control_battery": 47, # 查询遥控器电量
|
|
|
- "set_turntable_mode": 48, # 设置转盘通讯方式 1、串口、2、无线、3 混合
|
|
|
+ # "set_turntable_mode": 48, # 设置转盘通讯方式 1、串口、2、无线、3 混合
|
|
|
+ "get_mcu_device_id": 49, # 查询MCU的设备号
|
|
|
+ "mcu_power_off": 53, # 设备关机
|
|
|
"stop_mcu": 93, # 停止运行mcu
|
|
|
+ "get_steering_temperature": 108, # 查询舵机的当前的温度
|
|
|
+ # "steering_forwarding": 113, # 舵机信号转发处理
|
|
|
+ # "steering_forwarding_callback": 114, # 舵机信号转发返回
|
|
|
+ "get_motor_value": 119, # 获取当前电机值;逻辑值
|
|
|
+ "set_zero_debug": 120, # 简单的设备归零,用于调试
|
|
|
+ "set_stepper_disable": 121, # 释放,或恢复使能
|
|
|
}
|
|
|
self.serial_ins = None
|
|
|
self.mcu_deviation_set = McuDeviationSet(self)
|
|
|
@@ -100,19 +110,21 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
"turntable_position_motor": 7,
|
|
|
"mp3_player": 8,
|
|
|
"mcu": 99,
|
|
|
+ "camera_zoom_motor": 10,
|
|
|
}
|
|
|
self.last_move_time = time.time()
|
|
|
self.device_name_dict_mapping = {
|
|
|
- 0:"相机角度",
|
|
|
- 1:"相机高度",
|
|
|
- 2:"转盘角度",
|
|
|
- 3:"翻板角度",
|
|
|
- 4:"激光灯位置",
|
|
|
- 5:"蜂鸣器",
|
|
|
- 6:"split",
|
|
|
- 7:"转盘位置",
|
|
|
- 8:"播放音频",
|
|
|
- 99:"mcu命令",
|
|
|
+ 0: "相机角度",
|
|
|
+ 1: "相机高度",
|
|
|
+ 2: "转盘角度",
|
|
|
+ 3: "翻板角度",
|
|
|
+ 4: "激光灯位置",
|
|
|
+ 5: "蜂鸣器",
|
|
|
+ 6: "split",
|
|
|
+ 7: "转盘位置",
|
|
|
+ 8: "播放音频",
|
|
|
+ 99: "mcu命令",
|
|
|
+ 10: "相机焦段",
|
|
|
}
|
|
|
# 最近的mcu基础信息,用于获取数据状态检查
|
|
|
self.last_mcu_info_data = {
|
|
|
@@ -127,7 +139,6 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
"data": {},
|
|
|
}
|
|
|
|
|
|
-
|
|
|
# self.window = window
|
|
|
self.last_push_time = defaultdict(float)
|
|
|
self.is_running = False
|
|
|
@@ -153,6 +164,39 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
126: self.get_all_registers_list_by_usb, # 获取所有寄存器
|
|
|
150: self.dynamic_parameter_issuance, # 动态参数下发
|
|
|
}
|
|
|
+
|
|
|
+ def set_dynamic_config(self, config):
|
|
|
+ """
|
|
|
+ 设置动态参数配置
|
|
|
+ """
|
|
|
+ print("set_dynamic_config", config)
|
|
|
+ if not self.init_state:
|
|
|
+ self.sendSocketMessage(code=1, msg="mcu设备未初始化", device_status=4)
|
|
|
+ return False
|
|
|
+ return self.config_manager.set_dynamic_value(config)
|
|
|
+
|
|
|
+ def get_dynamic_config(self):
|
|
|
+ """
|
|
|
+ 获取动态参数配置
|
|
|
+ """
|
|
|
+ if not self.init_state:
|
|
|
+ self.sendSocketMessage(code=1, msg="mcu设备未初始化", device_status=4)
|
|
|
+ return False
|
|
|
+ # 先收集需要删除的键
|
|
|
+ keys_to_delete = []
|
|
|
+ for item in list(self.config_manager.CONFIG_METADATA.keys()):
|
|
|
+ item_value = self.config_manager.get_dynamic_value(self.config_manager.CONFIG_METADATA[item])
|
|
|
+ if not item_value:
|
|
|
+ keys_to_delete.append(item)
|
|
|
+ continue
|
|
|
+ self.config_manager.CONFIG_METADATA[item]['value'] = item_value
|
|
|
+
|
|
|
+ # 遍历结束后再删除
|
|
|
+ for key in keys_to_delete:
|
|
|
+ del self.config_manager.CONFIG_METADATA[key]
|
|
|
+
|
|
|
+ return self.config_manager.CONFIG_METADATA
|
|
|
+
|
|
|
def get_device_info(self):
|
|
|
if not self.init_state:
|
|
|
self.sendSocketMessage(code=1, msg="mcu设备未初始化", device_status=4)
|
|
|
@@ -165,27 +209,32 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
if not data:
|
|
|
return False
|
|
|
return_data = self.analysis_data(data[1:])
|
|
|
+ camera_focal_data = self.config_manager.camera_focal_data()
|
|
|
+ # print("return_data", return_data)
|
|
|
+ # print("camera_high_motor_deviation_offset", self.camera_high_motor_deviation_offset)
|
|
|
if return_data:
|
|
|
- camera_height = return_data.get('value',35)
|
|
|
- self.camera_height = camera_height
|
|
|
+ camera_height = return_data.get('value', 35)
|
|
|
+ self.camera_height = camera_height - self.camera_high_motor_deviation_offset
|
|
|
else:
|
|
|
- self.camera_height = 400
|
|
|
+ self.camera_height = 400 - self.camera_high_motor_deviation_offset
|
|
|
self.msg_type = 'get_device_info'
|
|
|
self.sendSocketMessage(
|
|
|
code=0,
|
|
|
- msg="设置mcu其他配置信息完成",
|
|
|
+ msg="获取其他设备信息",
|
|
|
device_status=2,
|
|
|
- data={"camera_height":self.camera_height}
|
|
|
+ data={"camera_height": self.camera_height, "camera_focal_data": camera_focal_data}
|
|
|
)
|
|
|
self.msg_type = 'mcu'
|
|
|
return self.camera_height
|
|
|
+
|
|
|
# 获取异步数据
|
|
|
def analysis_data(self, _data):
|
|
|
_addr = _data[0] << 8 | _data[1]
|
|
|
if _addr not in self.config_manager.CONFIG_METADATA_BY_ADDR:
|
|
|
return False
|
|
|
start = 2
|
|
|
- _value = _data[start] << 40 | _data[start + 1] << 32 | _data[start + 2] << 24 | _data[start + 3] << 16 | _data[start + 4] << 8 | _data[start + 5]
|
|
|
+ _value = _data[start] << 40 | _data[start + 1] << 32 | _data[start + 2] << 24 | _data[start + 3] << 16 | _data[
|
|
|
+ start + 4] << 8 | _data[start + 5]
|
|
|
|
|
|
start = start + 5
|
|
|
_read_only = True if _data[start + 1] == 1 else False # 是否只读
|
|
|
@@ -211,7 +260,8 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
"value": _value}
|
|
|
return return_data
|
|
|
# 跳过异步,直接查询某个数据信息
|
|
|
- def get_basic_info_mcu_without_async(self, data,fiddler_cmd=0):
|
|
|
+
|
|
|
+ def get_basic_info_mcu_without_async(self, data, fiddler_cmd=0):
|
|
|
"""
|
|
|
fiddler_cmd :只接收指定的命令内容
|
|
|
"""
|
|
|
@@ -223,11 +273,12 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
r_data = self.get_basic_info_mcu()
|
|
|
print("264----------r_data:", r_data)
|
|
|
except BaseException as e:
|
|
|
- print("302---e",e)
|
|
|
+ print("302---e", e)
|
|
|
r_data = []
|
|
|
#
|
|
|
# self.async_lock.release()
|
|
|
return r_data
|
|
|
+
|
|
|
def dynamic_parameter_issuance(self, receive_data):
|
|
|
print("dynamic_parameter_issuance receive_data", receive_data)
|
|
|
func_code, status_code, out_par_data_list = dynamic_parameter_issuance_get(
|
|
|
@@ -322,7 +373,7 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
logger.info("已经初始化过,请勿重复初始化")
|
|
|
self.sendSocketMessage(msg="设备初始化完成", device_status=2)
|
|
|
return False
|
|
|
- self.config_manager = ConfigManager()
|
|
|
+ self.config_manager = ConfigManager(self)
|
|
|
self.serial_ins.clearn_flush()
|
|
|
self.to_init_device_origin_point(device_name="mcu", is_force=is_force)
|
|
|
print("MCU 开始循环~")
|
|
|
@@ -358,38 +409,6 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
self.line_control.connect_state = True
|
|
|
self.line_control.serial_ins = serial_handle
|
|
|
await self.line_control.run()
|
|
|
- # if self.init_state == True:
|
|
|
- # print("已经初始化过,请勿重复初始化")
|
|
|
- # self.sendSocketMessage(msg="设备初始化完成", device_status=2)
|
|
|
- # return False
|
|
|
- # self.serial_ins.clearn_flush()
|
|
|
- # self.to_init_device_origin_point(device_name="mcu", is_force=is_force)
|
|
|
- # print("MCU 开始循环~")
|
|
|
- # while 1:
|
|
|
- # await asyncio.sleep(0.01)
|
|
|
- # if not self.serial_ins or not self.connect_state:
|
|
|
- # break
|
|
|
- # try:
|
|
|
- # # print("mcu send_cmd")
|
|
|
- # self.send_cmd()
|
|
|
- # # time.sleep(0.01)
|
|
|
- # self.get_basic_info_mcu()
|
|
|
- # # self.close_other_window()
|
|
|
- # except BaseException as e:
|
|
|
- # print("121231298908", e)
|
|
|
- # break
|
|
|
-
|
|
|
- # self.is_running = False
|
|
|
- # self.connect_state = False
|
|
|
- # print("MCU 循环退出~")
|
|
|
- # # self.sign_data.emit(
|
|
|
- # # {"_type": "show_info", "plugins_mode": "mcu", "data": "MCU 连接失败"}
|
|
|
- # # )
|
|
|
- # message = {"_type": "show_info", "plugins_mode": "mcu", "data": "MCU 连接失败"}
|
|
|
- # self.sendSocketMessage(
|
|
|
- # code=1, msg="MCU 连接失败", data=message, device_status=-1
|
|
|
- # )
|
|
|
- # self.close_connect()
|
|
|
|
|
|
def stop_mcu(self):
|
|
|
buf = [self.command["stop_mcu"]]
|
|
|
@@ -421,14 +440,14 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
return [0xFF & data >> 24, 0xFF & data >> 16, 0xFF & data >> 8, 0xFF & data]
|
|
|
|
|
|
def open_rgb_led(
|
|
|
- self,
|
|
|
- color_name,
|
|
|
- led_command=1,
|
|
|
- brightness=80,
|
|
|
- enable=True,
|
|
|
- mode="loop",
|
|
|
- times=2,
|
|
|
- interval=0.1,
|
|
|
+ self,
|
|
|
+ color_name,
|
|
|
+ led_command=1,
|
|
|
+ brightness=80,
|
|
|
+ enable=True,
|
|
|
+ mode="loop",
|
|
|
+ times=2,
|
|
|
+ interval=0.1,
|
|
|
):
|
|
|
color_name_value = {
|
|
|
"红色": (156, 6, 3),
|
|
|
@@ -452,8 +471,8 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
)
|
|
|
self.add_send_data_queue(buf)
|
|
|
|
|
|
- async def getDeviationInfo(self):
|
|
|
- await asyncio.sleep(0.01)
|
|
|
+ def getDeviationInfo(self):
|
|
|
+ # await asyncio.sleep(0.01)
|
|
|
try:
|
|
|
# 发送获取偏移量
|
|
|
data = [self.command["get_deviation"], 1]
|
|
|
@@ -506,6 +525,7 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
"翻板舵机高位", # min 0 max 180,步长0.5
|
|
|
"翻板舵机上升速度", # min 1 max 10,步长1
|
|
|
"翻板舵机下降速度", # min 1 max 10,步长1
|
|
|
+ "相机焦段", # min 1 max 10,步长1
|
|
|
]
|
|
|
if action_name not in name_sets:
|
|
|
self.msg_type = f"{type}_deviation"
|
|
|
@@ -580,32 +600,38 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
logger.info(f"设备初始化完成:%{data}")
|
|
|
self.sendSocketMessage(msg=data, device_status=2)
|
|
|
else:
|
|
|
- print("设备异常数据打印:", data)
|
|
|
+ # print("设备异常数据打印:", data)
|
|
|
logger.info(f"115 设备异常数据打印:%{data}")
|
|
|
+ msg_data = {
|
|
|
+ "message": data
|
|
|
+ }
|
|
|
+ self.sendSocketMessage(msg="设备信息打印", data=msg_data, device_status=2,
|
|
|
+ msg_type="print_mcu_error_data")
|
|
|
except BaseException as e:
|
|
|
print("117 error {}".format(e))
|
|
|
logger.info(f"117 error %{e}")
|
|
|
return
|
|
|
+
|
|
|
def print_mcu_noraml_data(self, receive_data):
|
|
|
# 扫码数据
|
|
|
print("接收到255数据:", receive_data)
|
|
|
try:
|
|
|
command_mapping = {
|
|
|
- 1:"设备运动",
|
|
|
- 2:"初始化设备", # 初始化设备
|
|
|
- 3:"处理其他设备", # 处理其他设备
|
|
|
- 29:"获取所有信息", # 获取所有信息
|
|
|
- 40:"设置偏移量", # 设置偏移量
|
|
|
- 41:"读取偏移量", # 读取偏移量
|
|
|
- 91:"信号转发处理", # 信号转发处理
|
|
|
- 92:"信号转发返回", # 信号转发返回
|
|
|
- 44:"获取其他信息", # 获取其他信息
|
|
|
- 43:"RGB灯的处理与通讯", ## RGB灯的处理与通讯
|
|
|
- 45:"设置其他信息", # 设置其他信息
|
|
|
- 47:"查询遥控器电量", # 查询遥控器电量
|
|
|
- 48:"设置转盘通讯方式 1、串口、2、无线、3 混合", #
|
|
|
- 93:"停止运行mcu", # 停止运行mcu
|
|
|
- 90:"连接MCU",# 连接MCU
|
|
|
+ 1: "设备运动",
|
|
|
+ 2: "初始化设备", # 初始化设备
|
|
|
+ 3: "处理其他设备", # 处理其他设备
|
|
|
+ 29: "获取所有信息", # 获取所有信息
|
|
|
+ 40: "设置偏移量", # 设置偏移量
|
|
|
+ 41: "读取偏移量", # 读取偏移量
|
|
|
+ 91: "信号转发处理", # 信号转发处理
|
|
|
+ 92: "信号转发返回", # 信号转发返回
|
|
|
+ 44: "获取其他信息", # 获取其他信息
|
|
|
+ 43: "RGB灯的处理与通讯", ## RGB灯的处理与通讯
|
|
|
+ 45: "设置其他信息", # 设置其他信息
|
|
|
+ 47: "查询遥控器电量", # 查询遥控器电量
|
|
|
+ 48: "设置转盘通讯方式 1、串口、2、无线、3 混合", #
|
|
|
+ 93: "停止运行mcu", # 停止运行mcu
|
|
|
+ 90: "连接MCU", # 连接MCU
|
|
|
}
|
|
|
# command = int(receive_data[0])
|
|
|
command = int(receive_data[1])
|
|
|
@@ -613,11 +639,11 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
# receive_data_temp = receive_data[2:]
|
|
|
receive_data_temp_text = " ".join([hex(x) for x in receive_data])
|
|
|
# print("255 command_text:", command_text)
|
|
|
- if command_text in ["设备运动","处理其他设备"]:
|
|
|
+ if command_text in ["设备运动", "处理其他设备"]:
|
|
|
device_id = int(receive_data[2])
|
|
|
device_value = int(receive_data[3])
|
|
|
device_name_info = self.device_name_dict_mapping[device_id]
|
|
|
- message_info = {"设备名称":device_name_info,"运动值":device_value}
|
|
|
+ message_info = {"设备名称": device_name_info, "运动值": device_value}
|
|
|
print("【设备运动】消息回执:", message_info)
|
|
|
logger.info(f"设备运动消息回执:{message_info}")
|
|
|
print("接收设备消息回执:", command_text)
|
|
|
@@ -626,6 +652,7 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
print(f"255 error {e}")
|
|
|
logger.info(f"255 error {e}")
|
|
|
return
|
|
|
+
|
|
|
def get_from_mcu_move_respond_data(self, receive_data):
|
|
|
self.last_from_mcu_move_respond_data = receive_data
|
|
|
|
|
|
@@ -712,17 +739,13 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
def get_basic_info_mcu(self):
|
|
|
receive_data = self.serial_ins.read_cmd(out_time=1)
|
|
|
if receive_data is False:
|
|
|
- print("------------------------------------------------4657564654")
|
|
|
- print(
|
|
|
- "------------------------------------------------get_basic_info_mcu------------------"
|
|
|
- )
|
|
|
- logger.info("------------------------------------------------4657564654")
|
|
|
+ logger.info("get_basic_info_mcu,------------------------------------------------4657564654")
|
|
|
self.connect_state = False
|
|
|
return False
|
|
|
if not receive_data:
|
|
|
return False
|
|
|
command = receive_data[0]
|
|
|
- print("get_basic_info_mcu",command)
|
|
|
+ print("get_basic_info_mcu", command)
|
|
|
if command in self.deal_code_func_dict:
|
|
|
_data = ' '.join([hex(x) for x in receive_data])
|
|
|
return self.deal_code_func_dict[command](receive_data)
|
|
|
@@ -782,8 +805,8 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
|
|
|
turntable_steering_deviation_dir = receive_data[7]
|
|
|
turntable_steering_deviation = (
|
|
|
- receive_data[8] << 8 | receive_data[9]
|
|
|
- ) * 0.1
|
|
|
+ receive_data[8] << 8 | receive_data[9]
|
|
|
+ ) * 0.1
|
|
|
turntable_steering_deviation = (
|
|
|
turntable_steering_deviation * -1
|
|
|
if turntable_steering_deviation_dir == 0
|
|
|
@@ -808,35 +831,7 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
|
|
|
overturn_steering_up_speed = receive_data[16]
|
|
|
overturn_steering_down_speed = receive_data[17]
|
|
|
-
|
|
|
- # self.sign_data.emit(
|
|
|
- # {
|
|
|
- # "_type": "get_deviation_data",
|
|
|
- # "plugins_mode": "mcu",
|
|
|
- # "data": {
|
|
|
- # "camera_high_motor_deviation": camera_high_motor_deviation,
|
|
|
- # "camera_steering_deviation": camera_steering_deviation,
|
|
|
- # "turntable_steering_deviation": turntable_steering_deviation,
|
|
|
- # "overturn_steering_middle": overturn_steering_middle,
|
|
|
- # "overturn_steering_high": overturn_steering_high,
|
|
|
- # "overturn_steering_up_speed": overturn_steering_up_speed,
|
|
|
- # "overturn_steering_down_speed": overturn_steering_down_speed,
|
|
|
- # },
|
|
|
- # }
|
|
|
- # )
|
|
|
- # message = {
|
|
|
- # "_type": "get_deviation_data",
|
|
|
- # "plugins_mode": "mcu",
|
|
|
- # "data": {
|
|
|
- # "camera_high_motor_deviation": camera_high_motor_deviation,
|
|
|
- # "camera_steering_deviation": camera_steering_deviation,
|
|
|
- # "turntable_steering_deviation": turntable_steering_deviation,
|
|
|
- # "overturn_steering_middle": overturn_steering_middle,
|
|
|
- # "overturn_steering_high": overturn_steering_high,
|
|
|
- # "overturn_steering_up_speed": overturn_steering_up_speed,
|
|
|
- # "overturn_steering_down_speed": overturn_steering_down_speed,
|
|
|
- # },
|
|
|
- # }
|
|
|
+ self.camera_high_motor_deviation_offset = camera_high_motor_deviation
|
|
|
get_deviation_data = {
|
|
|
"camera_high_motor_deviation": camera_high_motor_deviation,
|
|
|
"camera_steering_deviation": camera_steering_deviation,
|
|
|
@@ -851,7 +846,7 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
self.msg_type = "get_deviation_data"
|
|
|
self.sendSocketMessage(msg="接收偏移量信息", data=get_deviation_data)
|
|
|
self.msg_type = "mcu"
|
|
|
- print("接收偏移量信息")
|
|
|
+ print("接收偏移量信息", get_deviation_data)
|
|
|
logger.info("接收偏移量信息")
|
|
|
return
|
|
|
|
|
|
@@ -965,7 +960,7 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
self.msg_type = "mcu"
|
|
|
|
|
|
def get_data_from_receive_data(
|
|
|
- self, receive_data, start, len_data, data_magnification=1
|
|
|
+ self, receive_data, start, len_data, data_magnification=1
|
|
|
):
|
|
|
# data_magnification 数据放大倍数,或缩小倍数,默认为1
|
|
|
try:
|
|
|
@@ -977,10 +972,10 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
return data * data_magnification
|
|
|
elif len_data == 4:
|
|
|
data = (
|
|
|
- receive_data[start] << 24
|
|
|
- | receive_data[start + 1] << 16
|
|
|
- | receive_data[start + 2] << 8
|
|
|
- | receive_data[start + 3]
|
|
|
+ receive_data[start] << 24
|
|
|
+ | receive_data[start + 1] << 16
|
|
|
+ | receive_data[start + 2] << 8
|
|
|
+ | receive_data[start + 3]
|
|
|
)
|
|
|
return data * data_magnification
|
|
|
return None
|
|
|
@@ -1060,13 +1055,13 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
}
|
|
|
# if self.state_camera_motor
|
|
|
if all(
|
|
|
- value == 2
|
|
|
- for value in [
|
|
|
- self.state_camera_motor,
|
|
|
- self.state_camera_steering,
|
|
|
- self.state_turntable_steering,
|
|
|
- self.state_overturn_steering,
|
|
|
- ]
|
|
|
+ value == 2
|
|
|
+ for value in [
|
|
|
+ self.state_camera_motor,
|
|
|
+ self.state_camera_steering,
|
|
|
+ self.state_turntable_steering,
|
|
|
+ self.state_overturn_steering,
|
|
|
+ ]
|
|
|
):
|
|
|
self.init_state = True
|
|
|
self.sendSocketMessage(msg="设备初始化完成", device_status=2)
|
|
|
@@ -1418,21 +1413,21 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
else:
|
|
|
if self.m_t == 1:
|
|
|
if (
|
|
|
- self.state_camera_motor == 2
|
|
|
- and self.state_camera_steering == 2
|
|
|
- and self.state_turntable_steering == 2
|
|
|
- and self.state_overturn_steering == 2
|
|
|
+ self.state_camera_motor == 2
|
|
|
+ and self.state_camera_steering == 2
|
|
|
+ and self.state_turntable_steering == 2
|
|
|
+ and self.state_overturn_steering == 2
|
|
|
):
|
|
|
self._mcu_move_state = 2
|
|
|
else:
|
|
|
self._mcu_move_state = 1
|
|
|
else:
|
|
|
if (
|
|
|
- self.state_camera_motor == 2
|
|
|
- and self.state_camera_steering == 2
|
|
|
- and self.state_turntable_steering == 2
|
|
|
- and self.state_overturn_steering == 2
|
|
|
- and self.state_move_turntable_steering == 2
|
|
|
+ self.state_camera_motor == 2
|
|
|
+ and self.state_camera_steering == 2
|
|
|
+ and self.state_turntable_steering == 2
|
|
|
+ and self.state_overturn_steering == 2
|
|
|
+ and self.state_move_turntable_steering == 2
|
|
|
):
|
|
|
self._mcu_move_state = 2
|
|
|
else:
|
|
|
@@ -1467,16 +1462,16 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
return True
|
|
|
|
|
|
def to_device_move(
|
|
|
- self,
|
|
|
- device_name,
|
|
|
- value=0,
|
|
|
- max_speed=None,
|
|
|
- up_speed=None,
|
|
|
- down_speed=None,
|
|
|
- _is_debug=0,
|
|
|
- is_relative=0,
|
|
|
- is_deviation=1,
|
|
|
- times=2, is_response=False
|
|
|
+ self,
|
|
|
+ device_name,
|
|
|
+ value=0,
|
|
|
+ max_speed=None,
|
|
|
+ up_speed=None,
|
|
|
+ down_speed=None,
|
|
|
+ _is_debug=0,
|
|
|
+ is_relative=0,
|
|
|
+ is_deviation=1,
|
|
|
+ times=2, is_response=False
|
|
|
):
|
|
|
"""
|
|
|
此处输入单位为 毫米,以及度 需要先缩小,再放大
|
|
|
@@ -1513,7 +1508,7 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
else down_speed
|
|
|
)
|
|
|
value = value / 10 # value 单位毫米
|
|
|
- max_camera_hight = self.camera_height/10
|
|
|
+ max_camera_hight = self.camera_height / 10
|
|
|
# print("高度位置",max_camera_hight)
|
|
|
if value > max_camera_hight:
|
|
|
value = max_camera_hight
|
|
|
@@ -1559,6 +1554,13 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
value = value / 10 # value 单位毫米
|
|
|
assert 0 <= value <= 900
|
|
|
assert 0 <= max_speed <= 15000
|
|
|
+ case "camera_zoom_motor":
|
|
|
+ # 相机焦段设置
|
|
|
+ # 精确到0.1焦段
|
|
|
+ max_speed = 500 if max_speed is None else max_speed
|
|
|
+ up_speed = 100 if up_speed is None else up_speed
|
|
|
+ down_speed = 100 if down_speed is None else down_speed
|
|
|
+ assert 0 <= value <= 150
|
|
|
|
|
|
_dir = True if value >= 0 else False
|
|
|
|
|
|
@@ -1702,6 +1704,8 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
await self.smart_shooter.CameraShooter(msg_type="run_mcu")
|
|
|
case "to_deal_device":
|
|
|
self.to_deal_device(device_name, value=value, _type=0, times=1)
|
|
|
+ case "camera_zoom_motor":
|
|
|
+ self.to_deal_device(device_name="camera_zoom_motor")
|
|
|
case _:
|
|
|
pass
|
|
|
|
|
|
@@ -1725,7 +1729,7 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
return False
|
|
|
|
|
|
async def run_mcu_config(
|
|
|
- self, config_list, goods_art_no, action_info, smart_shooter
|
|
|
+ self, config_list, goods_art_no, action_info, smart_shooter
|
|
|
):
|
|
|
if self.checkDevice() == False:
|
|
|
return
|
|
|
@@ -1860,14 +1864,15 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
# await smart_shooter.EnableCameraPreview(
|
|
|
# enable_status=False, msg_type="smart_shooter_enable_preview"
|
|
|
# )
|
|
|
+
|
|
|
async def run_mcu_config_single(
|
|
|
- self,
|
|
|
- config_info,
|
|
|
- goods_art_no,
|
|
|
- msg_type="run_mcu_single_finish",
|
|
|
- image_index=-1,
|
|
|
- smart_shooter=None,
|
|
|
- action_id=-1,
|
|
|
+ self,
|
|
|
+ config_info,
|
|
|
+ goods_art_no,
|
|
|
+ msg_type="run_mcu_single_finish",
|
|
|
+ image_index=-1,
|
|
|
+ smart_shooter=None,
|
|
|
+ action_id=-1,
|
|
|
):
|
|
|
"""独立拍照 仅作测试用"""
|
|
|
await asyncio.sleep(0.01)
|