Bläddra i källkod

Merge branch 'dev-smartshooter5' into smart-shooter-merge

rambo 4 månader sedan
förälder
incheckning
ac4d233485
2 ändrade filer med 32 tillägg och 2 borttagningar
  1. 29 0
      python/mcu/capture/smart_shooter_class.py
  2. 3 2
      python/sockets/connect_manager.py

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

@@ -22,6 +22,7 @@ class SmartShooter(metaclass=SingletonType):
         self.stop_listen = False
         # 相机连接状态
         self.connect_status = False
+        # self.preview_queue = asyncio.Queue()
         # 实时预览状态
         self.perview_state = False
         self.callback_listen = None
@@ -179,8 +180,36 @@ class SmartShooter(metaclass=SingletonType):
                 )
             return False, msg_send
 
+    async def SetCameraFPS(self, fps=5):
+        """
+        激活相机预览
+        """
+        camera_states, _ = 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"] = "LiveviewFPS"
+            req["msg_seq_num"] = 0
+            req["CameraSelection"] = "All"
+            req["CameraLiveviewFPS"] = fps
+            json_msg = self.__send_tcp_message(socket, req)
+            msg_result = json_msg.get("msg_result")
+            if not msg_result:
+                self.perview_state = False
+                return False, "设置失败"
+            return True, "设置失败"
+        except:
+            self.perview_state = False
+            socket.close()
+            context.term()
+            return False, "相机未连接或软件未打开"
+
     async def EnableCameraPreview(self, enable_status=True, msg_type=""):
         self.msg_type = msg_type
+        await self.SetCameraFPS(5)
         """
         激活相机预览
         """

+ 3 - 2
python/sockets/connect_manager.py

@@ -1,6 +1,6 @@
 from models import WebSocket
 from logger import logger
-import json
+import json, asyncio
 from starlette.websockets import WebSocketState
 class ConnectionManager:
     is_connected = False
@@ -26,7 +26,8 @@ class ConnectionManager:
 
     async def send_personal_message(self, message: str, websocket: WebSocket):
         '''向用户发送消息'''
-        await websocket.send_json(message)
+        # await websocket.send_json(message)
+        asyncio.create_task(websocket.send_json(message))
 
     async def broadcast(self, message: str):
         """广播消息"""