|
|
@@ -45,9 +45,9 @@ class SmartShooter(metaclass=SingletonType):
|
|
|
context = zmq.Context()
|
|
|
req_socket = context.socket(zmq.REQ)
|
|
|
# 设置发送超时为 5000 毫秒(5 秒)
|
|
|
- req_socket.setsockopt(zmq.RCVTIMEO, 2000)
|
|
|
+ req_socket.setsockopt(zmq.RCVTIMEO, 4000)
|
|
|
# 设置接收超时为 5000 毫秒(5 秒)
|
|
|
- req_socket.setsockopt(zmq.SNDTIMEO, 2000)
|
|
|
+ req_socket.setsockopt(zmq.SNDTIMEO, 4000)
|
|
|
req_socket.setsockopt(zmq.LINGER, 0) # 设置为 0 表示不等待未完成的操作
|
|
|
req_socket.connect(self.SET_REQ)
|
|
|
return req_socket, context
|
|
|
@@ -57,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, 2000)
|
|
|
+ listen_socket.setsockopt(zmq.RCVTIMEO, 4000)
|
|
|
# 设置接收超时为 5000 毫秒(5 秒)
|
|
|
- listen_socket.setsockopt(zmq.SNDTIMEO, 2000)
|
|
|
+ listen_socket.setsockopt(zmq.SNDTIMEO, 4000)
|
|
|
listen_socket.setsockopt(zmq.LINGER, 0) # 设置为 0 表示不等待未完成的操作
|
|
|
listen_socket.connect(self.LISTEN_REQ)
|
|
|
return listen_socket, context
|
|
|
@@ -68,8 +68,8 @@ class SmartShooter(metaclass=SingletonType):
|
|
|
await asyncio.sleep(0.01)
|
|
|
self.msg_type = msg_type
|
|
|
"""
|
|
|
- 实时获取相机信息,是否连接、软件是否被打开
|
|
|
- """
|
|
|
+ 实时获取相机信息,是否连接、软件是否被打开
|
|
|
+ """
|
|
|
try:
|
|
|
socket, context = self.__create_req()
|
|
|
req = {}
|
|
|
@@ -84,15 +84,15 @@ class SmartShooter(metaclass=SingletonType):
|
|
|
msg_send = "相机未连接或软件未打开"
|
|
|
if is_send:
|
|
|
message = {
|
|
|
- "code": 1,
|
|
|
- "msg": msg_send,
|
|
|
- "data": None,
|
|
|
- "msg_type": self.msg_type,
|
|
|
- "device_status": -1,
|
|
|
- }
|
|
|
+ "code": 1,
|
|
|
+ "msg": msg_send,
|
|
|
+ "data": msg_result,
|
|
|
+ "msg_type": self.msg_type,
|
|
|
+ "device_status": -1,
|
|
|
+ }
|
|
|
await self.websocket_manager.send_personal_message(
|
|
|
- message, self.websocket
|
|
|
- )
|
|
|
+ message, self.websocket
|
|
|
+ )
|
|
|
return False, msg_send
|
|
|
cameraInfo = json_msg.get("CameraInfo")
|
|
|
if cameraInfo == None or len(cameraInfo) == 0:
|
|
|
@@ -100,52 +100,55 @@ class SmartShooter(metaclass=SingletonType):
|
|
|
msg_send = "相机未连接"
|
|
|
if is_send:
|
|
|
message = {
|
|
|
- "code": 1,
|
|
|
- "msg": msg_send,
|
|
|
- "data": None,
|
|
|
- "msg_type": self.msg_type,
|
|
|
- "device_status": -1,
|
|
|
- }
|
|
|
+ "code": 1,
|
|
|
+ "msg": msg_send,
|
|
|
+ "data": msg_result,
|
|
|
+ "msg_type": self.msg_type,
|
|
|
+ "device_status": -1,
|
|
|
+ }
|
|
|
await self.websocket_manager.send_personal_message(
|
|
|
- message, self.websocket
|
|
|
- )
|
|
|
+ message, self.websocket
|
|
|
+ )
|
|
|
return False, "相机未连接"
|
|
|
# 链接的相机
|
|
|
# connect_camera = cameraInfo
|
|
|
CameraStatus = any(
|
|
|
- item.get("CameraStatus") in ["Ready", "Busy"] for item in cameraInfo
|
|
|
- )
|
|
|
+ item.get("CameraStatus") in ["Ready", "Busy"] for item in cameraInfo
|
|
|
+ )
|
|
|
# CameraStatus = connect_camera.get("CameraStatus")
|
|
|
if not CameraStatus:
|
|
|
self.connect_status = False
|
|
|
msg_send = "相机未连接"
|
|
|
if is_send:
|
|
|
message = {
|
|
|
- "code": 1,
|
|
|
- "msg": msg_send,
|
|
|
- "data": None,
|
|
|
- "msg_type": self.msg_type,
|
|
|
- "device_status": -1,
|
|
|
- }
|
|
|
+ "code": 1,
|
|
|
+ "msg": msg_send,
|
|
|
+ "data": msg_result,
|
|
|
+ "msg_type": self.msg_type,
|
|
|
+ "device_status": -1,
|
|
|
+ }
|
|
|
await self.websocket_manager.send_personal_message(
|
|
|
- message, self.websocket
|
|
|
- )
|
|
|
+ message, self.websocket
|
|
|
+ )
|
|
|
return False, msg_send
|
|
|
self.connect_status = True
|
|
|
msg_send = "相机已连接"
|
|
|
if is_send:
|
|
|
message = {
|
|
|
- "code": 0,
|
|
|
- "msg": msg_send,
|
|
|
- "data": None,
|
|
|
- "msg_type": self.msg_type,
|
|
|
- "device_status": 2,
|
|
|
- }
|
|
|
+ "code": 0,
|
|
|
+ "msg": msg_send,
|
|
|
+ "data": msg_result,
|
|
|
+ "msg_type": self.msg_type,
|
|
|
+ "device_status": 2,
|
|
|
+ }
|
|
|
await self.websocket_manager.send_personal_message(
|
|
|
- message, self.websocket
|
|
|
- )
|
|
|
+ message, self.websocket
|
|
|
+ )
|
|
|
return True, "相机已连接"
|
|
|
- except:
|
|
|
+ except zmq.Again:
|
|
|
+ print("获取相机信息超时,继续监听...")
|
|
|
+ except Exception as e:
|
|
|
+ print("拍照异常",e)
|
|
|
self.connect_status = False
|
|
|
socket.close()
|
|
|
context.term()
|
|
|
@@ -200,6 +203,8 @@ class SmartShooter(metaclass=SingletonType):
|
|
|
}
|
|
|
await self.websocket_manager.send_personal_message(message, self.websocket)
|
|
|
return True, "预览启用成功" if enable_status else "预览关闭成功"
|
|
|
+ except zmq.Again:
|
|
|
+ print("启动预览超时,继续监听...")
|
|
|
except:
|
|
|
self.perview_state = False
|
|
|
socket.close()
|
|
|
@@ -220,6 +225,7 @@ class SmartShooter(metaclass=SingletonType):
|
|
|
相机自动对焦
|
|
|
"""
|
|
|
camera_states, _ = await self.GetCameraInfo(is_send=False)
|
|
|
+ print("CameraAutofocus 执行对焦")
|
|
|
if not camera_states:
|
|
|
return False, "请先连接相机"
|
|
|
try:
|
|
|
@@ -235,19 +241,26 @@ class SmartShooter(metaclass=SingletonType):
|
|
|
if not msg_result:
|
|
|
return False, "对焦失败"
|
|
|
return True, "对焦成功"
|
|
|
+ except zmq.Again:
|
|
|
+ print("对焦超时,继续监听...")
|
|
|
except:
|
|
|
socket.close()
|
|
|
context.term()
|
|
|
return False, "相机未连接或软件未打开"
|
|
|
|
|
|
- async def CameraShooter(self, msg_type="", goods_art_no="", id=0):
|
|
|
+ async def CameraShooter(self, msg_type="", goods_art_no="", id=0,is_af=False):
|
|
|
+ # 对焦混用
|
|
|
+ if is_af:
|
|
|
+ await self.CameraAutofocus()
|
|
|
self.msg_type = msg_type
|
|
|
+ print("camera_states", msg_type)
|
|
|
"""
|
|
|
执行拍照
|
|
|
"""
|
|
|
- camera_states, _ = await self.GetCameraInfo(is_send=False)
|
|
|
- if not camera_states:
|
|
|
- return False, "请先连接相机"
|
|
|
+ # camera_states, _ = await self.GetCameraInfo(is_send=False)
|
|
|
+ # print("camera_states CameraShooter", camera_states)
|
|
|
+ # if not camera_states:
|
|
|
+ # return False, "请先连接相机"
|
|
|
try:
|
|
|
socket, context = self.__create_req()
|
|
|
req = {}
|
|
|
@@ -286,6 +299,8 @@ class SmartShooter(metaclass=SingletonType):
|
|
|
}
|
|
|
await self.websocket_manager.send_personal_message(message, self.websocket)
|
|
|
return True, "拍照成功"
|
|
|
+ except zmq.Again:
|
|
|
+ print("拍照超时,继续监听...")
|
|
|
except:
|
|
|
socket.close()
|
|
|
context.term()
|