|
|
@@ -31,7 +31,7 @@ class SmartShooter(BaseClass,metaclass=SingletonType):
|
|
|
# loop.create_task(
|
|
|
# self.connect_listen(),
|
|
|
# name="connect_listen",
|
|
|
- # )
|
|
|
+ # )
|
|
|
|
|
|
def __send_tcp_message(self, socket, msg):
|
|
|
# await asyncio.sleep(0.01)
|
|
|
@@ -64,8 +64,9 @@ class SmartShooter(BaseClass,metaclass=SingletonType):
|
|
|
listen_socket.connect(self.LISTEN_REQ)
|
|
|
return listen_socket, context
|
|
|
|
|
|
- async def GetCameraInfo(self):
|
|
|
+ async def GetCameraInfo(self,is_send=True,msg_type=""):
|
|
|
await asyncio.sleep(0.01)
|
|
|
+ self.msg_type = msg_type
|
|
|
'''
|
|
|
实时获取相机信息,是否连接、软件是否被打开
|
|
|
'''
|
|
|
@@ -82,21 +83,23 @@ class SmartShooter(BaseClass,metaclass=SingletonType):
|
|
|
self.connect_status = False
|
|
|
msg_send = "相机未连接或软件未打开"
|
|
|
# self.websocket_manager
|
|
|
- self.sendSocketMessage(
|
|
|
- code=0,
|
|
|
- msg=msg_send,
|
|
|
- device_status=-1,
|
|
|
- )
|
|
|
+ if is_send:
|
|
|
+ self.sendSocketMessage(
|
|
|
+ code=0,
|
|
|
+ msg=msg_send,
|
|
|
+ device_status=-1,
|
|
|
+ )
|
|
|
return False, msg_send
|
|
|
cameraInfo = json_msg.get("CameraInfo")
|
|
|
if cameraInfo == None or len(cameraInfo) == 0:
|
|
|
self.connect_status = False
|
|
|
msg_send = "相机未连接"
|
|
|
- self.sendSocketMessage(
|
|
|
- code=0,
|
|
|
- msg=msg_send,
|
|
|
- device_status=-1,
|
|
|
- )
|
|
|
+ if is_send:
|
|
|
+ self.sendSocketMessage(
|
|
|
+ code=0,
|
|
|
+ msg=msg_send,
|
|
|
+ device_status=-1,
|
|
|
+ )
|
|
|
return False, "相机未连接"
|
|
|
# 链接的相机
|
|
|
connect_camera = cameraInfo[0]
|
|
|
@@ -104,37 +107,41 @@ class SmartShooter(BaseClass,metaclass=SingletonType):
|
|
|
if CameraStatus != "Ready":
|
|
|
self.connect_status = False
|
|
|
msg_send = "相机未连接"
|
|
|
- self.sendSocketMessage(
|
|
|
- code=0,
|
|
|
- msg=msg_send,
|
|
|
- device_status=-1,
|
|
|
- )
|
|
|
+ if is_send:
|
|
|
+ self.sendSocketMessage(
|
|
|
+ code=0,
|
|
|
+ msg=msg_send,
|
|
|
+ device_status=-1,
|
|
|
+ )
|
|
|
return False, msg_send
|
|
|
self.connect_status = True
|
|
|
msg_send = "相机已连接"
|
|
|
- self.sendSocketMessage(
|
|
|
- code=0,
|
|
|
- msg=msg_send,
|
|
|
- device_status=2,
|
|
|
- )
|
|
|
+ if is_send:
|
|
|
+ self.sendSocketMessage(
|
|
|
+ code=0,
|
|
|
+ msg=msg_send,
|
|
|
+ device_status=2,
|
|
|
+ )
|
|
|
return True, "相机已连接"
|
|
|
except:
|
|
|
self.connect_status = False
|
|
|
socket.close()
|
|
|
context.term()
|
|
|
msg_send = "相机未连接或软件未打开"
|
|
|
- self.sendSocketMessage(
|
|
|
+ if is_send:
|
|
|
+ self.sendSocketMessage(
|
|
|
code=0,
|
|
|
msg=msg_send,
|
|
|
device_status=-1,
|
|
|
)
|
|
|
return False, msg_send
|
|
|
|
|
|
- async def EnableCameraPreview(self,enable_status=True):
|
|
|
+ async def EnableCameraPreview(self, enable_status=True, msg_type=""):
|
|
|
+ self.msg_type = msg_type
|
|
|
"""
|
|
|
激活相机预览
|
|
|
"""
|
|
|
- camera_states,_ = await self.GetCameraInfo()
|
|
|
+ camera_states, _ = await self.GetCameraInfo(is_send=False)
|
|
|
if not camera_states:
|
|
|
return False, "请先连接相机"
|
|
|
try:
|
|
|
@@ -149,19 +156,37 @@ class SmartShooter(BaseClass,metaclass=SingletonType):
|
|
|
msg_result = json_msg.get("msg_result")
|
|
|
if not msg_result:
|
|
|
self.perview_state = False
|
|
|
+ msg_send = "预览启用失败"
|
|
|
+ self.sendSocketMessage(
|
|
|
+ code=0,
|
|
|
+ msg=msg_send,
|
|
|
+ device_status=2,
|
|
|
+ )
|
|
|
return False, "预览启用失败"
|
|
|
+ msg_send = "预览启用成功" if enable_status else "预览关闭成功"
|
|
|
+ self.sendSocketMessage(
|
|
|
+ code=0,
|
|
|
+ msg=msg_send,
|
|
|
+ device_status=2,
|
|
|
+ )
|
|
|
return True, "预览启用成功" if enable_status else "预览关闭成功"
|
|
|
except:
|
|
|
self.perview_state = False
|
|
|
socket.close()
|
|
|
context.term()
|
|
|
+ msg_send = "相机未连接或软件未打开"
|
|
|
+ self.sendSocketMessage(
|
|
|
+ code=0,
|
|
|
+ msg=msg_send,
|
|
|
+ device_status=2,
|
|
|
+ )
|
|
|
return False, "相机未连接或软件未打开"
|
|
|
|
|
|
async def CameraAutofocus(self):
|
|
|
"""
|
|
|
相机自动对焦
|
|
|
"""
|
|
|
- camera_states, _ = await self.GetCameraInfo()
|
|
|
+ camera_states, _ = await self.GetCameraInfo(is_send=False)
|
|
|
if not camera_states:
|
|
|
return False, "请先连接相机"
|
|
|
try:
|
|
|
@@ -182,11 +207,12 @@ class SmartShooter(BaseClass,metaclass=SingletonType):
|
|
|
context.term()
|
|
|
return False, "相机未连接或软件未打开"
|
|
|
|
|
|
- async def CameraShooter(self):
|
|
|
+ async def CameraShooter(self, msg_type=""):
|
|
|
+ self.msg_type = msg_type
|
|
|
"""
|
|
|
执行拍照
|
|
|
"""
|
|
|
- camera_states, _ = await self.GetCameraInfo()
|
|
|
+ camera_states, _ = await self.GetCameraInfo(is_send=False)
|
|
|
if not camera_states:
|
|
|
return False, "请先连接相机"
|
|
|
try:
|
|
|
@@ -199,14 +225,34 @@ class SmartShooter(BaseClass,metaclass=SingletonType):
|
|
|
json_msg = self.__send_tcp_message(socket, req)
|
|
|
msg_result = json_msg.get("msg_result")
|
|
|
if not msg_result:
|
|
|
- return False, "拍照失败"
|
|
|
+ msg_send = "拍照失败"
|
|
|
+ self.sendSocketMessage(
|
|
|
+ code=0,
|
|
|
+ msg=msg_send,
|
|
|
+ device_status=2,
|
|
|
+ )
|
|
|
+ return False, msg_send
|
|
|
+ msg_send = "拍照成功"
|
|
|
+ self.sendSocketMessage(
|
|
|
+ code=0,
|
|
|
+ msg=msg_send,
|
|
|
+ device_status=2,
|
|
|
+ )
|
|
|
return True, "拍照成功"
|
|
|
except:
|
|
|
socket.close()
|
|
|
context.term()
|
|
|
- return False, "相机未连接或软件未打开"
|
|
|
+ msg_send = "相机未连接或软件未打开"
|
|
|
+ self.sendSocketMessage(
|
|
|
+ code=0,
|
|
|
+ msg=msg_send,
|
|
|
+ device_status=2,
|
|
|
+ )
|
|
|
+ return False, msg_send
|
|
|
|
|
|
async def connect_listen(self):
|
|
|
+ if self.connect_status == True:
|
|
|
+ return True
|
|
|
# 发起监听
|
|
|
sub_socket, context = self.__create_listen()
|
|
|
print("构建监听")
|
|
|
@@ -214,7 +260,7 @@ class SmartShooter(BaseClass,metaclass=SingletonType):
|
|
|
await asyncio.sleep(0.01)
|
|
|
if self.callback_listen == None:
|
|
|
continue
|
|
|
- camera_states, camera_msg = await self.GetCameraInfo()
|
|
|
+ camera_states, camera_msg = await self.GetCameraInfo(is_send=False)
|
|
|
if not camera_states:
|
|
|
print("相机未连接")
|
|
|
await asyncio.sleep(5) # 等待相机连接
|
|
|
@@ -228,7 +274,7 @@ class SmartShooter(BaseClass,metaclass=SingletonType):
|
|
|
json_msg = json.loads(str_msg)
|
|
|
if json_msg["msg_id"] == "NetworkPing":
|
|
|
continue
|
|
|
- self.callback_listen(json_msg)
|
|
|
+ await self.callback_listen(json_msg)
|
|
|
except zmq.Again:
|
|
|
print("接收超时,继续监听...")
|
|
|
continue
|