Browse Source

fix(camera): 修复多相机模式下的设备移动控制问题

- 修改 electron/api/camera.js 中的消息监听事件名称,从 smart_shooter_enable_preview
  改为 smart_shooter_enable_preview_status
- 在 electron/controller/camera.js 中为 liveShow 和 liveHide 方法添加 return 语句
- 在前端页面中添加调试日志输出用于预览开关状态监控
- 修复摄影检查页面中 is_move_device 参数传递逻辑,移除默认值 1
- 在编辑组件中为多相机模式添加表单字段禁用功能
- 为多相机模式添加特定参数 point_name 和 is_move_device 的条件传递逻辑
panqiuyao 1 day ago
parent
commit
4280b40567

+ 6 - 4
electron/api/camera.js

@@ -75,9 +75,10 @@ module.exports = {
           point_name: point_name
         }
       }))
+      console.log('smart_shooter_enable_preview1111111111')
       return  new Promise(async (resolve, reject) => {
-        pySocket.onSocketMessage('smart_shooter_enable_preview',(message)=>{
-
+        pySocket.onSocketMessage('smart_shooter_enable_preview_status',(message)=>{
+          console.log('smart_shooter_enable_preview_status'+message)
           resolve(message)
         })
       })
@@ -97,9 +98,10 @@ module.exports = {
           point_name: point_name
         }
       }))
+      console.log('smart_shooter_enable_preview2222')
       return  new Promise(async (resolve, reject) => {
-        pySocket.onSocketMessage('smart_shooter_enable_preview',(message)=>{
-
+        pySocket.onSocketMessage('smart_shooter_enable_preview_status',(message)=>{
+          console.log('smart_shooter_enable_preview_status'+message)
           resolve(message)
         })
       })

+ 2 - 2
electron/controller/camera.js

@@ -140,7 +140,7 @@ class CameraController extends Controller {
       const point_name = data?.point_name || 'A';
 
       Log.info('liveShow:打开预览'+point_name);
-      await liveShowApi(point_name);
+      return await liveShowApi(point_name);
       if(readConfigFile().controlType === 'digiCamControl'){
         await  CMD('All_Minimize')
       }
@@ -158,7 +158,7 @@ class CameraController extends Controller {
     try {
       const point_name = data?.point_name || 'A';
       Log.info('liveShow:关闭'+point_name);
-      await liveHideApi(point_name);
+      return  await liveHideApi(point_name);
       return { success: true, point_name };
     } catch (error) {
       throw error;

+ 5 - 1
frontend/src/views/Photography/check.vue

@@ -219,6 +219,8 @@ function showVideo(point_name = 'A') {
 
   clientStore.ipc.send(icpList.camera.PreviewShow, { point_name });
   clientStore.ipc.on(icpList.camera.PreviewShow, async (event, result) => {
+    console.log('打开预览=====================')
+    console.log(result)
     clearPreviewInterval()
     hideVideoTimer = setTimeout(() => {
       interval = setInterval(() => {
@@ -238,6 +240,8 @@ async function hideVideo(point_name = 'A') {
     clientStore.ipc.removeAllListeners(icpList.camera.PreviewHide);
     clientStore.ipc.send(icpList.camera.PreviewHide, { point_name });
     clientStore.ipc.on(icpList.camera.PreviewHide, async (event, result) => {
+      console.log('关闭预览回调=====================')
+      console.log(result)
       isHidingVideo.value = false
       // 如果有待执行的打开请求,执行它
       if (pendingShowVideoPoint) {
@@ -301,7 +305,7 @@ function takePictures() {
           pre_delay:0,
           after_delay:0,
           point_name:editData.value.editRowData.point_name || currentPointName.value  || 'A',
-          is_move_device:editData.value.editRowData.is_move_device || 1
+          is_move_device:editData.value.editRowData.is_move_device
         }
       });
     })

+ 14 - 11
frontend/src/views/Photography/components/editRow.vue

@@ -35,33 +35,33 @@
           <el-radio :label="0">不拍照</el-radio>
         </el-radio-group>
       </el-form-item>
-      <el-form-item label="相机高度(mm)">
-        <el-input v-model="editRowData.camera_height" @change="changeNum('camera_high_motor',0, 350)" :min="0" :max="350" :step="1"  style="width: 170px;" type="number">
+      <el-form-item label="相机高度(mm)" :class="{'is-disabled': isMultiCameraMode && editRowData.is_move_device === 0}">
+        <el-input v-model="editRowData.camera_height" @change="changeNum('camera_high_motor',0, 350)" :min="0" :max="350" :step="1"  style="width: 170px;" type="number" :disabled="isMultiCameraMode && editRowData.is_move_device === 0">
         </el-input>
         <div class="error-msg">最小0,最大350</div>
       </el-form-item>
-      <el-form-item label="相机倾角">
-        <el-input v-model="editRowData.camera_angle" :min="-5" :max="30" :step=".1" @change="changeNum('camera_steering',-5, 30)" style="width: 170px;" type="number">
+      <el-form-item label="相机倾角" :class="{'is-disabled': isMultiCameraMode && editRowData.is_move_device === 0}">
+        <el-input v-model="editRowData.camera_angle" :min="-5" :max="30" :step=".1" @change="changeNum('camera_steering',-5, 30)" style="width: 170px;" type="number" :disabled="isMultiCameraMode && editRowData.is_move_device === 0">
         </el-input>
         <div class="error-msg">最小-5,最大30</div>
       </el-form-item>
-      <el-form-item label="转盘前后位置">
-        <el-input v-model="editRowData.turntable_position" @change="changeNum('turntable_position_motor',0, 800)" :min="0" :max="800" :step="1"  style="width: 170px;" type="number">
+      <el-form-item label="转盘前后位置" :class="{'is-disabled': isMultiCameraMode && editRowData.is_move_device === 0}">
+        <el-input v-model="editRowData.turntable_position" @change="changeNum('turntable_position_motor',0, 800)" :min="0" :max="800" :step="1"  style="width: 170px;" type="number" :disabled="isMultiCameraMode && editRowData.is_move_device === 0">
         </el-input>
         <div class="error-msg">最小0,最大800</div>
       </el-form-item>
-      <el-form-item label="转盘角度">
-        <el-input v-model="editRowData.turntable_angle" @change="changeNum('turntable_steering',-720, 720)" :min="-720" :max="720" :step="1"  style="width: 170px;" type="number">
+      <el-form-item label="转盘角度" :class="{'is-disabled': isMultiCameraMode && editRowData.is_move_device === 0}">
+        <el-input v-model="editRowData.turntable_angle" @change="changeNum('turntable_steering',-720, 720)" :min="-720" :max="720" :step="1"  style="width: 170px;" type="number" :disabled="isMultiCameraMode && editRowData.is_move_device === 0">
         </el-input>
         <div class="error-msg">最小-720,最大720</div>
       </el-form-item>
-      <el-form-item label="鞋子翻转">
+      <el-form-item label="鞋子翻转" :class="{'is-disabled': isMultiCameraMode && editRowData.is_move_device === 0}">
         <div class="flex-row">
-          <el-radio-group v-model="editRowData.shoe_upturn">
+          <el-radio-group v-model="editRowData.shoe_upturn" :disabled="isMultiCameraMode && editRowData.is_move_device === 0">
             <el-radio :label="1">翻转</el-radio>
             <el-radio :label="0">不翻转</el-radio>
           </el-radio-group>
-          <a class="cursor-pointer" @click="changeNum('overturn_steering')" v-log="{ describe: { action: '点击测试翻转' } }">测试翻转</a>
+          <a class="cursor-pointer" @click="changeNum('overturn_steering')" v-log="{ describe: { action: '点击测试翻转' } }" v-if="!isMultiCameraMode || editRowData.is_move_device !== 0">测试翻转</a>
         </div>
       </el-form-item>
       <el-form-item label="LED灯光开光" @change="changeNum('laser_position')">
@@ -256,6 +256,9 @@ function testShoesFlip(){
         take_picture:false,
         pre_delay:0,
         after_delay:0,
+        // 多相机模式参数
+        point_name: isMultiCameraMode.value ? (editRowData.value.point_name || 'A') : undefined,
+        is_move_device: isMultiCameraMode.value ? editRowData.value.is_move_device : undefined,
       }
     });
    // captureLoading.value = true;