|
@@ -122,8 +122,23 @@ class SmartShooter(metaclass=SingletonType):
|
|
|
context.term()
|
|
context.term()
|
|
|
msg_send = "相机未连接或软件未打开"
|
|
msg_send = "相机未连接或软件未打开"
|
|
|
return False, msg_send
|
|
return False, msg_send
|
|
|
|
|
+ def get_iso_range(self,camera_info):
|
|
|
|
|
+ """
|
|
|
|
|
+ 从相机数据中获取 ISO 的可调范围
|
|
|
|
|
+ :param camera_data: 相机状态数据列表 (即你提供的那个长列表)
|
|
|
|
|
+ :return: ISO 范围列表,如果未找到则返回 None
|
|
|
|
|
+ """
|
|
|
|
|
+
|
|
|
|
|
+ # 获取属性信息列表
|
|
|
|
|
+ property_info_list = camera_info.get('CameraPropertyInfo', [])
|
|
|
|
|
+
|
|
|
|
|
+ for prop in property_info_list:
|
|
|
|
|
+ # 查找 CameraPropertyType 等于 'ISO' 的项
|
|
|
|
|
+ if prop.get('CameraPropertyType') == 'ISO':
|
|
|
|
|
+ return prop.get('CameraPropertyRange')
|
|
|
|
|
|
|
|
- async def GetCameraInfo(self, is_send=True, msg_type="", CameraKey=None):
|
|
|
|
|
|
|
+ return None
|
|
|
|
|
+ async def GetCameraInfo(self, is_send=True, msg_type="", CameraKey=None,isMultCameraMode=False):
|
|
|
await asyncio.sleep(0.001)
|
|
await asyncio.sleep(0.001)
|
|
|
# self.msg_type = msg_type
|
|
# self.msg_type = msg_type
|
|
|
"""
|
|
"""
|
|
@@ -177,12 +192,14 @@ class SmartShooter(metaclass=SingletonType):
|
|
|
CameraStatus = any(
|
|
CameraStatus = any(
|
|
|
item.get("CameraStatus") in ["Ready", "Busy"] for item in cameraInfo
|
|
item.get("CameraStatus") in ["Ready", "Busy"] for item in cameraInfo
|
|
|
)
|
|
)
|
|
|
|
|
+ # 在这里处理
|
|
|
CameraLists = [
|
|
CameraLists = [
|
|
|
{
|
|
{
|
|
|
"CameraSelection": item.get("CameraSelection"),
|
|
"CameraSelection": item.get("CameraSelection"),
|
|
|
"CameraKey": item.get("CameraKey"),
|
|
"CameraKey": item.get("CameraKey"),
|
|
|
"CameraName": item.get("CameraName"),
|
|
"CameraName": item.get("CameraName"),
|
|
|
"CameraStatus": item.get("CameraStatus") in ["Ready", "Busy"],
|
|
"CameraStatus": item.get("CameraStatus") in ["Ready", "Busy"],
|
|
|
|
|
+ "CameraISO": self.get_iso_range(item),
|
|
|
}
|
|
}
|
|
|
for item in cameraInfo
|
|
for item in cameraInfo
|
|
|
]
|
|
]
|
|
@@ -218,7 +235,9 @@ class SmartShooter(metaclass=SingletonType):
|
|
|
}
|
|
}
|
|
|
await self.sendMessageSocket(message)
|
|
await self.sendMessageSocket(message)
|
|
|
# print("相机已连接状态信息---->", cameraInfo)
|
|
# print("相机已连接状态信息---->", cameraInfo)
|
|
|
- self.initConfigIsoSettings(CameraLists=CameraLists)
|
|
|
|
|
|
|
+ self.initConfigIsoSettings(
|
|
|
|
|
+ CameraLists=CameraLists, isMultCameraMode=isMultCameraMode
|
|
|
|
|
+ )
|
|
|
return True, "相机已连接"
|
|
return True, "相机已连接"
|
|
|
except zmq.Again:
|
|
except zmq.Again:
|
|
|
print("获取相机信息超时,继续监听...")
|
|
print("获取相机信息超时,继续监听...")
|
|
@@ -337,7 +356,7 @@ class SmartShooter(metaclass=SingletonType):
|
|
|
high_iso = Itemiso.get("high", 6400)
|
|
high_iso = Itemiso.get("high", 6400)
|
|
|
return low_iso, high_iso
|
|
return low_iso, high_iso
|
|
|
|
|
|
|
|
- def initConfigIsoSettings(self, CameraLists=[]):
|
|
|
|
|
|
|
+ def initConfigIsoSettings(self, CameraLists=[],isMultCameraMode=False):
|
|
|
if not CameraLists:
|
|
if not CameraLists:
|
|
|
return None
|
|
return None
|
|
|
"""获取ISO配置信息"""
|
|
"""获取ISO配置信息"""
|
|
@@ -347,10 +366,24 @@ class SmartShooter(metaclass=SingletonType):
|
|
|
None,
|
|
None,
|
|
|
)
|
|
)
|
|
|
temp_A_point = camera_configs.get("A", None)
|
|
temp_A_point = camera_configs.get("A", None)
|
|
|
|
|
+ points = {"A": {}, "B": {}, "C": {}}
|
|
|
if temp_A_point is not None:
|
|
if temp_A_point is not None:
|
|
|
print("已配置无需更新")
|
|
print("已配置无需更新")
|
|
|
|
|
+ basic_iso = temp_A_point.get("iso", {"low": 100, "high": 6400})
|
|
|
|
|
+ if isMultCameraMode == False:
|
|
|
|
|
+ # 如果客户是单相机版本用户,需要每次同步camera信息
|
|
|
|
|
+ itemSettings = CameraLists[0]
|
|
|
|
|
+ points["A"] = {
|
|
|
|
|
+ **itemSettings,
|
|
|
|
|
+ "iso": basic_iso,
|
|
|
|
|
+ }
|
|
|
|
|
+ sys_iso_config = {"key": "camera_configs", "value": {"iso_config": points}}
|
|
|
|
|
+ sys_iso_config: SysConfigParams
|
|
|
|
|
+ print("单相机用户同步相机配置", sys_iso_config)
|
|
|
|
|
+ settings.updateSysConfigs(params=sys_iso_config)
|
|
|
|
|
+ # 同步本地到线上
|
|
|
|
|
+ settings.sync_sys_configs2Online()
|
|
|
return None
|
|
return None
|
|
|
- points = {"A": {}, "B": {}, "C": {}}
|
|
|
|
|
for idx,item in enumerate(points):
|
|
for idx,item in enumerate(points):
|
|
|
low_iso = camera_configs.get("low", 100)
|
|
low_iso = camera_configs.get("low", 100)
|
|
|
high_iso = camera_configs.get("high", 6400)
|
|
high_iso = camera_configs.get("high", 6400)
|