|
|
@ -115,7 +115,6 @@ void PtzController::PtzProc()
|
|
|
|
PTZ_STATE ptz_state;
|
|
|
|
PTZ_STATE ptz_state;
|
|
|
|
bool hasCmd = false;
|
|
|
|
bool hasCmd = false;
|
|
|
|
int i=0;
|
|
|
|
int i=0;
|
|
|
|
char buffer[512];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
std::shared_ptr<PowerControl> powerCtrl;
|
|
|
|
std::shared_ptr<PowerControl> powerCtrl;
|
|
|
|
time_t selfTestingStartTime = 0;
|
|
|
|
time_t selfTestingStartTime = 0;
|
|
|
@ -170,7 +169,7 @@ void PtzController::PtzProc()
|
|
|
|
selfTestingStartTime = time(NULL);
|
|
|
|
selfTestingStartTime = time(NULL);
|
|
|
|
if (timeout >= selfTestingWaitTime)
|
|
|
|
if (timeout >= selfTestingWaitTime)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "超时(%d秒)未收到云台自检结束应答,状态改为空闲!", timeout);
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "超时(%u秒)未收到云台自检结束应答,状态改为空闲!", (uint32_t)timeout);
|
|
|
|
state = PTZS_IDLE;
|
|
|
|
state = PTZS_IDLE;
|
|
|
|
m_sem.release();
|
|
|
|
m_sem.release();
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
@ -184,7 +183,7 @@ void PtzController::PtzProc()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if(0 == ptz_state.ptz_status)
|
|
|
|
if(0 == ptz_state.ptz_status)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "收到云台自检结束应答,状态改为空闲!timeout=%d秒", timeout);
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "收到云台自检结束应答,状态改为空闲!timeout=%u秒", (uint32_t)timeout);
|
|
|
|
state = PTZS_IDLE;
|
|
|
|
state = PTZS_IDLE;
|
|
|
|
m_sem.release();
|
|
|
|
m_sem.release();
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
@ -208,7 +207,7 @@ void PtzController::PtzProc()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(time(NULL) - start_delay_time >= close_delay_time)
|
|
|
|
if(time(NULL) - start_delay_time >= close_delay_time)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "摄像机空闲时间超过%d秒!关闭摄像机!", close_delay_time);
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "摄像机空闲时间超过%u秒!关闭摄像机!", (uint32_t)close_delay_time);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -261,10 +260,7 @@ void PtzController::PtzProc()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(cmd.photoParams->mPhotoInfo.scheduleTime == 0)
|
|
|
|
if(cmd.photoParams->mPhotoInfo.scheduleTime == 0)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
start_delay_time = time(NULL);
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "3、收到手动拍照指令,state=%d!%s", state);
|
|
|
|
memset(buffer, 0, sizeof(buffer));
|
|
|
|
|
|
|
|
strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", localtime(&start_delay_time));
|
|
|
|
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "3、收到手动拍照指令,state=%d!%s", state, buffer);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "2、收到自动拍照指令,state=%d!", state);
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "2、收到自动拍照指令,state=%d!", state);
|
|
|
@ -276,20 +272,20 @@ void PtzController::PtzProc()
|
|
|
|
|
|
|
|
|
|
|
|
PTZ_preset_start_time = time(NULL);
|
|
|
|
PTZ_preset_start_time = time(NULL);
|
|
|
|
PTZ_preset_wait_time = MOVE_PRESET_WAIT_TIME;
|
|
|
|
PTZ_preset_wait_time = MOVE_PRESET_WAIT_TIME;
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "摄像机拍照前开始调用预置点%d!state=%d", cmd.preset, state);
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "摄像机拍照前开始调用预置点%u!state=%d", (uint32_t)cmd.preset, state);
|
|
|
|
for(;;)
|
|
|
|
for(;;)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if(0 == QueryPtzState(&ptz_state, QUERY_PTZ_STATE, cmd.serfile, cmd.baud, cmd.addr))
|
|
|
|
if(0 == QueryPtzState(&ptz_state, QUERY_PTZ_STATE, cmd.serfile, cmd.baud, cmd.addr))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if(0 == ptz_state.ptz_status)
|
|
|
|
if(0 == ptz_state.ptz_status)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "摄像机拍照前调用预置点%d,收到移动结束应答!移动时长=%d秒 state=%d", cmd.preset, time(NULL)-PTZ_preset_start_time, state);
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "摄像机拍照前调用预置点%u,收到移动结束应答!移动时长=%d秒 state=%d", (uint32_t)cmd.preset, (uint32_t)(time(NULL)-PTZ_preset_start_time), state);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(time(NULL) - PTZ_preset_start_time >= PTZ_preset_wait_time)
|
|
|
|
if(time(NULL) - PTZ_preset_start_time >= PTZ_preset_wait_time)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "摄像机拍照前调用预置点%d,摄像机在%d秒内未收到调用预置点结束应答!state=%d", cmd.preset, PTZ_preset_wait_time, state);
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "摄像机拍照前调用预置点%u,摄像机在%u秒内未收到调用预置点结束应答!state=%d", (uint32_t)cmd.preset, (uint32_t)PTZ_preset_wait_time, state);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(10));
|
|
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(10));
|
|
|
@ -311,7 +307,7 @@ void PtzController::PtzProc()
|
|
|
|
selfTestingWaitTime = 150;
|
|
|
|
selfTestingWaitTime = 150;
|
|
|
|
state = PTZS_PHOTO_SELF_TESTING;
|
|
|
|
state = PTZS_PHOTO_SELF_TESTING;
|
|
|
|
m_sem.release();
|
|
|
|
m_sem.release();
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "收到拍照指令开机,摄像机从关机状态改为自检状态!设置的自检等待时间%d秒", selfTestingWaitTime);
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "收到拍照指令开机,摄像机从关机状态改为自检状态!设置的自检等待时间%u秒", (uint32_t)selfTestingWaitTime);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
@ -329,17 +325,14 @@ void PtzController::PtzProc()
|
|
|
|
selfTestingWaitTime = 150;
|
|
|
|
selfTestingWaitTime = 150;
|
|
|
|
state = PTZS_SELF_TESTING;
|
|
|
|
state = PTZS_SELF_TESTING;
|
|
|
|
m_sem.release();
|
|
|
|
m_sem.release();
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "收到手动开机指令,摄像机从关机状态改为自检状态!设置的自检等待时间%d秒", selfTestingWaitTime);
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "收到手动开机指令,摄像机从关机状态改为自检状态!设置的自检等待时间%u秒", (uint32_t)selfTestingWaitTime);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "收到手动开机指令,摄像机处于state=%d!", state);
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "收到手动开机指令,摄像机处于state=%d!", state);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
start_delay_time = time(NULL);
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "收到手动打开摄像机指令,刷新关机计时初始值,state=%d", state);
|
|
|
|
memset(buffer, 0, sizeof(buffer));
|
|
|
|
|
|
|
|
strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", localtime(&start_delay_time));
|
|
|
|
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "收到手动打开摄像机指令,刷新关机计时初始值,state=%d!%s", state, buffer);
|
|
|
|
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case CLOSE_TOTAL:
|
|
|
|
case CLOSE_TOTAL:
|
|
|
|
if (state == PTZS_POWER_OFF)
|
|
|
|
if (state == PTZS_POWER_OFF)
|
|
|
@ -367,13 +360,10 @@ void PtzController::PtzProc()
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
default:
|
|
|
|
{
|
|
|
|
{
|
|
|
|
start_delay_time = time(NULL);
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "收到手动控制摄像机指令,刷新关机计时初始值,state=%d", state);
|
|
|
|
memset(buffer, 0, sizeof(buffer));
|
|
|
|
|
|
|
|
strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", localtime(&start_delay_time));
|
|
|
|
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "收到手动控制摄像机指令,刷新关机计时初始值,state=%d!%s", state, buffer);
|
|
|
|
|
|
|
|
if(cmd.ts <= photo_move_preset_time)
|
|
|
|
if(cmd.ts <= photo_move_preset_time)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "丢弃拍照调预置点期间收到的控制云台指令,指令时间%ld, 拍照时间%ld!state=%d", cmd.ts, photo_move_preset_time, state);
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "丢弃拍照调预置点期间收到的控制云台指令,指令时间" FMT_TIME_T ",拍照时间" FMT_TIME_T "!state=%d", cmd.ts, photo_move_preset_time, state);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
CameraPhotoCmd(cmd.ts, cmd.channel, cmd.cmdidx, 0, cmd.preset, cmd.serfile, cmd.baud, cmd.addr);
|
|
|
|
CameraPhotoCmd(cmd.ts, cmd.channel, cmd.cmdidx, 0, cmd.preset, cmd.serfile, cmd.baud, cmd.addr);
|
|
|
|