Example #1
0
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();

   }
}
Example #2
0
/*******************************************************************************
函数名: 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;
    }
}