Browse Source

相机数据更新

rambo 3 months ago
parent
commit
a602706ee7
2 changed files with 41 additions and 3 deletions
  1. 34 0
      python/mcu/capture/smart_shooter_class.py
  2. 7 3
      python/sockets/socket_server.py

+ 34 - 0
python/mcu/capture/smart_shooter_class.py

@@ -211,6 +211,36 @@ class SmartShooter(metaclass=SingletonType):
             context.term()
             return False, "相机未连接或软件未打开"
 
+    async def setCameraProperty(self, property="ISO", value=0):
+        # SetProperty
+        camera_states, _ = await self.GetCameraInfo(is_send=False)
+        if not camera_states:
+            return False, "请先连接相机"
+        try:
+            socket, context = self.__create_req()
+            req = {}
+            req["msg_type"] = "Request"
+            req["msg_id"] = "SetProperty"
+            req["msg_seq_num"] = 0
+            req["CameraSelection"] = "All"
+            req["CameraPropertyType"] = str(property)
+            req["CameraPropertyValue"] = str(value)
+            json_msg = self.__send_tcp_message(socket, req)
+            msg_result = json_msg.get("msg_result")
+            if not msg_result:
+                print(f"{property}设置失败", json_msg)
+                return False, f"{property}设置失败"
+            print(f"{property}设置成功", json_msg)
+            return True, f"{property}设置成功"
+        except zmq.Again:
+            print(f"设置{property}超时,继续监听...")
+        except:
+            self.perview_state = False
+            socket.close()
+            context.term()
+            msg_send = "相机未连接或软件未打开"
+            return False, "相机未连接或软件未打开"
+
     async def EnableCameraPreview(self, enable_status=True, msg_type=""):
         self.msg_type = msg_type
         await self.SetCameraFPS(5)
@@ -221,6 +251,10 @@ class SmartShooter(metaclass=SingletonType):
         if not camera_states:
             return False, "请先连接相机"
         try:
+            if enable_status == True:
+                await self.setCameraProperty(property="ISO", value=100)
+            if enable_status == False:
+                await self.setCameraProperty(property="ISO", value=6400)
             socket, context = self.__create_req()
             req = {}
             req["msg_type"] = "Request"

+ 7 - 3
python/sockets/socket_server.py

@@ -149,10 +149,13 @@ async def MsgCallback(msg):
                 # 更新拍照记录
                 print("PhotoFilename", PhotoFilename, PhotoOrigin)
                 goods_art_no = None
-                if PhotoOrigin != "" and PhotoOrigin != "external":
-                    goods_art_no, id = PhotoOrigin.split(",")
+                try:
+                    if PhotoOrigin != "" and PhotoOrigin not in ["external", "ui"]:
+                        goods_art_no, id = PhotoOrigin.split(",")
                     # 创建任务来处理数据库更新,避免阻塞回调
                     await updateDataRecord(PhotoFilename, id)
+                except Exception as e:
+                    print("拍照更新异常", e)
                 data = conn_manager.jsonMessage(
                     code=0,
                     msg=f"照片获取成功",
@@ -174,7 +177,8 @@ async def MsgCallback(msg):
                 msg_type="smart_shooter_enable_preview",
             )
             await conn_manager.send_personal_message(data, smart_shooter.websocket)
-
+        # case _:
+        #     print("收到未知数据:{}".format(msg))
 
 # @app.on_event("startup")
 # async def startup_event():