From 4afdbdae62cf89b4822069ab000bc3c8bcb4c6e7 Mon Sep 17 00:00:00 2001 From: jxjajs Date: Mon, 7 Apr 2025 21:31:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9Bug=EF=BC=8C=E6=89=8B?= =?UTF-8?q?=E5=8A=A8=E6=8B=8D=E7=85=A7=E8=BF=87=E7=A8=8B=E4=B8=AD=EF=BC=8C?= =?UTF-8?q?=E6=94=B6=E5=88=B0=E5=85=B3=E6=9C=BA=E6=8C=87=E4=BB=A4=EF=BC=8C?= =?UTF-8?q?=E6=8B=8D=E5=AE=8C=E7=85=A7=E4=B8=8D=E5=85=B3=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PtzController.cpp | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/app/src/main/cpp/PtzController.cpp b/app/src/main/cpp/PtzController.cpp index b013fe7d..17209471 100644 --- a/app/src/main/cpp/PtzController.cpp +++ b/app/src/main/cpp/PtzController.cpp @@ -115,6 +115,7 @@ void PtzController::PtzProc() PTZ_STATE ptz_state; bool hasCmd = false; int i=0; + int closecmd=0; std::shared_ptr powerCtrl; time_t selfTestingStartTime = 0; @@ -243,6 +244,7 @@ void PtzController::PtzProc() } if (state == PTZS_POWER_OFF) { + closecmd = 0; XYLOG(XYLOG_SEVERITY_INFO, "自动关机触发,摄像机本来就处于关机状态!"); // Do Nothing } @@ -255,6 +257,7 @@ void PtzController::PtzProc() break; } powerCtrl.reset(); + closecmd = 0; state = PTZS_POWER_OFF; XYLOG(XYLOG_SEVERITY_INFO, "自动触发关闭云台电源!state=%d", state); } @@ -286,8 +289,15 @@ void PtzController::PtzProc() } if(cmd.photoParams->mPhotoInfo.scheduleTime == 0) { - start_delay_time = time(NULL); - XYLOG(XYLOG_SEVERITY_INFO, "3、收到手动拍照指令,state=%d!", state); + if(1 == closecmd) + { + XYLOG(XYLOG_SEVERITY_INFO, "3、收到手动拍照指令,但同时后续收到关机指令,等待拍完照片再关机。state=%d!", state); + } + else + { + start_delay_time = time(NULL); + XYLOG(XYLOG_SEVERITY_INFO, "3、收到手动拍照指令,state=%d!", state); + } } else XYLOG(XYLOG_SEVERITY_INFO, "2、收到自动拍照指令,state=%d!", state); @@ -363,17 +373,20 @@ void PtzController::PtzProc() { XYLOG(XYLOG_SEVERITY_INFO, "收到手动开机指令,摄像机处于state=%d!", state); } + closecmd = 0; start_delay_time = time(NULL); XYLOG(XYLOG_SEVERITY_INFO, "收到手动打开摄像机指令,刷新关机计时初始值,state=%d", state); break; case CLOSE_TOTAL: if (state == PTZS_POWER_OFF) { + closecmd = 0; XYLOG(XYLOG_SEVERITY_INFO, "收到关机指令,摄像机本来就处于关机状态!"); // Do Nothing } else if(PTZS_PHOTO_SELF_TESTING == state) { + closecmd = 1; XYLOG(XYLOG_SEVERITY_INFO, "在拍照自检过程中收到关机指令,取消延时关机,转到自动关机处理!state=%d", state); } else @@ -384,6 +397,7 @@ void PtzController::PtzProc() if(0 == QueryPtzState(&ptz_state, NOTIFY_PTZ_CLOSE, cmd.serfile, cmd.baud, cmd.addr)) break; } + closecmd = 0; powerCtrl.reset(); state = PTZS_POWER_OFF; XYLOG(XYLOG_SEVERITY_INFO, "关闭云台电源!state=%d", state); @@ -392,6 +406,11 @@ void PtzController::PtzProc() break; default: { + if (state == PTZS_POWER_OFF) + { + XYLOG(XYLOG_SEVERITY_INFO, "收到手动控制摄像机指令,摄像机处于关机状态,无法执行!"); + break; + } start_delay_time = time(NULL); XYLOG(XYLOG_SEVERITY_INFO, "收到手动控制摄像机指令,刷新关机计时初始值,state=%d", state); if(cmd.ts <= photo_move_preset_time)