|
|
@@ -25,6 +25,8 @@ class SmartShooter(metaclass=SingletonType):
|
|
|
# 实时预览状态
|
|
|
self.perview_state = False
|
|
|
self.callback_listen = None
|
|
|
+ self.listen_init = False
|
|
|
+ self.websocket = None
|
|
|
# loop = asyncio.get_event_loop()
|
|
|
# loop.create_task(
|
|
|
# self.connect_listen(),
|
|
|
@@ -43,9 +45,9 @@ class SmartShooter(metaclass=SingletonType):
|
|
|
context = zmq.Context()
|
|
|
req_socket = context.socket(zmq.REQ)
|
|
|
# 设置发送超时为 5000 毫秒(5 秒)
|
|
|
- req_socket.setsockopt(zmq.RCVTIMEO, 5000)
|
|
|
+ req_socket.setsockopt(zmq.RCVTIMEO, 2000)
|
|
|
# 设置接收超时为 5000 毫秒(5 秒)
|
|
|
- req_socket.setsockopt(zmq.SNDTIMEO, 5000)
|
|
|
+ req_socket.setsockopt(zmq.SNDTIMEO, 2000)
|
|
|
req_socket.setsockopt(zmq.LINGER, 0) # 设置为 0 表示不等待未完成的操作
|
|
|
req_socket.connect(self.SET_REQ)
|
|
|
return req_socket, context
|
|
|
@@ -55,9 +57,9 @@ class SmartShooter(metaclass=SingletonType):
|
|
|
listen_socket = context.socket(zmq.SUB)
|
|
|
listen_socket.setsockopt(zmq.SUBSCRIBE, b"")
|
|
|
# 设置发送超时为 5000 毫秒(5 秒)
|
|
|
- listen_socket.setsockopt(zmq.RCVTIMEO, 5000)
|
|
|
+ listen_socket.setsockopt(zmq.RCVTIMEO, 2000)
|
|
|
# 设置接收超时为 5000 毫秒(5 秒)
|
|
|
- listen_socket.setsockopt(zmq.SNDTIMEO, 5000)
|
|
|
+ listen_socket.setsockopt(zmq.SNDTIMEO, 2000)
|
|
|
listen_socket.setsockopt(zmq.LINGER, 0) # 设置为 0 表示不等待未完成的操作
|
|
|
listen_socket.connect(self.LISTEN_REQ)
|
|
|
return listen_socket, context
|
|
|
@@ -88,7 +90,7 @@ class SmartShooter(metaclass=SingletonType):
|
|
|
"msg_type": self.msg_type,
|
|
|
"device_status": -1,
|
|
|
}
|
|
|
- await self.websocket_manager.broadcast(message)
|
|
|
+ await self.websocket_manager.send_personal_message(message,self.websocket)
|
|
|
return False, msg_send
|
|
|
cameraInfo = json_msg.get("CameraInfo")
|
|
|
if cameraInfo == None or len(cameraInfo) == 0:
|
|
|
@@ -102,7 +104,7 @@ class SmartShooter(metaclass=SingletonType):
|
|
|
"msg_type": self.msg_type,
|
|
|
"device_status": -1,
|
|
|
}
|
|
|
- await self.websocket_manager.broadcast(message)
|
|
|
+ await self.websocket_manager.send_personal_message(message,self.websocket)
|
|
|
return False, "相机未连接"
|
|
|
# 链接的相机
|
|
|
# connect_camera = cameraInfo
|
|
|
@@ -121,7 +123,7 @@ class SmartShooter(metaclass=SingletonType):
|
|
|
"msg_type": self.msg_type,
|
|
|
"device_status": -1,
|
|
|
}
|
|
|
- await self.websocket_manager.broadcast(message)
|
|
|
+ await self.websocket_manager.send_personal_message(message,self.websocket)
|
|
|
return False, msg_send
|
|
|
self.connect_status = True
|
|
|
msg_send = "相机已连接"
|
|
|
@@ -133,7 +135,7 @@ class SmartShooter(metaclass=SingletonType):
|
|
|
"msg_type": self.msg_type,
|
|
|
"device_status": 2,
|
|
|
}
|
|
|
- await self.websocket_manager.broadcast(message)
|
|
|
+ await self.websocket_manager.send_personal_message(message,self.websocket)
|
|
|
return True, "相机已连接"
|
|
|
except:
|
|
|
self.connect_status = False
|
|
|
@@ -148,7 +150,7 @@ class SmartShooter(metaclass=SingletonType):
|
|
|
"msg_type": self.msg_type,
|
|
|
"device_status": -1,
|
|
|
}
|
|
|
- await self.websocket_manager.broadcast(message)
|
|
|
+ await self.websocket_manager.send_personal_message(message,self.websocket)
|
|
|
return False, msg_send
|
|
|
|
|
|
async def EnableCameraPreview(self, enable_status=True, msg_type=""):
|
|
|
@@ -186,7 +188,7 @@ class SmartShooter(metaclass=SingletonType):
|
|
|
"msg_type": self.msg_type,
|
|
|
"device_status": 2,
|
|
|
}
|
|
|
- await self.websocket_manager.broadcast(message)
|
|
|
+ await self.websocket_manager.send_personal_message(message,self.websocket)
|
|
|
return True, "预览启用成功" if enable_status else "预览关闭成功"
|
|
|
except:
|
|
|
self.perview_state = False
|
|
|
@@ -200,7 +202,7 @@ class SmartShooter(metaclass=SingletonType):
|
|
|
"msg_type": self.msg_type,
|
|
|
"device_status": -1,
|
|
|
}
|
|
|
- await self.websocket_manager.broadcast(message)
|
|
|
+ await self.websocket_manager.send_personal_message(message,self.websocket)
|
|
|
return False, "相机未连接或软件未打开"
|
|
|
|
|
|
async def CameraAutofocus(self):
|
|
|
@@ -255,7 +257,7 @@ class SmartShooter(metaclass=SingletonType):
|
|
|
"msg_type": self.msg_type,
|
|
|
"device_status": -1,
|
|
|
}
|
|
|
- await self.websocket_manager.broadcast(message)
|
|
|
+ await self.websocket_manager.send_personal_message(message,self.websocket)
|
|
|
return False, msg_send
|
|
|
msg_send = "拍照成功"
|
|
|
message = {
|
|
|
@@ -265,7 +267,7 @@ class SmartShooter(metaclass=SingletonType):
|
|
|
"msg_type": self.msg_type,
|
|
|
"device_status": 2,
|
|
|
}
|
|
|
- await self.websocket_manager.broadcast(message)
|
|
|
+ await self.websocket_manager.send_personal_message(message,self.websocket)
|
|
|
return True, "拍照成功"
|
|
|
except:
|
|
|
socket.close()
|
|
|
@@ -278,23 +280,24 @@ class SmartShooter(metaclass=SingletonType):
|
|
|
"msg_type": self.msg_type,
|
|
|
"device_status": -1,
|
|
|
}
|
|
|
- await self.websocket_manager.broadcast(message)
|
|
|
+ await self.websocket_manager.send_personal_message(message,self.websocket)
|
|
|
return False, msg_send
|
|
|
|
|
|
async def connect_listen(self):
|
|
|
- if self.connect_status == True:
|
|
|
+ if self.connect_status == True or self.listen_init == True:
|
|
|
return True
|
|
|
# 发起监听
|
|
|
sub_socket, context = self.__create_listen()
|
|
|
- print("构建监听")
|
|
|
+ print("构建监听", self.connect_status)
|
|
|
while True:
|
|
|
+ self.listen_init = True
|
|
|
await asyncio.sleep(0.01)
|
|
|
if self.callback_listen == None:
|
|
|
continue
|
|
|
camera_states, camera_msg = await self.GetCameraInfo(is_send=False)
|
|
|
if not camera_states:
|
|
|
print("相机未连接")
|
|
|
- await asyncio.sleep(5) # 等待相机连接
|
|
|
+ await asyncio.sleep(0.01) # 等待相机连接
|
|
|
continue
|
|
|
if self.stop_listen:
|
|
|
break
|
|
|
@@ -313,6 +316,7 @@ class SmartShooter(metaclass=SingletonType):
|
|
|
self.connect_status = False
|
|
|
print(f"发生错误: {e}")
|
|
|
break
|
|
|
+ self.listen_init = False
|
|
|
sub_socket.close()
|
|
|
context.term()
|
|
|
print("smart shooter连接断开")
|