|
|
@@ -9,6 +9,7 @@ const {
|
|
|
const { readConfigFile } = require('../utils/config');
|
|
|
|
|
|
let isOPen = true
|
|
|
+let isSoftwareStarted = false; // 标记相机控制软件是否已经启动
|
|
|
class CameraController extends Controller {
|
|
|
constructor(ctx) {
|
|
|
super(ctx);
|
|
|
@@ -19,41 +20,75 @@ class CameraController extends Controller {
|
|
|
console.log('==================');
|
|
|
console.log(readConfigFile());
|
|
|
if(readConfigFile().controlType === 'digiCamControl'){
|
|
|
-
|
|
|
console.log('========1==========');
|
|
|
- await getParams('iso').catch(e=>{
|
|
|
+
|
|
|
+ // 首先尝试获取相机参数
|
|
|
+ let res = await getParams('iso').catch(e=>{
|
|
|
+ console.log('getParams failed:', e);
|
|
|
isOPen = false;
|
|
|
- })
|
|
|
- if(!isOPen){
|
|
|
- await checkCameraControlCmdExists()
|
|
|
- await CMD('All_Minimize')
|
|
|
- await closeCameraControlTips()
|
|
|
- isOPen = true
|
|
|
- }
|
|
|
- const res = await getParams('iso')
|
|
|
- if(res === '未将对象引用设置到对象的实例。'){
|
|
|
- return {
|
|
|
- status:-1,
|
|
|
- msg:"相机未连接,请链接相机。",
|
|
|
+ return null;
|
|
|
+ });
|
|
|
+
|
|
|
+ if(res === '未将对象引用设置到对象的实例。' || !res){
|
|
|
+ // 相机未连接,检查是否需要启动软件
|
|
|
+ if (!isSoftwareStarted) {
|
|
|
+ console.log('启动 digiCamControl 软件...');
|
|
|
+ await checkCameraControlCmdExists();
|
|
|
+ await CMD('All_Minimize');
|
|
|
+ await closeCameraControlTips();
|
|
|
+ isSoftwareStarted = true;
|
|
|
+ console.log('digiCamControl 软件启动完成,等待初始化...');
|
|
|
+ await new Promise(resolve => setTimeout(resolve, 5000)); // 等待软件初始化
|
|
|
+
|
|
|
+ // 软件启动后再次检查相机状态
|
|
|
+ res = await getParams('iso').catch(e=>{
|
|
|
+ console.log('软件启动后检查相机失败:', e);
|
|
|
+ return null;
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果仍然失败,返回错误
|
|
|
+ if(res === '未将对象引用设置到对象的实例。' || !res) {
|
|
|
+ return {
|
|
|
+ status:-1,
|
|
|
+ msg: isSoftwareStarted ? "相机硬件未连接,请检查相机连接。" : "相机控制软件启动失败。",
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
return {
|
|
|
status:2,
|
|
|
msg:res,
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
}else{
|
|
|
+ // SmartShooter 逻辑
|
|
|
let res = await checkCamera().catch(e=>{
|
|
|
+ Log.info('checkCamera:'+e);
|
|
|
isOPen = false;
|
|
|
})
|
|
|
|
|
|
if(res?.device_status === -1 ){
|
|
|
- isOPen = false;
|
|
|
- await checkCameraControlCmdExists()
|
|
|
- isOPen = true
|
|
|
- await new Promise(resolve => setTimeout(resolve, 10000)); // 等待5秒
|
|
|
- res = await checkCamera()
|
|
|
+ // 相机未连接,检查是否需要启动软件
|
|
|
+ if (!isSoftwareStarted) {
|
|
|
+ Log.info('启动 SmartShooter 软件...');
|
|
|
+ await checkCameraControlCmdExists();
|
|
|
+ isSoftwareStarted = true;
|
|
|
+ Log.info('SmartShooter 软件启动完成,等待初始化...');
|
|
|
+ await new Promise(resolve => setTimeout(resolve, 10000)); // 等待软件初始化
|
|
|
+
|
|
|
+ // 软件启动后再次检查相机状态
|
|
|
+ res = await checkCamera().catch(e=>{
|
|
|
+ Log.info('软件启动后检查相机失败:'+e);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ // 无论是否启动了软件,如果相机还是未连接,返回相应状态
|
|
|
+ if (res?.device_status === -1) {
|
|
|
+ return {
|
|
|
+ status: -1,
|
|
|
+ msg: isSoftwareStarted ? "相机硬件未连接,请检查相机连接。" : "相机控制软件启动失败。",
|
|
|
+ };
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if(res?.device_status === 2){
|
|
|
@@ -64,20 +99,17 @@ class CameraController extends Controller {
|
|
|
};
|
|
|
}
|
|
|
|
|
|
-
|
|
|
return {
|
|
|
status:-1,
|
|
|
msg:"相机未连接,请链接相机。",
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
|
|
|
|
|
|
} catch (error) {
|
|
|
|
|
|
- let msg = '请安装digiCamControl软件,并打开digiCamControl软件的web服务,端口为5513'
|
|
|
- if(readConfigFile().controlType === 'SmartShooter') msg = '请安装SmartShooter5软件'
|
|
|
+ let msg = '请安装SmartShooter5软件'
|
|
|
+ if(readConfigFile().controlType === 'digiCamControl') msg = '请安装digiCamControl软件,并打开digiCamControl软件的web服务,端口为5513'
|
|
|
return {
|
|
|
status:-1,
|
|
|
msg,
|