/*
 * @brief:  system state update 
 *
 * @param:  None
 * @retval: None
 */
void system_state_refresh(void)
{
    _key_scan();
    if(key_struct.medium_press_flag == true)
    {
        _shutdown();
    }
    if(key_struct.long_press_flag == true)
    {
        _reboot();
    }
}
Beispiel #2
0
char _key_string(char __mode) {
    unsigned char	 __chr = 0, __i = 0;
    uint8_t  __key = 0;

    if(__mode==0) {
        CURSOR_SHOW;
        while(1) {
            __key = _key_scan(_PAD_SINGLE);
            if(__key==_KEY_NULL || __key==_KEY_TIKET || __key==_KEY_MENU || __key==_KEY_SHIFT);
            else if(__key==_KEY_CANCEL) {
                __chr_count = 0;
                CURSOR_HIDE;
                _SHIFT_OFF;//
                return 1;
            }
            else if(__key==_KEY_ENTER) {
                __chr_count = 0;
                CURSOR_HIDE;
                _SHIFT_OFF;//
                return 0;
            }
            else if(__key==_KEY_CLEAR) {
                if(__chr_count>0) {
                    _LCD_LEFT;
                    _lcd(0x10);
                    _LCD_LEFT;
                    __buf_string[__chr_count-1] = '\0';
                    __chr_count--;
                }
            }
            else {
                if(__chr_count<__max_string) {
                    _lcd(_table_alphanum(0, __key, 0));
                    __buf_string[__chr_count] = _table_alphanum(0, __key, 0);
                    __buf_string[__chr_count + 1] = '\0';
                    __chr_count++;
                }
            }
        }
    }
    if(__mode==_STRING_ALPHANUM) {
        while(1) {
            CURSOR_SHOW;
            __key = _key_scan(_PAD_MULTI);
            if(__key == _KEY_NULL || __key == _KEY_TIKET || __key == _KEY_MENU);
            else if(__key == _KEY_CANCEL) {
                CURSOR_HIDE;
                _SHIFT_OFF;
                return 1;
            }
            else if(__key == _KEY_ENTER) {
                CURSOR_HIDE;
                _SHIFT_OFF;
                return 0;
            }
            else if(__key == _KEY_SHIFT) {
                __caps_lock = __caps_lock ^ 1;
            }
            else if(__key == _KEY_CLEAR) {
                if(__chr_count > 0) {
                    if(!__key_shift) {
                        _LCD_LEFT;
                        _lcd(0x10);
                        _LCD_LEFT;
                        __buf_string[__chr_count - 1] = '\0';
                        __chr_count--;
                        if(__chr_count == 19) {
                            lcd_put(2, 20, 0x10);
                            lcd_xy(2, 20);
                        }
                        _SHIFT_OFF;
                        CURSOR_SHOW;
                        //_SHIFT_FREE;
                    }
                }
            }
            else {
                if(__chr_count < __max_string) {
                    if(__key != __buf_anum) {
                        __buf_anum = __key;
                        __hit_count = 0;
                        if(__key_shift == 1 && __buf_anum != 0) {
                            _LCD_RIGHT;
                            __chr_count++;
                            if(__chr_count == 20)
                                lcd_xy(3, 1);
                        }
                    }
                    else {
                        __hit_count++;
                    }
                    __chr = _table_alphanum(__caps_lock, __key, __hit_count);
                    if(__chr == '\0') {
                        __hit_count = 0;
                        __chr = _table_alphanum(__caps_lock, __key, __hit_count);
                    }
                    if(__chr_count < __max_string) {
                        _lcd(__chr);
                        _LCD_LEFT;
                        __buf_string[__chr_count] = __chr;
                        __buf_string[__chr_count + 1] = '\0';
                    }
                }
                CURSOR_SHOW;
                //else _SHIFT_LOCK;
            }
        }
    }
    if(__mode==_STRING_PASSWORD) {
        CURSOR_SHOW;
        while(1) {
            __key = _key_scan(_PAD_SINGLE);
            if(__key==_KEY_NULL || __key==_KEY_TIKET || __key==_KEY_MENU || __key==_KEY_SHIFT);
            else if(__key==_KEY_CANCEL) {
                __chr_count = 0;
                CURSOR_HIDE;
                return 1;
            }
            else if(__key==_KEY_ENTER) {
                __chr_count = 0;
                CURSOR_HIDE;
                return 0;
            }
            else if(__key==_KEY_CLEAR) {
                if(__chr_count>0) {
                    _LCD_LEFT;
                    _lcd(0x10);
                    _LCD_LEFT;
                    __buf_string[__chr_count-1] = '\0';
                    __chr_count--;
                }
            }
            else {
                if(__chr_count<__max_string) {
                    _lcd(0x2a);
                    __buf_string[__chr_count] = _table_alphanum(0, __key, 0);
                    __buf_string[__chr_count + 1] = '\0';
                    __chr_count++;
                }
            }
        }
    }
    if(__mode==_STRING_VALUE) {
        for(__i=0; __i<__max_string; __i++)
            _lcd('0');
        while(1) {
            __key = _key_scan(_PAD_SINGLE);
            if(__key==_KEY_NULL || __key==_KEY_TIKET || __key==_KEY_MENU || __key==_KEY_SHIFT || __key==_KEY_CLEAR);
            else if(__key==_KEY_CANCEL) {
                __chr_count = 0;
                CURSOR_HIDE;
                return 1;
            }
            else if(__key==_KEY_ENTER) {
                __chr_count = 0;
                CURSOR_HIDE;
                return 0;
            }
            else {
                for(__i=0; __i<__max_string - 1; __i++)
                    __buf_string[__i] = __buf_string[__i + 1];
                __buf_string[__max_string - 1] = _table_alphanum(0, __key, 0);
                __buf_string[__max_string] = '\0';
                for(__i=0; __i<__max_string; __i++)
                    _LCD_LEFT;
                for(__i=0; __i<__max_string; __i++)
                    _lcd(__buf_string[__i]);
            }
        }
    }
    return 0;
}