1525 lines
48 KiB
C
1525 lines
48 KiB
C
|
#include "ptz_header_file.h"
|
|||
|
#include "service_statusmonitor.h"
|
|||
|
#include "agent_hyt.h"
|
|||
|
#include "service_selfcheck.h"
|
|||
|
|
|||
|
|
|||
|
extern void ptz_uart_dev_send(device_handle device, void *data, int len);
|
|||
|
|
|||
|
static char max_temperature_fault;
|
|||
|
//<2F>¶ȡ<C2B6><C8A1><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD><CFBC><EFBFBD>
|
|||
|
static char ptz_temp_volt_current_fault_detect_task()
|
|||
|
{//ֻ<><D6BB><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
|
|||
|
static unsigned short int time_ms;
|
|||
|
|
|||
|
time_ms ++;
|
|||
|
if(time_ms < 1000)
|
|||
|
{
|
|||
|
return 1;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
time_ms = 0;
|
|||
|
}
|
|||
|
|
|||
|
//һ<><D2BB><EFBFBD>¶ȹ<C2B6><C8B9>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD>ڹ<EFBFBD><DAB9>ϻش<CFBB>
|
|||
|
if(g_ptz.temperature > PTZ_TEMP_DETECT_MAX || g_ptz.temperature < PTZ_TEMP_DETECT_MIN )
|
|||
|
{
|
|||
|
g_ptz.fault_detect.temperature_fault = FAULT;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
g_ptz.fault_detect.temperature_fault = NO_FAULT;
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>¶ȹ<C2B6><C8B9>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD>ܿ<EFBFBD><DCBF>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD><C2B6><EFBFBD>ֵ10<31><30><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(g_ptz.temperature > (PTZ_TEMP_DETECT_MAX + 10.0) || g_ptz.temperature < (PTZ_TEMP_DETECT_MIN - 10.0) )
|
|||
|
{
|
|||
|
max_temperature_fault = FAULT;
|
|||
|
ptz_hori_stop(PTZ_HORI_STOP_TIME);
|
|||
|
ptz_vert_stop(PTZ_VERT_STOP_TIME);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
max_temperature_fault = NO_FAULT;
|
|||
|
}
|
|||
|
|
|||
|
if(g_ptz.Voltage >= PTZ_VOLT_DETECT_MAX )//|| g_ptz.Voltage <= PTZ_VOLT_DETECT_MIN //<2F><>ֹ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>ϻش<CFBB>
|
|||
|
{
|
|||
|
g_ptz.fault_detect.voltage_fault = FAULT;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
g_ptz.fault_detect.voltage_fault = NO_FAULT;
|
|||
|
}
|
|||
|
|
|||
|
if(g_ptz.electric_current >= PTZ_CURRENT_DETECT)
|
|||
|
{
|
|||
|
g_ptz.fault_detect.electric_current_fault = FAULT;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
|
|||
|
|
|||
|
ptz_hori_stop(PTZ_HORI_STOP_TIME);
|
|||
|
ptz_vert_stop(PTZ_VERT_STOP_TIME);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
g_ptz.fault_detect.electric_current_fault = NO_FAULT;
|
|||
|
}
|
|||
|
return 1;
|
|||
|
}
|
|||
|
|
|||
|
#ifdef PTZ_PHOTOELECTRIC_SWITCH
|
|||
|
static char ptz_vert_sw12_fault_detect_task()//ˮƽ<CBAE><C6BD><EFBFBD>翪<EFBFBD>ع<EFBFBD><D8B9>ϼ<EFBFBD><CFBC><EFBFBD>
|
|||
|
{//<2F><><EFBFBD><EFBFBD>ֹͣ<CDA3><D6B9>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD>
|
|||
|
static unsigned char num;
|
|||
|
if(g_ptz.vert_ps_sw1_state == PS_COVER && g_ptz.vert_ps_sw2_state == PS_COVER)//<2F><><EFBFBD><EFBFBD>SW1<57><31>SW2ͬʱ<CDAC><CAB1><EFBFBD>ڵ<EFBFBD>
|
|||
|
{
|
|||
|
num ++;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
num = 0;
|
|||
|
g_ptz.fault_detect.vert_sw1_fault = NO_FAULT;
|
|||
|
g_ptz.fault_detect.vert_sw2_fault = NO_FAULT;
|
|||
|
}
|
|||
|
|
|||
|
if(num >= 200)//<2F><>ֹnum<75><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
num = 100;
|
|||
|
}
|
|||
|
|
|||
|
if(num >= 50)
|
|||
|
{
|
|||
|
g_ptz.fault_detect.vert_sw1_fault = FAULT;
|
|||
|
g_ptz.fault_detect.vert_sw2_fault = FAULT;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
if(g_ptz.fault_detect.vert_sw1_fault == FAULT || g_ptz.fault_detect.vert_sw2_fault == FAULT)
|
|||
|
{
|
|||
|
if(g_ptz.vert_start_stop_set == PTZ_VERT_START)
|
|||
|
{
|
|||
|
ptz_vert_stop(0);
|
|||
|
}
|
|||
|
}
|
|||
|
return 0;
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
#ifdef PTZ_BLDC_MOTOR
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD><CFBC><EFBFBD>
|
|||
|
static void ptz_motor_hall_fault_detect_task()
|
|||
|
{
|
|||
|
static unsigned char time_count;
|
|||
|
|
|||
|
|
|||
|
static unsigned short int time_ms;
|
|||
|
|
|||
|
time_ms ++;
|
|||
|
if(time_ms < 1000)
|
|||
|
{
|
|||
|
return;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
time_ms = 0;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
time_count ++;
|
|||
|
if(time_count >= 5)
|
|||
|
{
|
|||
|
if(abs(g_ptz.hori_l6235d.l6235d_hall_h1_count - g_ptz.hori_l6235d.l6235d_hall_h2_count) >= PTZ_HALL_DETECT
|
|||
|
||abs(g_ptz.hori_l6235d.l6235d_hall_h1_count - g_ptz.hori_l6235d.l6235d_hall_h3_count) >= PTZ_HALL_DETECT
|
|||
|
||abs(g_ptz.hori_l6235d.l6235d_hall_h2_count - g_ptz.hori_l6235d.l6235d_hall_h3_count) >= PTZ_HALL_DETECT)
|
|||
|
{
|
|||
|
g_ptz.fault_detect.hori_hall_fault = FAULT;
|
|||
|
ptz_hori_stop(0);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
g_ptz.fault_detect.hori_hall_fault = NO_FAULT;
|
|||
|
}
|
|||
|
|
|||
|
if(abs(g_ptz.vert_l6235d.l6235d_hall_h1_count - g_ptz.vert_l6235d.l6235d_hall_h2_count) >= PTZ_HALL_DETECT
|
|||
|
||abs(g_ptz.vert_l6235d.l6235d_hall_h1_count - g_ptz.vert_l6235d.l6235d_hall_h3_count) >= PTZ_HALL_DETECT
|
|||
|
||abs(g_ptz.vert_l6235d.l6235d_hall_h2_count - g_ptz.vert_l6235d.l6235d_hall_h3_count) >= PTZ_HALL_DETECT)
|
|||
|
{
|
|||
|
g_ptz.fault_detect.vert_hall_fault = FAULT;
|
|||
|
ptz_vert_stop(0);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
g_ptz.fault_detect.vert_hall_fault = NO_FAULT;
|
|||
|
}
|
|||
|
|
|||
|
// g_ptz.hori_l6235d.l6235d_hall_h1_count = 0;
|
|||
|
// g_ptz.hori_l6235d.l6235d_hall_h2_count = 0;
|
|||
|
// g_ptz.hori_l6235d.l6235d_hall_h3_count = 0;
|
|||
|
// //g_ptz.hori_l6235d.l6235d_hall_h123_count = 0;
|
|||
|
//
|
|||
|
// g_ptz.vert_l6235d.l6235d_hall_h1_count = 0;
|
|||
|
// g_ptz.vert_l6235d.l6235d_hall_h2_count = 0;
|
|||
|
// g_ptz.vert_l6235d.l6235d_hall_h3_count = 0;
|
|||
|
// //g_ptz.vert_l6235d.l6235d_hall_h123_count = 0;
|
|||
|
|
|||
|
time_count = 0;
|
|||
|
}
|
|||
|
//<2F><>ֹ<EFBFBD><D6B9><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(g_ptz.hori_l6235d.l6235d_hall_h1_count >= UNSIGNED_INT_MAX_VALUE)
|
|||
|
{
|
|||
|
g_ptz.hori_l6235d.l6235d_hall_h1_count = 0;
|
|||
|
}
|
|||
|
if(g_ptz.hori_l6235d.l6235d_hall_h2_count >= UNSIGNED_INT_MAX_VALUE)
|
|||
|
{
|
|||
|
g_ptz.hori_l6235d.l6235d_hall_h2_count = 0;
|
|||
|
}
|
|||
|
if(g_ptz.hori_l6235d.l6235d_hall_h3_count >= UNSIGNED_INT_MAX_VALUE)
|
|||
|
{
|
|||
|
g_ptz.hori_l6235d.l6235d_hall_h3_count = 0;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
if(g_ptz.vert_l6235d.l6235d_hall_h1_count >= UNSIGNED_INT_MAX_VALUE)
|
|||
|
{
|
|||
|
g_ptz.vert_l6235d.l6235d_hall_h1_count = 0;
|
|||
|
}
|
|||
|
if(g_ptz.vert_l6235d.l6235d_hall_h2_count >= UNSIGNED_INT_MAX_VALUE)
|
|||
|
{
|
|||
|
g_ptz.vert_l6235d.l6235d_hall_h2_count = 0;
|
|||
|
}
|
|||
|
if(g_ptz.vert_l6235d.l6235d_hall_h3_count >= UNSIGNED_INT_MAX_VALUE)
|
|||
|
{
|
|||
|
g_ptz.vert_l6235d.l6235d_hall_h3_count = 0;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD><CFBC><EFBFBD>
|
|||
|
static char ptz_motor_rotate_fault_detect_task()
|
|||
|
{
|
|||
|
static char hori_rotate_fault_num;
|
|||
|
static char vert_rotate_fault_num;
|
|||
|
|
|||
|
static char hori_rotate_fault_step;
|
|||
|
static float hori_angle_a;
|
|||
|
static float hori_angle_b;
|
|||
|
|
|||
|
static char vert_rotate_fault_step;
|
|||
|
static float vert_angle_a;
|
|||
|
static float vert_angle_b;
|
|||
|
static unsigned short int time_ms;
|
|||
|
|
|||
|
time_ms ++;
|
|||
|
//<2F><>ֱ
|
|||
|
if(g_ptz.vert_start_stop_set == PTZ_VERT_STOP)
|
|||
|
{
|
|||
|
vert_rotate_fault_step = 0;//<2F>ر<EFBFBD><D8B1>ж<EFBFBD>
|
|||
|
vert_rotate_fault_num = 0;
|
|||
|
}
|
|||
|
//ˮƽ
|
|||
|
if(g_ptz.hori_start_stop_set == PTZ_HORI_STOP)
|
|||
|
{
|
|||
|
hori_rotate_fault_step = 0;//<2F>ر<EFBFBD><D8B1>ж<EFBFBD>
|
|||
|
hori_rotate_fault_num = 0;
|
|||
|
}
|
|||
|
|
|||
|
if(time_ms < 1000)
|
|||
|
{
|
|||
|
return 1;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
time_ms = 0;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
//<2F><>ֱ
|
|||
|
switch(vert_rotate_fault_step)
|
|||
|
{
|
|||
|
case 0:
|
|||
|
if(g_ptz.vert_start_stop_set == PTZ_VERT_START)
|
|||
|
{
|
|||
|
vert_rotate_fault_num = 0;
|
|||
|
vert_angle_a = g_ptz.vert_as5047d.as5047d_ptz_angle_actual;
|
|||
|
vert_rotate_fault_step = vert_rotate_fault_step + 1; //<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case 1://<2F><>ʼ<EFBFBD>ж<EFBFBD><D0B6><EFBFBD>̨ת<CCA8><D7AA><EFBFBD>Ƿ<EFBFBD><C7B7>쳣
|
|||
|
vert_angle_b = g_ptz.vert_as5047d.as5047d_ptz_angle_actual;
|
|||
|
if(g_ptz.vert_direction_actual == PTZ_VERT_DIR_UP)
|
|||
|
{
|
|||
|
//ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(vert_angle_b > vert_angle_a &&
|
|||
|
vert_angle_b - vert_angle_a >= PTZ_VERT_MIN_SPEED * PTZ_VERT_BIG_GEAR_RATIO * 2)
|
|||
|
{//ֻ<><D6BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
vert_rotate_fault_num = 0;
|
|||
|
//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>û<EFBFBD>й<EFBFBD><D0B9><EFBFBD>
|
|||
|
g_ptz.fault_detect.vert_rotate_fault = NO_FAULT;
|
|||
|
}
|
|||
|
else//ת<><D7AA><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
if(g_ptz.vert_pid.PidUT_float >= PTZ_VERT_VOLTAGE_LEVEL)
|
|||
|
{
|
|||
|
vert_rotate_fault_num ++;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
else//g_ptz.vert_direction_actual == PTZ_VERT_DIR_DOWN
|
|||
|
{
|
|||
|
//ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(vert_angle_a > vert_angle_b &&
|
|||
|
vert_angle_a - vert_angle_b >= PTZ_VERT_MIN_SPEED * PTZ_VERT_BIG_GEAR_RATIO * 2)
|
|||
|
{//ֻ<><D6BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
vert_rotate_fault_num = 0;
|
|||
|
//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>û<EFBFBD>й<EFBFBD><D0B9><EFBFBD>
|
|||
|
g_ptz.fault_detect.vert_rotate_fault = NO_FAULT;
|
|||
|
}
|
|||
|
else//ת<><D7AA><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
if(g_ptz.vert_pid.PidUT_float >= PTZ_VERT_VOLTAGE_LEVEL)
|
|||
|
{
|
|||
|
vert_rotate_fault_num ++;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if(vert_rotate_fault_num >= ROTATE_FAULT_MAX_NUM)//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>쳣
|
|||
|
{
|
|||
|
vert_rotate_fault_num = 0;
|
|||
|
//<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>Զ<EFBFBD>ɨ<EFBFBD><C9A8>ģʽ
|
|||
|
g_preset_bit_scan.state = PRESET_BIT_SCAN_CLOSE_A;
|
|||
|
g_area_scan.state = AREA_SCAN_CLOSE_A;
|
|||
|
//<2F><>ֱ̨<CCA8><D6B1>ɲ<EFBFBD><C9B2>
|
|||
|
ptz_hori_stop(0);
|
|||
|
ptz_vert_stop(0);
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
g_ptz.fault_detect.vert_rotate_fault = FAULT;
|
|||
|
}
|
|||
|
|
|||
|
vert_angle_a = vert_angle_b;
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
/*************************************************************/
|
|||
|
|
|||
|
switch(hori_rotate_fault_step)
|
|||
|
{
|
|||
|
case 0:
|
|||
|
if(g_ptz.hori_start_stop_set == PTZ_HORI_START)
|
|||
|
{
|
|||
|
hori_rotate_fault_num = 0;
|
|||
|
hori_angle_a = g_ptz.hori_as5047d.as5047d_ptz_angle_actual;
|
|||
|
hori_rotate_fault_step = hori_rotate_fault_step + 1; //<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case 1://<2F><>ʼ<EFBFBD>ж<EFBFBD><D0B6><EFBFBD>̨ת<CCA8><D7AA><EFBFBD>Ƿ<EFBFBD><C7B7>쳣
|
|||
|
hori_angle_b = g_ptz.hori_as5047d.as5047d_ptz_angle_actual;
|
|||
|
|
|||
|
if(g_ptz.hori_self_check == PTZ_HORI_SELF_CHECK_END)
|
|||
|
{//<2F><><EFBFBD><EFBFBD>ˮƽ<CBAE>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>
|
|||
|
if(g_ptz.hori_direction_actual == PTZ_HORI_DIR_RIGHT)
|
|||
|
{
|
|||
|
//ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if((hori_angle_b > hori_angle_a && //ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>ٶ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0.5<EFBFBD><EFBFBD>,ҪС<D2AA><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32>
|
|||
|
hori_angle_b - hori_angle_a > PTZ_HORI_MIN_SPEED * PTZ_HORI_BIG_GEAR_RATIO * 2 &&
|
|||
|
hori_angle_b - hori_angle_a < PTZ_HORI_MAX_SPEED * PTZ_HORI_BIG_GEAR_RATIO * 12)
|
|||
|
||
|
|||
|
(hori_angle_a > hori_angle_b &&
|
|||
|
hori_angle_b + g_ptz.hori_as5047d.as5047d_ptz_angle_max - hori_angle_a > PTZ_HORI_MIN_SPEED * PTZ_HORI_BIG_GEAR_RATIO * 2 &&
|
|||
|
hori_angle_b + g_ptz.hori_as5047d.as5047d_ptz_angle_max - hori_angle_a < PTZ_HORI_MAX_SPEED * PTZ_HORI_BIG_GEAR_RATIO * 12) )
|
|||
|
{//ֻ<><D6BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
hori_rotate_fault_num = 0;
|
|||
|
//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>û<EFBFBD>й<EFBFBD><D0B9><EFBFBD>
|
|||
|
g_ptz.fault_detect.hori_rotate_fault = NO_FAULT;
|
|||
|
}
|
|||
|
else//ת<><D7AA><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
if(g_ptz.hori_pid.PidUT_float >= PTZ_HORI_VOLTAGE_LEVEL)
|
|||
|
{
|
|||
|
hori_rotate_fault_num ++;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
else//g_ptz.hori_direction_actual == PTZ_HORI_DIR_LEFT
|
|||
|
{
|
|||
|
//ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if((hori_angle_b < hori_angle_a && //ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>ٶ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0.5<EFBFBD><EFBFBD>,ҪС<D2AA><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32>
|
|||
|
hori_angle_a - hori_angle_b > PTZ_HORI_MIN_SPEED * PTZ_HORI_BIG_GEAR_RATIO * 2 &&
|
|||
|
hori_angle_a - hori_angle_b < PTZ_HORI_MAX_SPEED * PTZ_HORI_BIG_GEAR_RATIO * 12)
|
|||
|
||
|
|||
|
(hori_angle_a < hori_angle_b &&
|
|||
|
hori_angle_a + g_ptz.hori_as5047d.as5047d_ptz_angle_max - hori_angle_b > PTZ_HORI_MIN_SPEED * PTZ_HORI_BIG_GEAR_RATIO * 2 &&
|
|||
|
hori_angle_a + g_ptz.hori_as5047d.as5047d_ptz_angle_max - hori_angle_b < PTZ_HORI_MAX_SPEED * PTZ_HORI_BIG_GEAR_RATIO * 12) )
|
|||
|
{//ֻ<><D6BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
hori_rotate_fault_num = 0;
|
|||
|
//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>û<EFBFBD>й<EFBFBD><D0B9><EFBFBD>
|
|||
|
g_ptz.fault_detect.hori_rotate_fault = NO_FAULT;
|
|||
|
}
|
|||
|
else//ת<><D7AA><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
if(g_ptz.hori_pid.PidUT_float >= PTZ_HORI_VOLTAGE_LEVEL)
|
|||
|
{
|
|||
|
hori_rotate_fault_num ++;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
else
|
|||
|
{//<2F><><EFBFBD><EFBFBD>ˮƽ<CBAE>Լ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>
|
|||
|
if(g_ptz.hori_direction_actual == PTZ_HORI_DIR_RIGHT)
|
|||
|
{
|
|||
|
//ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(hori_angle_b > hori_angle_a &&
|
|||
|
hori_angle_b - hori_angle_a >= PTZ_HORI_MIN_SPEED * PTZ_HORI_BIG_GEAR_RATIO * 2)
|
|||
|
{//ֻ<><D6BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
hori_rotate_fault_num = 0;
|
|||
|
//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>û<EFBFBD>й<EFBFBD><D0B9><EFBFBD>
|
|||
|
g_ptz.fault_detect.hori_rotate_fault = NO_FAULT;
|
|||
|
}
|
|||
|
else//ת<><D7AA><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
if(g_ptz.hori_pid.PidUT_float >= PTZ_HORI_VOLTAGE_LEVEL)
|
|||
|
{
|
|||
|
hori_rotate_fault_num ++;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
else//g_ptz.hori_direction_actual == PTZ_HORI_DIR_LEFT
|
|||
|
{
|
|||
|
//ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(hori_angle_a > hori_angle_b &&
|
|||
|
hori_angle_a - hori_angle_b >= PTZ_HORI_MIN_SPEED * PTZ_HORI_BIG_GEAR_RATIO * 2)
|
|||
|
{//ֻ<><D6BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
hori_rotate_fault_num = 0;
|
|||
|
//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>û<EFBFBD>й<EFBFBD><D0B9><EFBFBD>
|
|||
|
g_ptz.fault_detect.hori_rotate_fault = NO_FAULT;
|
|||
|
}
|
|||
|
else//ת<><D7AA><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
if(g_ptz.hori_pid.PidUT_float >= PTZ_HORI_VOLTAGE_LEVEL)
|
|||
|
{
|
|||
|
hori_rotate_fault_num ++;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if(hori_rotate_fault_num >= ROTATE_FAULT_MAX_NUM)//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>쳣
|
|||
|
{
|
|||
|
hori_rotate_fault_num = 0;
|
|||
|
//<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>Զ<EFBFBD>ɨ<EFBFBD><C9A8>ģʽ
|
|||
|
g_preset_bit_scan.state = PRESET_BIT_SCAN_CLOSE_A;
|
|||
|
g_area_scan.state = AREA_SCAN_CLOSE_A;
|
|||
|
//<2F><>ֱ̨<CCA8><D6B1>ɲ<EFBFBD><C9B2>
|
|||
|
ptz_hori_stop(0);
|
|||
|
ptz_vert_stop(0);
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
g_ptz.fault_detect.hori_rotate_fault = FAULT;
|
|||
|
}
|
|||
|
|
|||
|
hori_angle_a = hori_angle_b;
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
// if(g_ptz.fault_detect.hori_rotate_fault == FAULT ||
|
|||
|
// g_ptz.fault_detect.vert_rotate_fault == FAULT)
|
|||
|
// {
|
|||
|
// g_ptz.fault_detect.fault = FAULT;
|
|||
|
// }
|
|||
|
// else
|
|||
|
// {
|
|||
|
// g_ptz.fault_detect.fault = NO_FAULT;
|
|||
|
// }
|
|||
|
return 1;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
#ifdef PTZ_STEP_MOTOR
|
|||
|
//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD><CFBC><EFBFBD>
|
|||
|
static char ptz_motor_rotate_fault_detect_task()
|
|||
|
{
|
|||
|
static char hori_rotate_fault_num;
|
|||
|
static char vert_rotate_fault_num;
|
|||
|
|
|||
|
static char hori_rotate_fault_step;
|
|||
|
static float hori_angle_a;
|
|||
|
static float hori_angle_b;
|
|||
|
|
|||
|
static char vert_rotate_fault_step;
|
|||
|
static float vert_angle_a;
|
|||
|
static float vert_angle_b;
|
|||
|
|
|||
|
static unsigned short int time_ms;
|
|||
|
|
|||
|
time_ms ++;
|
|||
|
if(time_ms < 1000)
|
|||
|
{
|
|||
|
return 1;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
time_ms = 0;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
if(g_ptz.vert_start_stop_set == PTZ_VERT_STOP)
|
|||
|
{
|
|||
|
vert_rotate_fault_step = 0;//<2F>ر<EFBFBD><D8B1>ж<EFBFBD>
|
|||
|
vert_rotate_fault_num = 0;
|
|||
|
}
|
|||
|
|
|||
|
//<2F><>ֱ
|
|||
|
switch(vert_rotate_fault_step)
|
|||
|
{
|
|||
|
case 0:
|
|||
|
if(g_ptz.vert_start_stop_set == PTZ_VERT_START)
|
|||
|
{
|
|||
|
vert_rotate_fault_num = 0;
|
|||
|
vert_angle_a = g_ptz.vert_as5047d.as5047d_ptz_angle_actual;
|
|||
|
vert_rotate_fault_step = vert_rotate_fault_step + 1; //<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case 1://<2F><>ʼ<EFBFBD>ж<EFBFBD><D0B6><EFBFBD>̨ת<CCA8><D7AA><EFBFBD>Ƿ<EFBFBD><C7B7>쳣
|
|||
|
vert_angle_b = g_ptz.vert_as5047d.as5047d_ptz_angle_actual;
|
|||
|
if(g_ptz.vert_direction_actual == PTZ_VERT_DIR_UP)
|
|||
|
{
|
|||
|
//ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(vert_angle_b > vert_angle_a &&
|
|||
|
vert_angle_b - vert_angle_a >= PTZ_VERT_MIN_SPEED * PTZ_VERT_BIG_GEAR_RATIO * 2)
|
|||
|
{//ֻ<><D6BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
vert_rotate_fault_num = 0;
|
|||
|
//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>û<EFBFBD>й<EFBFBD><D0B9><EFBFBD>
|
|||
|
g_ptz.fault_detect.vert_rotate_fault = NO_FAULT;
|
|||
|
}
|
|||
|
else//ת<><D7AA><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
vert_rotate_fault_num ++;
|
|||
|
}
|
|||
|
}
|
|||
|
else//g_ptz.vert_direction_actual == PTZ_VERT_DIR_DOWN
|
|||
|
{
|
|||
|
//ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(vert_angle_a > vert_angle_b &&
|
|||
|
vert_angle_a - vert_angle_b >= PTZ_VERT_MIN_SPEED * PTZ_VERT_BIG_GEAR_RATIO * 2)
|
|||
|
{//ֻ<><D6BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
vert_rotate_fault_num = 0;
|
|||
|
//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>û<EFBFBD>й<EFBFBD><D0B9><EFBFBD>
|
|||
|
g_ptz.fault_detect.vert_rotate_fault = NO_FAULT;
|
|||
|
}
|
|||
|
else//ת<><D7AA><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
vert_rotate_fault_num ++;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if(vert_rotate_fault_num >= ROTATE_FAULT_MAX_NUM)//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>쳣
|
|||
|
{
|
|||
|
vert_rotate_fault_num = 0;
|
|||
|
//<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>Զ<EFBFBD>ɨ<EFBFBD><C9A8>ģʽ
|
|||
|
g_preset_bit_scan.state = PRESET_BIT_SCAN_CLOSE_A;
|
|||
|
g_area_scan.state = AREA_SCAN_CLOSE_A;
|
|||
|
//<2F><>ֱ̨<CCA8><D6B1>ɲ<EFBFBD><C9B2>
|
|||
|
ptz_hori_stop(PTZ_HORI_STOP_TIME);
|
|||
|
ptz_vert_stop(PTZ_VERT_STOP_TIME);
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
g_ptz.fault_detect.vert_rotate_fault = FAULT;
|
|||
|
}
|
|||
|
|
|||
|
vert_angle_a = vert_angle_b;
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
/*************************************************************/
|
|||
|
|
|||
|
//ˮƽ
|
|||
|
if(g_ptz.hori_start_stop_set == PTZ_HORI_STOP)
|
|||
|
{
|
|||
|
hori_rotate_fault_step = 0;//<2F>ر<EFBFBD><D8B1>ж<EFBFBD>
|
|||
|
hori_rotate_fault_num = 0;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
switch(hori_rotate_fault_step)
|
|||
|
{
|
|||
|
case 0:
|
|||
|
if(g_ptz.hori_start_stop_set == PTZ_HORI_START)
|
|||
|
{
|
|||
|
hori_rotate_fault_num = 0;
|
|||
|
hori_angle_a = g_ptz.hori_as5047d.as5047d_ptz_angle_actual;
|
|||
|
hori_rotate_fault_step = hori_rotate_fault_step + 1; //<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case 1://<2F><>ʼ<EFBFBD>ж<EFBFBD><D0B6><EFBFBD>̨ת<CCA8><D7AA><EFBFBD>Ƿ<EFBFBD><C7B7>쳣
|
|||
|
hori_angle_b = g_ptz.hori_as5047d.as5047d_ptz_angle_actual;
|
|||
|
|
|||
|
if(g_ptz.hori_self_check == PTZ_HORI_SELF_CHECK_END)
|
|||
|
{//<2F><><EFBFBD><EFBFBD>ˮƽ<CBAE>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>
|
|||
|
if(g_ptz.hori_direction_actual == PTZ_HORI_DIR_RIGHT)
|
|||
|
{
|
|||
|
//ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if((hori_angle_b > hori_angle_a && //ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>ٶ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0.5<EFBFBD><EFBFBD>,ҪС<D2AA><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32>
|
|||
|
hori_angle_b - hori_angle_a > PTZ_HORI_MIN_SPEED * PTZ_HORI_BIG_GEAR_RATIO * 2 &&
|
|||
|
hori_angle_b - hori_angle_a < PTZ_HORI_MAX_SPEED * PTZ_HORI_BIG_GEAR_RATIO * 12)
|
|||
|
||
|
|||
|
(hori_angle_a > hori_angle_b &&
|
|||
|
hori_angle_b + g_ptz.hori_as5047d.as5047d_ptz_angle_max - hori_angle_a > PTZ_HORI_MIN_SPEED * PTZ_HORI_BIG_GEAR_RATIO * 2 &&
|
|||
|
hori_angle_b + g_ptz.hori_as5047d.as5047d_ptz_angle_max - hori_angle_a < PTZ_HORI_MAX_SPEED * PTZ_HORI_BIG_GEAR_RATIO * 12) )
|
|||
|
{//ֻ<><D6BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
hori_rotate_fault_num = 0;
|
|||
|
//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>û<EFBFBD>й<EFBFBD><D0B9><EFBFBD>
|
|||
|
g_ptz.fault_detect.hori_rotate_fault = NO_FAULT;
|
|||
|
}
|
|||
|
else//ת<><D7AA><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
hori_rotate_fault_num ++;
|
|||
|
}
|
|||
|
}
|
|||
|
else//g_ptz.hori_direction_actual == PTZ_HORI_DIR_LEFT
|
|||
|
{
|
|||
|
//ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if((hori_angle_b < hori_angle_a && //ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>ٶ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0.5<EFBFBD><EFBFBD>,ҪС<D2AA><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32>
|
|||
|
hori_angle_a - hori_angle_b > PTZ_HORI_MIN_SPEED * PTZ_HORI_BIG_GEAR_RATIO * 2 &&
|
|||
|
hori_angle_a - hori_angle_b < PTZ_HORI_MAX_SPEED * PTZ_HORI_BIG_GEAR_RATIO * 12)
|
|||
|
||
|
|||
|
(hori_angle_a < hori_angle_b &&
|
|||
|
hori_angle_a + g_ptz.hori_as5047d.as5047d_ptz_angle_max - hori_angle_b > PTZ_HORI_MIN_SPEED * PTZ_HORI_BIG_GEAR_RATIO * 2 &&
|
|||
|
hori_angle_a + g_ptz.hori_as5047d.as5047d_ptz_angle_max - hori_angle_b < PTZ_HORI_MAX_SPEED * PTZ_HORI_BIG_GEAR_RATIO * 12) )
|
|||
|
{//ֻ<><D6BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
hori_rotate_fault_num = 0;
|
|||
|
//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>û<EFBFBD>й<EFBFBD><D0B9><EFBFBD>
|
|||
|
g_ptz.fault_detect.hori_rotate_fault = NO_FAULT;
|
|||
|
}
|
|||
|
else//ת<><D7AA><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
hori_rotate_fault_num ++;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
else
|
|||
|
{//<2F><><EFBFBD><EFBFBD>ˮƽ<CBAE>Լ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>
|
|||
|
if(g_ptz.hori_direction_actual == PTZ_HORI_DIR_RIGHT)
|
|||
|
{
|
|||
|
//ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(hori_angle_b > hori_angle_a &&
|
|||
|
hori_angle_b - hori_angle_a >= PTZ_HORI_MIN_SPEED * PTZ_HORI_BIG_GEAR_RATIO * 2)
|
|||
|
{//ֻ<><D6BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
hori_rotate_fault_num = 0;
|
|||
|
//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>û<EFBFBD>й<EFBFBD><D0B9><EFBFBD>
|
|||
|
g_ptz.fault_detect.hori_rotate_fault = NO_FAULT;
|
|||
|
}
|
|||
|
else//ת<><D7AA><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
hori_rotate_fault_num ++;
|
|||
|
}
|
|||
|
}
|
|||
|
else//g_ptz.hori_direction_actual == PTZ_HORI_DIR_LEFT
|
|||
|
{
|
|||
|
//ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(hori_angle_a > hori_angle_b &&
|
|||
|
hori_angle_a - hori_angle_b >= PTZ_HORI_MIN_SPEED * PTZ_HORI_BIG_GEAR_RATIO * 2)
|
|||
|
{//ֻ<><D6BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
hori_rotate_fault_num = 0;
|
|||
|
//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>û<EFBFBD>й<EFBFBD><D0B9><EFBFBD>
|
|||
|
g_ptz.fault_detect.hori_rotate_fault = NO_FAULT;
|
|||
|
}
|
|||
|
else//ת<><D7AA><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
hori_rotate_fault_num ++;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if(hori_rotate_fault_num >= ROTATE_FAULT_MAX_NUM)//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>쳣
|
|||
|
{
|
|||
|
hori_rotate_fault_num = 0;
|
|||
|
//<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>Զ<EFBFBD>ɨ<EFBFBD><C9A8>ģʽ
|
|||
|
g_preset_bit_scan.state = PRESET_BIT_SCAN_CLOSE_A;
|
|||
|
g_area_scan.state = AREA_SCAN_CLOSE_A;
|
|||
|
//<2F><>ֱ̨<CCA8><D6B1>ɲ<EFBFBD><C9B2>
|
|||
|
ptz_hori_stop(PTZ_HORI_STOP_TIME);
|
|||
|
ptz_vert_stop(PTZ_VERT_STOP_TIME);
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
g_ptz.fault_detect.hori_rotate_fault = FAULT;
|
|||
|
}
|
|||
|
|
|||
|
hori_angle_a = hori_angle_b;
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
// if(g_ptz.fault_detect.hori_rotate_fault == FAULT ||
|
|||
|
// g_ptz.fault_detect.vert_rotate_fault == FAULT)
|
|||
|
// {
|
|||
|
// g_ptz.fault_detect.fault = FAULT;
|
|||
|
// }
|
|||
|
// else
|
|||
|
// {
|
|||
|
// g_ptz.fault_detect.fault = NO_FAULT;
|
|||
|
// }
|
|||
|
return 1;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
|
|||
|
//<2F><><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ش<EFBFBD>
|
|||
|
static char ptz_fault_return_task()
|
|||
|
{
|
|||
|
|
|||
|
static unsigned short int time_ms;
|
|||
|
|
|||
|
time_ms ++;
|
|||
|
if(time_ms < 1000)
|
|||
|
{
|
|||
|
return 1;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
time_ms = 0;
|
|||
|
}
|
|||
|
//ˮƽת<C6BD><D7AA><EFBFBD><EFBFBD><EFBFBD>ϻش<CFBB>
|
|||
|
if(g_ptz.fault_detect.hori_rotate_fault == FAULT &&
|
|||
|
g_ptz.cmd_save.cmd_data_udp_flag == 1)
|
|||
|
{
|
|||
|
ptz_send_fault_state(PTZ_UDP,HORI_ROT);
|
|||
|
}
|
|||
|
//<2F><>ֱת<D6B1><D7AA><EFBFBD><EFBFBD><EFBFBD>ϻش<CFBB>
|
|||
|
if(g_ptz.fault_detect.vert_rotate_fault == FAULT &&
|
|||
|
g_ptz.cmd_save.cmd_data_udp_flag == 1)
|
|||
|
{
|
|||
|
ptz_send_fault_state(PTZ_UDP,VERT_ROT);
|
|||
|
}
|
|||
|
//<2F>¶ȹ<C2B6><C8B9>ϻش<CFBB>
|
|||
|
if(g_ptz.fault_detect.temperature_fault == FAULT &&
|
|||
|
g_ptz.cmd_save.cmd_data_udp_flag == 1)
|
|||
|
{
|
|||
|
ptz_send_fault_state(PTZ_UDP,WORK_TEMP);
|
|||
|
}
|
|||
|
//<2F><>ѹ<EFBFBD><D1B9><EFBFBD>ϻش<CFBB>
|
|||
|
if(g_ptz.fault_detect.voltage_fault == FAULT &&
|
|||
|
g_ptz.cmd_save.cmd_data_udp_flag == 1)
|
|||
|
{
|
|||
|
ptz_send_fault_state(PTZ_UDP,WORK_VOLT);
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϻش<CFBB>
|
|||
|
if(g_ptz.fault_detect.electric_current_fault == FAULT
|
|||
|
&& g_ptz.cmd_save.cmd_data_udp_flag == 1)
|
|||
|
{
|
|||
|
ptz_send_fault_state(PTZ_UDP,WORK_ELECTRIC_CURRENT);
|
|||
|
}
|
|||
|
//ˮƽhall<6C><6C><EFBFBD>ϻش<CFBB>
|
|||
|
if(g_ptz.fault_detect.hori_hall_fault == FAULT &&
|
|||
|
g_ptz.cmd_save.cmd_data_udp_flag == 1)
|
|||
|
{
|
|||
|
ptz_send_fault_state(PTZ_UDP,HORI_HALL);
|
|||
|
}
|
|||
|
//<2F><>ֱhall<6C><6C><EFBFBD>ϻش<CFBB>
|
|||
|
if(g_ptz.fault_detect.vert_hall_fault == FAULT &&
|
|||
|
g_ptz.cmd_save.cmd_data_udp_flag == 1)
|
|||
|
{
|
|||
|
ptz_send_fault_state(PTZ_UDP,VERT_HALL);
|
|||
|
}
|
|||
|
return 1;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
static char ptz_fault_detect_task()
|
|||
|
{
|
|||
|
while(1)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
ptz_motor_rotate_fault_detect_task();
|
|||
|
//<2F>¶ȵ<C2B6>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
ptz_temp_volt_current_fault_detect_task();
|
|||
|
//<2F><><EFBFBD><EFBFBD>hall<6C><6C><EFBFBD><EFBFBD>
|
|||
|
#ifdef PTZ_BLDC_MOTOR
|
|||
|
ptz_motor_hall_fault_detect_task();
|
|||
|
#endif
|
|||
|
//<2F><><EFBFBD>ϻش<CFBB>
|
|||
|
ptz_fault_return_task();
|
|||
|
//<2F><><EFBFBD>翪<EFBFBD>ع<EFBFBD><D8B9>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>翪<EFBFBD>ز<EFBFBD><D8B2>ܹ<EFBFBD><DCB9>ϻش<CFBB><D8B4><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ϵ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2B5BD><EFBFBD><EFBFBD>
|
|||
|
ptz_vert_sw12_fault_detect_task();
|
|||
|
|
|||
|
|
|||
|
if(g_ptz.fault_detect.hori_rotate_fault == FAULT ||
|
|||
|
g_ptz.fault_detect.vert_rotate_fault == FAULT ||
|
|||
|
max_temperature_fault == FAULT)//<2F>¶ȳ<C2B6><C8B3><EFBFBD><EFBFBD><EFBFBD>ֵ10<31>津<EFBFBD><E6B4A5><EFBFBD>ܹ<EFBFBD><DCB9><EFBFBD>
|
|||
|
{//<2F>ܹ<EFBFBD><DCB9><EFBFBD>
|
|||
|
g_ptz.fault_detect.fault = FAULT;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
g_ptz.fault_detect.fault = NO_FAULT;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 1u);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//#define TASK_FAULT_DETECT_PRIO 19u
|
|||
|
//#define TASK_FAULT_DETECT_STK_SIZE 100u
|
|||
|
|
|||
|
static OS_STK task_fault_detect_stk[TASK_FAULT_DETECT_STK_SIZE];
|
|||
|
static void creat_task_fault_detect(void)
|
|||
|
{
|
|||
|
CPU_INT08U task_err;
|
|||
|
CPU_INT08U name_err;
|
|||
|
|
|||
|
task_err = OSTaskCreateExt((void (*)(void *)) ptz_fault_detect_task,
|
|||
|
(void *) 0,
|
|||
|
(OS_STK *)&task_fault_detect_stk[TASK_FAULT_DETECT_STK_SIZE - 1],
|
|||
|
(INT8U ) TASK_FAULT_DETECT_PRIO,
|
|||
|
(INT16U ) TASK_FAULT_DETECT_PRIO,
|
|||
|
(OS_STK *)&task_fault_detect_stk[0],
|
|||
|
(INT32U ) TASK_FAULT_DETECT_STK_SIZE,
|
|||
|
(void *) 0,
|
|||
|
(INT16U )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR));
|
|||
|
#if (OS_TASK_NAME_EN > 0)
|
|||
|
OSTaskNameSet(TASK_FAULT_DETECT_PRIO, "ptz_fault_detect_task", &name_err);
|
|||
|
#endif
|
|||
|
|
|||
|
if ((task_err == OS_ERR_NONE) && (name_err == OS_ERR_NONE)) {
|
|||
|
pdebug(DEBUG_LEVEL_INFO,"create ptz_fault_detect_task success...\n\r");
|
|||
|
} else {
|
|||
|
pdebug(DEBUG_LEVEL_FATAL,"create ptz_fault_detect_task failed...\n\r");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void init_status_monitor_module()
|
|||
|
{
|
|||
|
creat_task_fault_detect();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void ptz_send_fault_state(char dev, unsigned char FaultState)
|
|||
|
{
|
|||
|
unsigned char buff[7];
|
|||
|
unsigned short int buf;
|
|||
|
if(g_ptz.cmd_save.cmd_data_flag == 1)//<2F><>̨<EFBFBD><CCA8><EFBFBD>չ<EFBFBD>ָ<EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD><D8B4><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD>
|
|||
|
{
|
|||
|
//ˮƽת<C6BD><D7AA>״̬
|
|||
|
if(FaultState == HORI_ROT || FaultState == ALL_FAULT_STATE)
|
|||
|
{
|
|||
|
memset(buff, 0, sizeof(buff));
|
|||
|
buff[0] = 0xff;
|
|||
|
buff[1] = g_ptz.address;
|
|||
|
buff[2] = HORI_ROT;
|
|||
|
buff[3] = g_ptz.fault_detect.hori_rotate_fault;
|
|||
|
|
|||
|
if(g_ptz.hori_direction_set == PTZ_HORI_DIR_RIGHT)
|
|||
|
{//ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
buff[4] = PTZ_RIGHT;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
buff[4] = PTZ_LEFT;
|
|||
|
}
|
|||
|
|
|||
|
buff[5] = g_ptz.hori_start_stop_set;//<2F><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD>ת<EFBFBD><D7AA>״̬<D7B4><CCAC><EFBFBD><EFBFBD>ɲ<EFBFBD><C9B2>״̬
|
|||
|
buff[6] = MotorCalPelcoDSUM(buff, sizeof(buff));
|
|||
|
|
|||
|
switch(dev)
|
|||
|
{
|
|||
|
case PTZ_UDP:
|
|||
|
send_udp_data_aim(buff, sizeof(buff),
|
|||
|
(struct sockaddr*)&g_ptz.cmd_save.cmd_from, g_ptz.cmd_save.cmd_fromlen);
|
|||
|
break;
|
|||
|
|
|||
|
case PTZ_UART_422:
|
|||
|
ptz_uart_dev_send(uart_422_handle, buff, sizeof(buff));
|
|||
|
break;
|
|||
|
|
|||
|
case PTZ_UART_485:
|
|||
|
ptz_uart_dev_send(uart_485_handle, buff, sizeof(buff));
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
#ifdef PTZ_BLDC_MOTOR
|
|||
|
//ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD>״̬
|
|||
|
if(FaultState == HORI_HALL || FaultState == ALL_FAULT_STATE)
|
|||
|
{
|
|||
|
memset(buff, 0, sizeof(buff));
|
|||
|
buff[0] = 0xff;
|
|||
|
buff[1] = g_ptz.address;
|
|||
|
buff[2] = HORI_HALL;
|
|||
|
buff[3] = g_ptz.fault_detect.hori_hall_fault;
|
|||
|
buff[6] = MotorCalPelcoDSUM(buff, sizeof(buff));
|
|||
|
|
|||
|
switch(dev)
|
|||
|
{
|
|||
|
case PTZ_UDP:
|
|||
|
send_udp_data_aim(buff, sizeof(buff),
|
|||
|
(struct sockaddr*)&g_ptz.cmd_save.cmd_from, g_ptz.cmd_save.cmd_fromlen);
|
|||
|
break;
|
|||
|
|
|||
|
case PTZ_UART_422:
|
|||
|
ptz_uart_dev_send(uart_422_handle, buff, sizeof(buff));
|
|||
|
break;
|
|||
|
|
|||
|
case PTZ_UART_485:
|
|||
|
ptz_uart_dev_send(uart_485_handle, buff, sizeof(buff));
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
#endif
|
|||
|
//<2F><>ֱת<D6B1><D7AA>״̬
|
|||
|
if(FaultState == VERT_ROT || FaultState == ALL_FAULT_STATE)
|
|||
|
{
|
|||
|
memset(buff, 0, sizeof(buff));
|
|||
|
buff[0] = 0xff;
|
|||
|
buff[1] = g_ptz.address;
|
|||
|
buff[2] = VERT_ROT;
|
|||
|
buff[3] = g_ptz.fault_detect.vert_rotate_fault;
|
|||
|
|
|||
|
if(g_ptz.vert_direction_set == PTZ_VERT_DIR_UP)
|
|||
|
{//ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
buff[4] = PTZ_UP;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
buff[4] = PTZ_DOWN;
|
|||
|
}
|
|||
|
|
|||
|
buff[5] = g_ptz.vert_start_stop_set;//<2F><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD>ת<EFBFBD><D7AA>״̬<D7B4><CCAC><EFBFBD><EFBFBD>ɲ<EFBFBD><C9B2>״̬
|
|||
|
buff[6] = MotorCalPelcoDSUM(buff, sizeof(buff));
|
|||
|
|
|||
|
switch(dev)
|
|||
|
{
|
|||
|
case PTZ_UDP:
|
|||
|
send_udp_data_aim(buff, sizeof(buff),
|
|||
|
(struct sockaddr*)&g_ptz.cmd_save.cmd_from, g_ptz.cmd_save.cmd_fromlen);
|
|||
|
break;
|
|||
|
|
|||
|
case PTZ_UART_422:
|
|||
|
ptz_uart_dev_send(uart_422_handle, buff, sizeof(buff));
|
|||
|
break;
|
|||
|
|
|||
|
case PTZ_UART_485:
|
|||
|
ptz_uart_dev_send(uart_485_handle, buff, sizeof(buff));
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
#ifdef PTZ_BLDC_MOTOR
|
|||
|
//<2F><>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>״̬
|
|||
|
if(FaultState == VERT_HALL || FaultState == ALL_FAULT_STATE)
|
|||
|
{
|
|||
|
memset(buff, 0, sizeof(buff));
|
|||
|
buff[0] = 0xff;
|
|||
|
buff[1] = g_ptz.address;
|
|||
|
buff[2] = VERT_HALL;
|
|||
|
buff[3] = g_ptz.fault_detect.vert_hall_fault;
|
|||
|
buff[6] = MotorCalPelcoDSUM(buff, sizeof(buff));
|
|||
|
|
|||
|
switch(dev)
|
|||
|
{
|
|||
|
case PTZ_UDP:
|
|||
|
send_udp_data_aim(buff, sizeof(buff),
|
|||
|
(struct sockaddr*)&g_ptz.cmd_save.cmd_from, g_ptz.cmd_save.cmd_fromlen);
|
|||
|
break;
|
|||
|
|
|||
|
case PTZ_UART_422:
|
|||
|
ptz_uart_dev_send(uart_422_handle, buff, sizeof(buff));
|
|||
|
break;
|
|||
|
|
|||
|
case PTZ_UART_485:
|
|||
|
ptz_uart_dev_send(uart_485_handle, buff, sizeof(buff));
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
#endif
|
|||
|
//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD>WorkTemp
|
|||
|
if(FaultState == WORK_TEMP || FaultState == ALL_FAULT_STATE)
|
|||
|
{
|
|||
|
memset(buff, 0, sizeof(buff));
|
|||
|
buf = (unsigned short int)(g_ptz.temperature * 100 + 0.5);
|
|||
|
buff[0] = 0xff;
|
|||
|
buff[1] = g_ptz.address;
|
|||
|
buff[2] = WORK_TEMP;
|
|||
|
buff[3] = g_ptz.fault_detect.temperature_fault;
|
|||
|
buff[4] = (unsigned char)(buf >> 8);
|
|||
|
buff[5] = (unsigned char)(buf & 0x00ff);
|
|||
|
buff[6] = MotorCalPelcoDSUM(buff, sizeof(buff));
|
|||
|
|
|||
|
switch(dev)
|
|||
|
{
|
|||
|
case PTZ_UDP:
|
|||
|
send_udp_data_aim(buff, sizeof(buff),
|
|||
|
(struct sockaddr*)&g_ptz.cmd_save.cmd_from, g_ptz.cmd_save.cmd_fromlen);
|
|||
|
break;
|
|||
|
|
|||
|
case PTZ_UART_422:
|
|||
|
ptz_uart_dev_send(uart_422_handle, buff, sizeof(buff));
|
|||
|
break;
|
|||
|
|
|||
|
case PTZ_UART_485:
|
|||
|
ptz_uart_dev_send(uart_485_handle, buff, sizeof(buff));
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ
|
|||
|
if(FaultState == WORK_VOLT || FaultState == ALL_FAULT_STATE)
|
|||
|
{
|
|||
|
memset(buff, 0, sizeof(buff));
|
|||
|
buf = (unsigned short int)(g_ptz.Voltage * 100 + 0.5);
|
|||
|
buff[0] = 0xff;
|
|||
|
buff[1] = g_ptz.address;
|
|||
|
buff[2] = WORK_VOLT;
|
|||
|
buff[3] = g_ptz.fault_detect.voltage_fault;
|
|||
|
buff[4] = (unsigned char)(buf >> 8);
|
|||
|
buff[5] = (unsigned char)(buf & 0x00ff);
|
|||
|
buff[6] = MotorCalPelcoDSUM(buff, sizeof(buff));
|
|||
|
|
|||
|
switch(dev)
|
|||
|
{
|
|||
|
case PTZ_UDP:
|
|||
|
send_udp_data_aim(buff, sizeof(buff),
|
|||
|
(struct sockaddr*)&g_ptz.cmd_save.cmd_from, g_ptz.cmd_save.cmd_fromlen);
|
|||
|
break;
|
|||
|
|
|||
|
case PTZ_UART_422:
|
|||
|
ptz_uart_dev_send(uart_422_handle, buff, sizeof(buff));
|
|||
|
break;
|
|||
|
|
|||
|
case PTZ_UART_485:
|
|||
|
ptz_uart_dev_send(uart_485_handle, buff, sizeof(buff));
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(FaultState == WORK_ELECTRIC_CURRENT || FaultState == ALL_FAULT_STATE)
|
|||
|
{
|
|||
|
memset(buff, 0, sizeof(buff));
|
|||
|
buf = (unsigned short int)(g_ptz.electric_current * 100 + 0.5);
|
|||
|
buff[0] = 0xff;
|
|||
|
buff[1] = g_ptz.address;
|
|||
|
buff[2] = WORK_ELECTRIC_CURRENT;
|
|||
|
buff[3] = g_ptz.fault_detect.electric_current_fault;
|
|||
|
buff[4] = (unsigned char)(buf >> 8);
|
|||
|
buff[5] = (unsigned char)(buf & 0x00ff);
|
|||
|
buff[6] = MotorCalPelcoDSUM(buff, sizeof(buff));
|
|||
|
|
|||
|
switch(dev)
|
|||
|
{
|
|||
|
case PTZ_UDP:
|
|||
|
send_udp_data_aim(buff, sizeof(buff),
|
|||
|
(struct sockaddr*)&g_ptz.cmd_save.cmd_from, g_ptz.cmd_save.cmd_fromlen);
|
|||
|
break;
|
|||
|
|
|||
|
case PTZ_UART_422:
|
|||
|
ptz_uart_dev_send(uart_422_handle, buff, sizeof(buff));
|
|||
|
break;
|
|||
|
|
|||
|
case PTZ_UART_485:
|
|||
|
ptz_uart_dev_send(uart_485_handle, buff, sizeof(buff));
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
if(FaultState == CAMERA_POWER || FaultState == ALL_FAULT_STATE)
|
|||
|
{
|
|||
|
memset(buff, 0, sizeof(buff));
|
|||
|
buff[0] = 0xff;
|
|||
|
buff[1] = g_ptz.address;
|
|||
|
buff[2] = CAMERA_POWER;
|
|||
|
buff[3] = g_ptz.power.aux_switch_3;//<2F>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
buff[4] = g_ptz.power.aux_switch_4;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
buff[6] = MotorCalPelcoDSUM(buff, sizeof(buff));
|
|||
|
|
|||
|
switch(dev)
|
|||
|
{
|
|||
|
case PTZ_UDP:
|
|||
|
send_udp_data_aim(buff, sizeof(buff),
|
|||
|
(struct sockaddr*)&g_ptz.cmd_save.cmd_from, g_ptz.cmd_save.cmd_fromlen);
|
|||
|
break;
|
|||
|
|
|||
|
case PTZ_UART_422:
|
|||
|
ptz_uart_dev_send(uart_422_handle, buff, sizeof(buff));
|
|||
|
break;
|
|||
|
|
|||
|
case PTZ_UART_485:
|
|||
|
ptz_uart_dev_send(uart_485_handle, buff, sizeof(buff));
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
//<2F><>ֱ<EFBFBD><D6B1><EFBFBD>翪<EFBFBD><E7BFAA>״̬
|
|||
|
if(FaultState == VERT_PHOTOELECT_SWITCH || FaultState == ALL_FAULT_STATE)
|
|||
|
{
|
|||
|
memset(buff, 0, sizeof(buff));
|
|||
|
buff[0] = 0xff;
|
|||
|
buff[1] = g_ptz.address;
|
|||
|
buff[2] = VERT_PHOTOELECT_SWITCH;
|
|||
|
buff[4] = g_ptz.fault_detect.vert_sw1_fault;//<2F><><EFBFBD>翪<EFBFBD><E7BFAA>1
|
|||
|
buff[5] = g_ptz.fault_detect.vert_sw2_fault;//<2F><><EFBFBD>翪<EFBFBD><E7BFAA>2
|
|||
|
buff[6] = MotorCalPelcoDSUM(buff, sizeof(buff));
|
|||
|
|
|||
|
switch(dev)
|
|||
|
{
|
|||
|
case PTZ_UDP:
|
|||
|
send_udp_data_aim(buff, sizeof(buff),
|
|||
|
(struct sockaddr*)&g_ptz.cmd_save.cmd_from, g_ptz.cmd_save.cmd_fromlen);
|
|||
|
break;
|
|||
|
|
|||
|
case PTZ_UART_422:
|
|||
|
ptz_uart_dev_send(uart_422_handle, buff, sizeof(buff));
|
|||
|
break;
|
|||
|
|
|||
|
case PTZ_UART_485:
|
|||
|
ptz_uart_dev_send(uart_485_handle, buff, sizeof(buff));
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
///ָ<><D6B8><EFBFBD>Ƿ<EFBFBD><C7B7>ܹ<EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>жϺ<D0B6><CFBA><EFBFBD>
|
|||
|
PtzCmdType ptz_cmd_execute_judge()
|
|||
|
{
|
|||
|
PtzCmdType cmd;
|
|||
|
//<2F><>̨<EFBFBD><CCA8><EFBFBD>ڼ̵<DABC><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
if(g_ptz.ptz_motor_relay_state == PTZ_RELAY_ON)
|
|||
|
{
|
|||
|
cmd.manual_control = CMD_ALLOW;//<2F>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵȷ<D2B5><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.manual_stop = CMD_ALLOW;//<2F>ֶ<EFBFBD>ָֹͣ<D6B9><D6B8>
|
|||
|
|
|||
|
cmd.preset_bit_set = CMD_NOT_ALLOW;//Ԥ<><D4A4>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
cmd.preset_bit_del = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɾ<CEBB><C9BE>
|
|||
|
cmd.preset_bit_call = CMD_NOT_ALLOW;//Ԥ<><D4A4>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
cmd.preset_bit_scan_start = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.preset_bit_scan_pause = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD><EFBFBD>ͣ
|
|||
|
cmd.preset_bit_scan_recovery = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD>ָ<EFBFBD>
|
|||
|
cmd.preset_bit_scan_close = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD>ر<EFBFBD>
|
|||
|
|
|||
|
cmd.area_set = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.area_scan_start = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.area_scan_pause = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD>ͣ
|
|||
|
cmd.area_scan_recovery = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>ָ<EFBFBD>
|
|||
|
cmd.area_scan_close = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>ر<EFBFBD>
|
|||
|
|
|||
|
cmd.set_zero = CMD_NOT_ALLOW;
|
|||
|
return cmd;
|
|||
|
}
|
|||
|
//<2F><>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>״̬
|
|||
|
if(g_ptz.hori_self_check != PTZ_HORI_SELF_CHECK_END ||
|
|||
|
g_ptz.vert_self_check != PTZ_VERT_SELF_CHECK_END)
|
|||
|
{
|
|||
|
cmd.manual_control = CMD_NOT_ALLOW;//<2F>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵȷ<D2B5><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.manual_stop = CMD_NOT_ALLOW;//<2F>ֶ<EFBFBD>ָֹͣ<D6B9><D6B8>
|
|||
|
|
|||
|
cmd.preset_bit_set = CMD_NOT_ALLOW;//Ԥ<><D4A4>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
cmd.preset_bit_del = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɾ<CEBB><C9BE>
|
|||
|
cmd.preset_bit_call = CMD_NOT_ALLOW;//Ԥ<><D4A4>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
cmd.preset_bit_scan_start = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.preset_bit_scan_pause = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD><EFBFBD>ͣ
|
|||
|
cmd.preset_bit_scan_recovery = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD>ָ<EFBFBD>
|
|||
|
cmd.preset_bit_scan_close = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD>ر<EFBFBD>
|
|||
|
|
|||
|
cmd.area_set = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.area_scan_start = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.area_scan_pause = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD>ͣ
|
|||
|
cmd.area_scan_recovery = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>ָ<EFBFBD>
|
|||
|
cmd.area_scan_close = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>ر<EFBFBD>
|
|||
|
|
|||
|
cmd.set_zero = CMD_NOT_ALLOW;
|
|||
|
return cmd;
|
|||
|
}
|
|||
|
//<2F><>̨<EFBFBD><CCA8><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD>״̬
|
|||
|
if(g_ptz.fault_detect.fault == FAULT)
|
|||
|
{
|
|||
|
cmd.manual_control = CMD_NOT_ALLOW;//<2F>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵȷ<D2B5><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.manual_stop = CMD_ALLOW;//<2F>ֶ<EFBFBD>ָֹͣ<D6B9><D6B8>
|
|||
|
|
|||
|
cmd.preset_bit_set = CMD_NOT_ALLOW;//Ԥ<><D4A4>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
cmd.preset_bit_del = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɾ<CEBB><C9BE>
|
|||
|
cmd.preset_bit_call = CMD_NOT_ALLOW;//Ԥ<><D4A4>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
cmd.preset_bit_scan_start = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.preset_bit_scan_pause = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD><EFBFBD>ͣ
|
|||
|
cmd.preset_bit_scan_recovery = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD>ָ<EFBFBD>
|
|||
|
cmd.preset_bit_scan_close = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD>ر<EFBFBD>
|
|||
|
|
|||
|
cmd.area_set = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.area_scan_start = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.area_scan_pause = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD>ͣ
|
|||
|
cmd.area_scan_recovery = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>ָ<EFBFBD>
|
|||
|
cmd.area_scan_close = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>ر<EFBFBD>
|
|||
|
|
|||
|
cmd.set_zero = CMD_NOT_ALLOW;
|
|||
|
return cmd;
|
|||
|
}
|
|||
|
//<2F><>̨<EFBFBD><CCA8><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4>λɨ<CEBB><C9A8>״̬
|
|||
|
if(g_preset_bit_scan.state >= PRESET_BIT_SCAN_START &&
|
|||
|
g_preset_bit_scan.state <= PRESET_BIT_SCAN_START + 4)
|
|||
|
{
|
|||
|
cmd.manual_control = CMD_NOT_ALLOW;//<2F>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵȷ<D2B5><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.manual_stop = CMD_NOT_ALLOW;//<2F>ֶ<EFBFBD>ָֹͣ<D6B9><D6B8>
|
|||
|
|
|||
|
cmd.preset_bit_set = CMD_NOT_ALLOW;//Ԥ<><D4A4>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
cmd.preset_bit_del = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɾ<CEBB><C9BE>
|
|||
|
cmd.preset_bit_call = CMD_NOT_ALLOW;//Ԥ<><D4A4>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
cmd.preset_bit_scan_start = CMD_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.preset_bit_scan_pause = CMD_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD><EFBFBD>ͣ
|
|||
|
cmd.preset_bit_scan_recovery = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD>ָ<EFBFBD>
|
|||
|
cmd.preset_bit_scan_close = CMD_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD>ر<EFBFBD>
|
|||
|
|
|||
|
cmd.area_set = CMD_ALLOW;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.area_scan_start = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.area_scan_pause = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD>ͣ
|
|||
|
cmd.area_scan_recovery = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>ָ<EFBFBD>
|
|||
|
cmd.area_scan_close = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>ر<EFBFBD>
|
|||
|
|
|||
|
cmd.set_zero = CMD_NOT_ALLOW;
|
|||
|
return cmd;
|
|||
|
}
|
|||
|
//<2F><>̨<EFBFBD><CCA8><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4>λɨ<CEBB><C9A8><EFBFBD><EFBFBD>ͣ״̬
|
|||
|
if(g_preset_bit_scan.state == PRESET_BIT_SCAN_PAUSE_A ||
|
|||
|
g_preset_bit_scan.state == PRESET_BIT_SCAN_PAUSE_B)
|
|||
|
{
|
|||
|
// if(g_preset_bit_scan.state == PRESET_BIT_SCAN_PAUSE_A)
|
|||
|
// {
|
|||
|
// cmd.manual_control = CMD_NOT_ALLOW;//<2F>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵȷ<D2B5><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// cmd.manual_stop = CMD_NOT_ALLOW;//<2F>ֶ<EFBFBD>ָֹͣ<D6B9><D6B8>
|
|||
|
//
|
|||
|
// cmd.preset_bit_set = CMD_NOT_ALLOW;//Ԥ<><D4A4>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
// cmd.preset_bit_del = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɾ<CEBB><C9BE>
|
|||
|
// cmd.preset_bit_call = CMD_NOT_ALLOW;//Ԥ<><D4A4>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
//
|
|||
|
// cmd.preset_bit_scan_start = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// cmd.preset_bit_scan_pause = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD><EFBFBD>ͣ
|
|||
|
// cmd.preset_bit_scan_recovery = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD>ָ<EFBFBD>
|
|||
|
// cmd.preset_bit_scan_close = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD>ر<EFBFBD>
|
|||
|
//
|
|||
|
// cmd.area_set = CMD_ALLOW;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// cmd.area_scan_start = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// cmd.area_scan_pause = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD>ͣ
|
|||
|
// cmd.area_scan_recovery = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>ָ<EFBFBD>
|
|||
|
// cmd.area_scan_close = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>ر<EFBFBD>
|
|||
|
//
|
|||
|
// cmd.set_zero = CMD_NOT_ALLOW;
|
|||
|
// }
|
|||
|
//if(g_preset_bit_scan.state == PRESET_BIT_SCAN_PAUSE_B)
|
|||
|
cmd.manual_control = CMD_ALLOW;//<2F>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵȷ<D2B5><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.manual_stop = CMD_ALLOW;//<2F>ֶ<EFBFBD>ָֹͣ<D6B9><D6B8>
|
|||
|
|
|||
|
cmd.preset_bit_set = CMD_ALLOW;//Ԥ<><D4A4>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
cmd.preset_bit_del = CMD_ALLOW;//Ԥ<><D4A4>λɾ<CEBB><C9BE>
|
|||
|
cmd.preset_bit_call = CMD_ALLOW;//Ԥ<><D4A4>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
cmd.preset_bit_scan_start = CMD_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.preset_bit_scan_pause = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD><EFBFBD>ͣ
|
|||
|
cmd.preset_bit_scan_recovery = CMD_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD>ָ<EFBFBD>
|
|||
|
cmd.preset_bit_scan_close = CMD_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD>ر<EFBFBD>
|
|||
|
|
|||
|
cmd.area_set = CMD_ALLOW;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.area_scan_start = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.area_scan_pause = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD>ͣ
|
|||
|
cmd.area_scan_recovery = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>ָ<EFBFBD>
|
|||
|
cmd.area_scan_close = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>ر<EFBFBD>
|
|||
|
|
|||
|
cmd.set_zero = CMD_NOT_ALLOW;
|
|||
|
return cmd;
|
|||
|
}
|
|||
|
|
|||
|
if(g_preset_bit_scan.state == PRESET_BIT_SCAN_RECOVERY)//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD>ָ<EFBFBD>״̬<D7B4><CCAC>
|
|||
|
{
|
|||
|
cmd.manual_control = CMD_NOT_ALLOW;//<2F>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵȷ<D2B5><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.manual_stop = CMD_NOT_ALLOW;//<2F>ֶ<EFBFBD>ָֹͣ<D6B9><D6B8>
|
|||
|
|
|||
|
cmd.preset_bit_set = CMD_NOT_ALLOW;//Ԥ<><D4A4>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
cmd.preset_bit_del = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɾ<CEBB><C9BE>
|
|||
|
cmd.preset_bit_call = CMD_NOT_ALLOW;//Ԥ<><D4A4>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
cmd.preset_bit_scan_start = CMD_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.preset_bit_scan_pause = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD><EFBFBD>ͣ
|
|||
|
cmd.preset_bit_scan_recovery = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD>ָ<EFBFBD>
|
|||
|
cmd.preset_bit_scan_close = CMD_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD>ر<EFBFBD>
|
|||
|
|
|||
|
cmd.area_set = CMD_ALLOW;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.area_scan_start = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.area_scan_pause = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD>ͣ
|
|||
|
cmd.area_scan_recovery = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>ָ<EFBFBD>
|
|||
|
cmd.area_scan_close = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>ر<EFBFBD>
|
|||
|
|
|||
|
cmd.set_zero = CMD_NOT_ALLOW;
|
|||
|
return cmd;
|
|||
|
}
|
|||
|
|
|||
|
if(g_area_scan.state >= AREA_SCAN_START && //<2F><>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8>״̬
|
|||
|
g_area_scan.state < AREA_SCAN_PAUSE_A)
|
|||
|
{
|
|||
|
cmd.manual_control = CMD_NOT_ALLOW;//<2F>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵȷ<D2B5><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.manual_stop = CMD_NOT_ALLOW;//<2F>ֶ<EFBFBD>ָֹͣ<D6B9><D6B8>
|
|||
|
|
|||
|
cmd.preset_bit_set = CMD_ALLOW;//Ԥ<><D4A4>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
cmd.preset_bit_del = CMD_ALLOW;//Ԥ<><D4A4>λɾ<CEBB><C9BE>
|
|||
|
cmd.preset_bit_call = CMD_NOT_ALLOW;//Ԥ<><D4A4>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
cmd.preset_bit_scan_start = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.preset_bit_scan_pause = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD><EFBFBD>ͣ
|
|||
|
cmd.preset_bit_scan_recovery = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD>ָ<EFBFBD>
|
|||
|
cmd.preset_bit_scan_close = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD>ر<EFBFBD>
|
|||
|
|
|||
|
cmd.area_set = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.area_scan_start = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.area_scan_pause = CMD_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD>ͣ
|
|||
|
cmd.area_scan_recovery = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>ָ<EFBFBD>
|
|||
|
cmd.area_scan_close = CMD_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>ر<EFBFBD>
|
|||
|
|
|||
|
cmd.set_zero = CMD_NOT_ALLOW;
|
|||
|
return cmd;
|
|||
|
}
|
|||
|
|
|||
|
if(g_area_scan.state >= AREA_SCAN_PAUSE_A && //<2F><>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD>ͣ״̬
|
|||
|
g_area_scan.state <= AREA_SCAN_PAUSE_B)
|
|||
|
{
|
|||
|
if(g_area_scan.state == AREA_SCAN_PAUSE_A)
|
|||
|
{
|
|||
|
cmd.manual_control = CMD_NOT_ALLOW;//<2F>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵȷ<D2B5><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.manual_stop = CMD_NOT_ALLOW;//<2F>ֶ<EFBFBD>ָֹͣ<D6B9><D6B8>
|
|||
|
|
|||
|
cmd.preset_bit_set = CMD_ALLOW;//Ԥ<><D4A4>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
cmd.preset_bit_del = CMD_ALLOW;//Ԥ<><D4A4>λɾ<CEBB><C9BE>
|
|||
|
cmd.preset_bit_call = CMD_NOT_ALLOW;//Ԥ<><D4A4>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
cmd.preset_bit_scan_start = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.preset_bit_scan_pause = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD><EFBFBD>ͣ
|
|||
|
cmd.preset_bit_scan_recovery = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD>ָ<EFBFBD>
|
|||
|
cmd.preset_bit_scan_close = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD>ر<EFBFBD>
|
|||
|
|
|||
|
cmd.area_set = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.area_scan_start = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.area_scan_pause = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD>ͣ
|
|||
|
cmd.area_scan_recovery = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>ָ<EFBFBD>
|
|||
|
cmd.area_scan_close = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>ر<EFBFBD>
|
|||
|
|
|||
|
cmd.set_zero = CMD_NOT_ALLOW;
|
|||
|
}
|
|||
|
if(g_area_scan.state == AREA_SCAN_PAUSE_B)
|
|||
|
{
|
|||
|
cmd.manual_control = CMD_ALLOW;//<2F>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵȷ<D2B5><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.manual_stop = CMD_ALLOW;//<2F>ֶ<EFBFBD>ָֹͣ<D6B9><D6B8>
|
|||
|
|
|||
|
cmd.preset_bit_set = CMD_ALLOW;//Ԥ<><D4A4>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
cmd.preset_bit_del = CMD_ALLOW;//Ԥ<><D4A4>λɾ<CEBB><C9BE>
|
|||
|
cmd.preset_bit_call = CMD_ALLOW;//Ԥ<><D4A4>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
cmd.preset_bit_scan_start = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.preset_bit_scan_pause = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD><EFBFBD>ͣ
|
|||
|
cmd.preset_bit_scan_recovery = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD>ָ<EFBFBD>
|
|||
|
cmd.preset_bit_scan_close = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD>ر<EFBFBD>
|
|||
|
|
|||
|
cmd.area_set = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.area_scan_start = CMD_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.area_scan_pause = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD>ͣ
|
|||
|
cmd.area_scan_recovery = CMD_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>ָ<EFBFBD>
|
|||
|
cmd.area_scan_close = CMD_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>ر<EFBFBD>
|
|||
|
|
|||
|
cmd.set_zero = CMD_NOT_ALLOW;
|
|||
|
}
|
|||
|
return cmd;
|
|||
|
}
|
|||
|
|
|||
|
if(g_area_scan.state >= AREA_SCAN_RECOVERY &&//<2F><>̨<EFBFBD><CCA8><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4>λɨ<CEBB><C9A8><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>
|
|||
|
g_area_scan.state <= AREA_SCAN_RECOVERY + 1)
|
|||
|
{
|
|||
|
cmd.manual_control = CMD_NOT_ALLOW;//<2F>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵȷ<D2B5><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.manual_stop = CMD_NOT_ALLOW;//<2F>ֶ<EFBFBD>ָֹͣ<D6B9><D6B8>
|
|||
|
|
|||
|
cmd.preset_bit_set = CMD_ALLOW;//Ԥ<><D4A4>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
cmd.preset_bit_del = CMD_ALLOW;//Ԥ<><D4A4>λɾ<CEBB><C9BE>
|
|||
|
cmd.preset_bit_call = CMD_NOT_ALLOW;//Ԥ<><D4A4>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
cmd.preset_bit_scan_start = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.preset_bit_scan_pause = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD><EFBFBD>ͣ
|
|||
|
cmd.preset_bit_scan_recovery = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD>ָ<EFBFBD>
|
|||
|
cmd.preset_bit_scan_close = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD>ر<EFBFBD>
|
|||
|
|
|||
|
cmd.area_set = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.area_scan_start = CMD_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.area_scan_pause = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD>ͣ
|
|||
|
cmd.area_scan_recovery = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>ָ<EFBFBD>
|
|||
|
cmd.area_scan_close = CMD_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>ر<EFBFBD>
|
|||
|
|
|||
|
cmd.set_zero = CMD_NOT_ALLOW;
|
|||
|
|
|||
|
return cmd;
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
cmd.manual_control = CMD_ALLOW;//<2F>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵȷ<D2B5><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.manual_stop = CMD_ALLOW;//<2F>ֶ<EFBFBD>ָֹͣ<D6B9><D6B8>
|
|||
|
|
|||
|
cmd.preset_bit_set = CMD_ALLOW;//Ԥ<><D4A4>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
cmd.preset_bit_del = CMD_ALLOW;//Ԥ<><D4A4>λɾ<CEBB><C9BE>
|
|||
|
cmd.preset_bit_call = CMD_ALLOW;//Ԥ<><D4A4>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
cmd.preset_bit_scan_start = CMD_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.preset_bit_scan_pause = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD><EFBFBD>ͣ
|
|||
|
cmd.preset_bit_scan_recovery = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD>ָ<EFBFBD>
|
|||
|
cmd.preset_bit_scan_close = CMD_NOT_ALLOW;//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD>ر<EFBFBD>
|
|||
|
|
|||
|
cmd.area_set = CMD_ALLOW;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.area_scan_start = CMD_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmd.area_scan_pause = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD>ͣ
|
|||
|
cmd.area_scan_recovery = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>ָ<EFBFBD>
|
|||
|
cmd.area_scan_close = CMD_NOT_ALLOW;//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>ر<EFBFBD>
|
|||
|
|
|||
|
cmd.set_zero = CMD_ALLOW;
|
|||
|
return cmd;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
//<2F><>̨<EFBFBD><CCA8><EFBFBD><EFBFBD>ģʽ<C4A3>ж<EFBFBD>
|
|||
|
PtzWorkMode ptz_work_mode_judge()
|
|||
|
{
|
|||
|
PtzWorkMode mode;
|
|||
|
//<2F><>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>״̬
|
|||
|
if(g_ptz.hori_self_check != PTZ_HORI_SELF_CHECK_END ||
|
|||
|
g_ptz.vert_self_check != PTZ_VERT_SELF_CHECK_END)
|
|||
|
{
|
|||
|
mode.mode = SELF_CHECKING;
|
|||
|
mode.data_a = g_ptz.hori_self_check;
|
|||
|
mode.data_b = g_ptz.vert_self_check;
|
|||
|
return mode;
|
|||
|
}
|
|||
|
//<2F><>̨<EFBFBD><CCA8><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD>״̬
|
|||
|
if(g_ptz.fault_detect.fault == FAULT)
|
|||
|
{
|
|||
|
if(g_ptz.fault_detect.hori_rotate_fault == FAULT)
|
|||
|
{//ֻ<><D6BB>ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
|
|||
|
mode.mode = MOTOR_HORI_CANNOT_ROT;
|
|||
|
}
|
|||
|
if(g_ptz.fault_detect.vert_rotate_fault == FAULT)
|
|||
|
{//ֻ<><D6BB>ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
|
|||
|
mode.mode = MOTOR_VERT_CANNOT_ROT;
|
|||
|
}
|
|||
|
if(g_ptz.fault_detect.vert_rotate_fault == FAULT && //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
|
|||
|
g_ptz.fault_detect.hori_rotate_fault == FAULT)
|
|||
|
{
|
|||
|
mode.mode = MOTOR_HOVE_CANNOT_ROT;
|
|||
|
}
|
|||
|
mode.data_a = g_ptz.hori_start_stop_set;
|
|||
|
mode.data_b = g_ptz.vert_start_stop_set;
|
|||
|
return mode;
|
|||
|
}
|
|||
|
//<2F><>̨<EFBFBD><CCA8><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4>λɨ<CEBB><C9A8>״̬
|
|||
|
if(g_preset_bit_scan.state >= PRESET_BIT_SCAN_START &&
|
|||
|
g_preset_bit_scan.state <= PRESET_BIT_SCAN_START + 4)
|
|||
|
{
|
|||
|
mode.mode = PP_SCANING;
|
|||
|
mode.data_a = g_preset_bit_scan.state;
|
|||
|
mode.data_b = g_preset_bit_scan.actual_num;
|
|||
|
return mode;
|
|||
|
}
|
|||
|
//<2F><>̨<EFBFBD><CCA8><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4>λɨ<CEBB><C9A8><EFBFBD><EFBFBD>ͣ״̬
|
|||
|
if(g_preset_bit_scan.state == PRESET_BIT_SCAN_PAUSE_A ||
|
|||
|
g_preset_bit_scan.state == PRESET_BIT_SCAN_PAUSE_B)
|
|||
|
{
|
|||
|
mode.mode = PP_PAUSING;
|
|||
|
mode.data_a = g_preset_bit_scan.state;
|
|||
|
mode.data_b = g_preset_bit_scan.actual_num;
|
|||
|
return mode;
|
|||
|
}
|
|||
|
|
|||
|
if(g_preset_bit_scan.state == PRESET_BIT_SCAN_RECOVERY)//Ԥ<><D4A4>λɨ<CEBB><C9A8><EFBFBD>ָ<EFBFBD>״̬<D7B4><CCAC>
|
|||
|
{
|
|||
|
mode.mode = PP_RECOING;
|
|||
|
mode.data_a = g_preset_bit_scan.state;
|
|||
|
mode.data_b = g_preset_bit_scan.actual_num;
|
|||
|
return mode;
|
|||
|
}
|
|||
|
|
|||
|
if(g_area_scan.state >= AREA_SCAN_START && //<2F><>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8>״̬
|
|||
|
g_area_scan.state < AREA_SCAN_PAUSE_A)
|
|||
|
{
|
|||
|
mode.mode = AREA_SCANING;
|
|||
|
mode.data_a = g_area_scan.state;
|
|||
|
mode.data_b = g_area_scan.actual_num;
|
|||
|
return mode;
|
|||
|
}
|
|||
|
|
|||
|
if(g_area_scan.state >= AREA_SCAN_PAUSE_A && //<2F><>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD>ͣ״̬
|
|||
|
g_area_scan.state <= AREA_SCAN_PAUSE_B)
|
|||
|
{
|
|||
|
mode.mode = AREA_PAUSING;
|
|||
|
mode.data_a = g_area_scan.state;
|
|||
|
mode.data_b = g_area_scan.actual_num;
|
|||
|
return mode;
|
|||
|
}
|
|||
|
|
|||
|
if(g_area_scan.state >= AREA_SCAN_RECOVERY &&//<2F><>̨<EFBFBD><CCA8><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4>λɨ<CEBB><C9A8><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>
|
|||
|
g_area_scan.state <= AREA_SCAN_RECOVERY + 1)
|
|||
|
{
|
|||
|
mode.mode = AREA_RECOING;
|
|||
|
mode.data_a = g_area_scan.state;
|
|||
|
mode.data_b = g_area_scan.actual_num;
|
|||
|
return mode;
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
mode.mode = OTHER_MODE;
|
|||
|
mode.data_a = g_ptz.hori_start_stop_set;
|
|||
|
mode.data_b = g_ptz.vert_start_stop_set;
|
|||
|
return mode;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><CCA8>ǰ<EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD>ģʽ
|
|||
|
void ptz_send_work_mode(char dev)
|
|||
|
{
|
|||
|
unsigned char work_mode[7] = {0xff,0x00,0x00,0x00,0x00,0x00,0x00};
|
|||
|
PtzWorkMode ptz_mode;
|
|||
|
ptz_mode = ptz_work_mode_judge();
|
|||
|
work_mode[1] = g_ptz.address;
|
|||
|
work_mode[2] = 0xe0;
|
|||
|
work_mode[3] = ptz_mode.mode;
|
|||
|
work_mode[4] = ptz_mode.data_a;
|
|||
|
work_mode[5] = ptz_mode.data_b;
|
|||
|
work_mode[6] = MotorCalPelcoDSUM(work_mode,sizeof(work_mode));
|
|||
|
|
|||
|
ptz_send_data(dev,work_mode, sizeof(work_mode));
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|