void Set_Calibration_Point1(int x, int y) { if (number_calibration_points_set<CALIBRATIONPOINTS) { //store xy mouse "scene" coordinates into calibration array scenecalipoints[number_calibration_points_set].x = x; scenecalipoints[number_calibration_points_set].y = y; //grab the "pupil" position pucalipoints[number_calibration_points_set].x = pupil.x; pucalipoints[number_calibration_points_set].y = pupil.y; //grab the "corneal reflection" points //crcalipoints[number_calibration_points_set].x = corneal_reflection.x; //crcalipoints[number_calibration_points_set].y = corneal_reflection.y; //grab the "delta pupil cr" position vectors[number_calibration_points_set].x = pupil.x; vectors[number_calibration_points_set].y = pupil.y; number_calibration_points_set++; } else { Zero_Calibration(); } }
/******************************************************************************* 函数名: Status_Tran 函数作用: 根据按键、温度判断等控制状态转换 输入参数: NULL 返回参数: NULL *******************************************************************************/ void Status_Tran(void)//状态转换 { static u16 init_waitingtime = 0;//初始待机时间标志位: 0=> 未初始化,1=>已初始化 static u8 back_prestatus = 0; s16 heat_timecnt = 0,wk_temp; u16 mma_active; switch (Get_CtrlStatus()) { case IDLE: switch(Get_gKey()) { case KEY_V1: if(gIs_restartkey != 1) { if(Read_Vb(1) < 4) { Set_CtrlStatus(TEMP_CTR); init_waitingtime = 0; TEMPSHOW_TIMER = 0; UI_TIMER = 0; G6_TIMER = 0; } } break; case KEY_V2: if(gIs_restartkey != 1) { Set_CtrlStatus(THERMOMETER); UI_TIMER = 0; Set_LongKeyFlag(1); } break; case KEY_CN|KEY_V3: break; } if(gIs_restartkey && (KD_TIMER == 0)) { gIs_restartkey = 0; Set_gKey(NO_KEY); } if(Read_Vb(1) == 0){ if(Get_UpdataFlag() == 1) Set_UpdataFlag(0); Set_CtrlStatus(ALARM); } if(gPre_status != WAIT && gPre_status != IDLE){ G6_TIMER = device_info.idle_time; Set_gKey(NO_KEY); gPre_status = IDLE; } break; case TEMP_CTR: switch(Get_gKey()) { case KEY_CN|KEY_V1: case KEY_CN|KEY_V2: Set_HeatingTime(0); Set_CtrlStatus(TEMP_SET); HEATING_TIMER = 0; EFFECTIVE_KEY_TIMER = 500; break; case KEY_CN|KEY_V3: Set_HeatingTime(0); Set_LongKeyFlag(0); Set_CtrlStatus(IDLE); gPre_status = TEMP_CTR; gIs_restartkey = 1; KD_TIMER = 50; // break; } if(Read_Vb(1) >= 4) { Set_HeatingTime(0); Set_LongKeyFlag(0); Set_CtrlStatus(IDLE); gPre_status = TEMP_CTR; gIs_restartkey = 1; KD_TIMER = 50; // 2秒 } wk_temp = device_info.t_work; if(HEATING_TIMER == 0) { gTemp_data = Get_Temp(wk_temp); heat_timecnt = Heating_Time(gTemp_data,wk_temp); //计算加热时间 Set_HeatingTime(heat_timecnt); HEATING_TIMER = HEATINGCYCLE; } if(Get_HeatingTime() == 0) { HEATING_TIMER = 0; } mma_active = Get_MmaShift(); if(mma_active == 0) { //MMA_active = 0 ==> static ,MMA_active = 1 ==>move if(init_waitingtime == 0) { init_waitingtime = 1; ENTER_WAIT_TIMER = device_info.wait_time; } if((init_waitingtime != 0) && (ENTER_WAIT_TIMER == 0)) { gHt_flag = 0; UI_TIMER = 0; Set_HeatingTime(0); Set_gKey(0); G6_TIMER = device_info.idle_time; Set_CtrlStatus(WAIT); } } else { init_waitingtime = 0; } if(Get_AlarmType() > NORMAL_TEMP) { //////////////////警告 if(Get_UpdataFlag() == 1) Set_UpdataFlag(0); Set_CtrlStatus(ALARM); } break; case WAIT: wk_temp = device_info.t_standby; if(device_info.t_standby > device_info.t_work) { //休眠温度比工作温度高 wk_temp = device_info.t_work; } if(HEATING_TIMER == 0) { gTemp_data = Get_Temp(wk_temp); heat_timecnt = Heating_Time(gTemp_data,wk_temp); //计算加热时间 Set_HeatingTime(heat_timecnt); HEATING_TIMER = 30; } if(Read_Vb(1) >= 4) { Set_HeatingTime(0); Set_LongKeyFlag(0); Set_CtrlStatus(IDLE); G6_TIMER = device_info.idle_time; gPre_status = WAIT; gIs_restartkey = 1; KD_TIMER = 50; // 2秒 } if(G6_TIMER == 0) { //进入待机 Set_HeatingTime(0); Set_LongKeyFlag(0); gIs_restartkey = 1; KD_TIMER = 200; // 2秒 gPre_status = WAIT; Set_CtrlStatus(IDLE); } mma_active = Get_MmaShift(); if(mma_active == 1 || Get_gKey() != 0) { UI_TIMER = 0; G6_TIMER = 0; init_waitingtime = 0; Set_CtrlStatus(TEMP_CTR); } if(Get_AlarmType() > NORMAL_TEMP) { //////////////////警告 if(Get_UpdataFlag() == 1) Set_UpdataFlag(0); Set_CtrlStatus(ALARM); } break; case TEMP_SET: if(EFFECTIVE_KEY_TIMER == 0) { Set_CtrlStatus(TEMP_CTR); TEMPSHOW_TIMER = 0; } break; case THERMOMETER: if(KD_TIMER > 0) { Set_gKey(NO_KEY); break; } switch(Get_gKey()) { case KEY_CN|KEY_V1: case KEY_CN|KEY_V2: back_prestatus = 1; break; case KEY_CN|KEY_V3: Zero_Calibration(); if(Get_CalFlag() == 1) { Disk_BuffInit(); Config_Analysis(); // 启动虚拟U盘 } KD_TIMER = 200; //20150717 修改 break; default: break; } if(back_prestatus == 1) { back_prestatus = 0; Set_HeatingTime(0); Set_CtrlStatus(IDLE); gPre_status = THERMOMETER; gIs_restartkey = 1; Set_LongKeyFlag(0); KD_TIMER = 50; // } break; case ALARM: switch(Get_AlarmType()) { case HIGH_TEMP: case SEN_ERR: wk_temp = device_info.t_work; gTemp_data = Get_Temp(wk_temp); if(Get_AlarmType() == NORMAL_TEMP) { Set_CtrlStatus(TEMP_CTR); Set_UpdataFlag(0); } break; case HIGH_VOLTAGE: case LOW_VOLTAGE: if(Read_Vb(1) >= 1 && Read_Vb(1) <= 3) { Set_HeatingTime(0); Set_LongKeyFlag(0); gIs_restartkey = 1; UI_TIMER = 2; // 2秒 gPre_status = THERMOMETER; Set_CtrlStatus(IDLE); } break; } if(Get_HeatingTime != 0) { Set_HeatingTime(0) ; //马上停止加热 HEAT_OFF(); } break; default: break; } }