Forráskód Böngészése

```
feat(smart_shooter): 添加相机列表信息到响应数据并优化配置逻辑

- 在SmartShooter类中添加CameraLists字段到响应数据中
- 修复相机配置循环中的索引越界问题,当超出CameraLists长度时
设置默认iso配置
- 添加调试打印语句以便跟踪相机属性设置和拍照请求

fix(device_control): 优化日志消息格式

- 合并两个日志消息为单行显示,减少日志输出

refactor(smart_shooter): 改进错误处理和异步调用

- 修改setCameraProperty调用以接收返回的状态和消息
- 将getConfigIso调用改为同步方式
- 添加异常处理以捕获具体错误信息
- 增加调试信息输出

fix(message_handler): 修复参数传递和空值检查

- 修正GetCameraInfo方法调用参数,添加is_send参数
- 为PointName获取添加空值检查,避免data为None时出错

refactor(temp): 清理临时文件代码

- 移除注释掉的代码块
- 简化SmartShooter测试代码
```

rambo 2 hete
szülő
commit
32777c3a2a

+ 1 - 2
python/mcu/DeviceControl.py

@@ -1774,8 +1774,7 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
             await program_item.run(3)
             self.msg_type = "mcu"
             logger.info(
-                "发送 run_mcu_signle消息",
-                "{} 执行完成~".format(program_item.action_name),
+                "发送 run_mcu_signle消息,{} 执行完成~".format(program_item.action_name)
             )
             self.sendSocketMessage(
                 code=0,

+ 16 - 7
python/mcu/capture/smart_shooter_class.py

@@ -202,6 +202,7 @@ class SmartShooter(metaclass=SingletonType):
                     "code": 0,
                     "msg": msg_send,
                     "data": msg_result,
+                    "CameraLists":CameraLists,
                     "msg_type": self.msg_type,
                     "device_status": 2,
                 }
@@ -286,6 +287,7 @@ class SmartShooter(metaclass=SingletonType):
                 req["CameraKey"] = CameraKey
             req["CameraPropertyType"] = str(property)
             req["CameraPropertyValue"] = str(value)
+            print("发送设置属性请求", req)
             json_msg = self.__send_tcp_message(socket, req)
             msg_result = json_msg.get("msg_result")
             if not msg_result:
@@ -335,11 +337,14 @@ class SmartShooter(metaclass=SingletonType):
             return None
         points = {"A": {}, "B": {}, "C": {}}
         for idx,item in enumerate(points):
-            if idx > len(CameraLists) -1:
-                break
-            itemSettings = CameraLists[idx]
             low_iso = camera_configs.get("low", 100)
             high_iso = camera_configs.get("high", 6400)
+            if idx > len(CameraLists) -1:
+                points[item] = {
+                    "iso": {"low": low_iso, "high": high_iso},
+                }
+                continue
+            itemSettings = CameraLists[idx]
             points[item] = {**itemSettings, "iso": {"low": low_iso, "high": high_iso}}
         sys_iso_config = {"key": "camera_configs", "value": {"iso_config": points}}
         sys_iso_config: SysConfigParams
@@ -365,18 +370,19 @@ class SmartShooter(metaclass=SingletonType):
             # 等于auto就不设置
             if enable_status == True:
                 if str(high_iso).lower() != "auto":
-                    await self.setCameraProperty(
+                    set_state,set_msg = await self.setCameraProperty(
                         property="ISO", value=str(high_iso), CameraKey=CameraKey
                     )
                 else:
                     print("high_iso 等于auto就不设置")
             if enable_status == False:
                 if str(low_iso).lower() != "auto":
-                    await self.setCameraProperty(
+                    set_state,set_msg = await self.setCameraProperty(
                         property="ISO", value=str(low_iso), CameraKey=CameraKey
                     )
                 else:
                     print("low_iso 等于auto就不设置")
+            print("设置状态", set_state, set_msg)
             socket, context = self.__create_req()
             req = {}
             req["msg_type"] = "Request"
@@ -488,7 +494,7 @@ class SmartShooter(metaclass=SingletonType):
             return False, "请先连接相机"
         socket, context = self.__create_req()
         try:
-            low_iso, high_iso = await self.getConfigIso(CameraKey=CameraKey)
+            low_iso, high_iso = self.getConfigIso(CameraKey=CameraKey)
             print("LOW_ISO", low_iso)
             print("HIGH_ISO", high_iso)
             if str(low_iso).lower() != "auto":
@@ -510,6 +516,7 @@ class SmartShooter(metaclass=SingletonType):
                 req["PhotoOrigin"] = f"{goods_art_no},{id}"
             else:
                 req["PhotoOrigin"] = ""
+            print("发送拍照请求", req)
             json_msg = self.__send_tcp_message(socket, req)
             print("CameraShooter", json_msg)
             msg_result = json_msg.get("msg_result")
@@ -535,6 +542,7 @@ class SmartShooter(metaclass=SingletonType):
             await self.sendMessageSocket(message)
             return True, "拍照成功"
         except zmq.Again:
+            print("拍照超时")
             msg_send = "相机未连接或软件未打开"
             message = {
                 "code": 1,
@@ -545,7 +553,8 @@ class SmartShooter(metaclass=SingletonType):
             }
             await self.sendMessageSocket(message)
             return True, "拍照失败"
-        except:
+        except Exception as e:
+            print("拍照出错",e)
             socket.close()
             context.term()
             msg_send = "相机未连接或软件未打开"

+ 13 - 4
python/sockets/message_handler.py

@@ -427,7 +427,7 @@ async def handlerSend(
             # token
             # env
             loop.create_task(
-                smart_shooter.GetCameraInfo(msg_type="smart_shooter_getinfo"),
+                smart_shooter.GetCameraInfo(msg_type="smart_shooter_getinfo",is_send=True),
                 name="smart_shooter_getinfo",
             )
         case "smart_shooter_enable_preview":
@@ -435,7 +435,10 @@ async def handlerSend(
             启动相机或关闭实时预览
             """
             value = data.get("value", True)
-            PointName = data.get("point_name", "A")
+            if data is None:
+                PointName = "A"
+            else:
+                PointName = data.get("point_name", "A")
             camera_configs = settings.getSysConfigs(
                 "camera_configs",
                 "iso_config",
@@ -455,7 +458,10 @@ async def handlerSend(
             """
             启动相机或关闭实时预览
             """
-            PointName = data.get("point_name", "A")
+            if data is None:
+                PointName = "A"
+            else:
+                PointName = data.get("point_name", "A")
             camera_configs = settings.getSysConfigs(
                 "camera_configs",
                 "iso_config",
@@ -480,7 +486,10 @@ async def handlerSend(
             """
             获取相机信息,是否连接
             """
-            PointName = data.get("point_name", "A")
+            if data is None:
+                PointName = "A"
+            else:
+                PointName = data.get("point_name", "A")
             camera_configs = settings.getSysConfigs(
                 "camera_configs",
                 "iso_config",

+ 6 - 18
python/temp.py

@@ -28,26 +28,14 @@ import zmq, json
 import asyncio, settings
 
 # # ... existing code ...
-# from mcu.capture.smart_shooter_class import SmartShooter
+from mcu.capture.smart_shooter_class import SmartShooter
 
 
-# async def main():
-#     sm = SmartShooter(None)
-#     await sm.GetCameraInfo(CameraKey='Canon Inc.|Canon EOS 650D|12')
+async def main():
+    sm = SmartShooter(None)
+    await sm.GetCameraInfo()
 
 
-# if __name__ == "__main__":
-#     asyncio.run(main())
+if __name__ == "__main__":
+    asyncio.run(main())
 
-camera_configs = settings.getSysConfigs(
-            "camera_configs",
-            "iso_config",
-            None,
-        )
-for idx, item in enumerate(camera_configs):
-    itemConfig = camera_configs[item]
-    if itemConfig == {}:
-        continue
-    ItemCameraKey = itemConfig.get("CameraKey")
-    Itemiso = itemConfig.get("iso")
-    print(ItemCameraKey)