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)