//-------------------------------------------------------------- // prüft und aktuallisiert die GUI // GUI ein- oder ausblenden // oder einen aktiven Menupunkt aendern //-------------------------------------------------------------- MENU_Status_t menu_check_touch(void) { MENU_Status_t ret_wert=MENU_NO_CHANGE; uint16_t x,y; static uint16_t x_old=999,y_old=999; static uint16_t gui_changed=0; //------------------------ // Touch auslesen //------------------------ UB_Touch_Read(); if(Touch_Data.status==TOUCH_PRESSED) { // Touch ist betätigt x=Touch_Data.xp; y=Touch_Data.yp; if((x!=x_old) || (y!=y_old)) { x_old=x; y_old=y; } else { if(GUI.gui_xpos==GUI_XPOS_OFF) { // GUI ist im Moment noch AUS if(gui_changed==0) { // GUI einschalten (an einer von 3 positionen) GUI.gui_xpos=GUI_XPOS_RIGHT; if(y<GUI_XPOS_RIGHT) GUI.gui_xpos=GUI_XPOS_MID; if(y<GUI_XPOS_MID) GUI.gui_xpos=GUI_XPOS_LEFT; GUI.akt_menu=GUI.old_menu; gui_changed=1; ret_wert=MENU_CHANGE_GUI; } } else if(GUI.gui_xpos==GUI_XPOS_RIGHT) { // GUI-rechts ist aktiv if(gui_changed==0) { if(y<GUI_XPOS_RIGHT) { // GUI ausschalten GUI.gui_xpos=GUI_XPOS_OFF; GUI.old_menu=GUI.akt_menu; GUI.akt_menu=MM_NONE; gui_changed=1; ret_wert=MENU_CHANGE_GUI; } else { // GUI check p_get_GUI_button(x,y); ret_wert=p_make_GUI_changes(); } } } else if(GUI.gui_xpos==GUI_XPOS_LEFT) { // GUI-links ist aktiv if(gui_changed==0) { if(y>GUI_XPOS_MID) { // GUI ausschalten GUI.gui_xpos=GUI_XPOS_OFF; GUI.old_menu=GUI.akt_menu; GUI.akt_menu=MM_NONE; gui_changed=1; ret_wert=MENU_CHANGE_GUI; } else { // GUI check p_get_GUI_button(x,y); ret_wert=p_make_GUI_changes(); } } } else { // GUI-mitte ist aktiv if(gui_changed==0) { if((y<GUI_XPOS_MID) || (y>GUI_XPOS_RIGHT)) { // GUI ausschalten GUI.gui_xpos=GUI_XPOS_OFF; GUI.old_menu=GUI.akt_menu; GUI.akt_menu=MM_NONE; gui_changed=1; ret_wert=MENU_CHANGE_GUI; } else { // GUI check p_get_GUI_button(x,y); ret_wert=p_make_GUI_changes(); } } } // beim senden von Daten die GUI abschalten if(ret_wert==MENU_SEND_DATA) { // GUI ausschalten GUI.gui_xpos=GUI_XPOS_OFF; GUI.old_menu=MM_SETTING; GUI.akt_menu=MM_NONE; gui_changed=1; if(Menu.send.mode==6) { // auf gewaehltes Menu umschalten if(Menu.send.screen==0) Menu.akt_setting=SETTING_TRIGGER; if(Menu.send.screen==1) Menu.akt_setting=SETTING_CURSOR; } else { Menu.akt_setting=SETTING_SEND; } } } } else { // Touch ist nicht betätigt gui_changed=0; if(GUI.old_button!=GUI_BTN_NONE) { ret_wert=MENU_CHANGE_GUI; } GUI.akt_button=GUI_BTN_NONE; GUI.old_button=GUI_BTN_NONE; } return(ret_wert); }
int main(void) { SystemInit(); // Configurações e inicialização do clock UB_LCD_Init(); // Inicialização LCD UB_LCD_LayerInit_Fullscreen(); // Inicialização da camadas da tela UB_LCD_SetLayer_1(); // Inicialização da camadas do fundo UB_LCD_FillLayer(RGB_COL_WHITE); // Cor do fundo UB_LCD_SetLayer_2(); // Inicialização da camadas em primeiro plano UB_LCD_FillLayer(RGB_COL_WHITE); // Cor do primeiro plano CurrentFrameBuffer=LCD_FRAME_BUFFER + LCD_FRAME_OFFSET; // Variáveis de controle da tela aktColor=LCD_COLOR_BLUE; // Variável para armazenar cor de preferência menu=0; //Programa inicia no menu inicial if(UB_Touch_Init()!=SUCCESS) // Verifica se a inicialização da tela sensível ao toque ocorreu corretamente { UB_Font_DrawString(10,28,"Touch error",&Arial_11x20,RGB_COL_WHITE,RGB_COL_RED); //Imprime mensagem de erro UB_Font_DrawString(10,46,"Reconecte a energia",&Arial_11x20,RGB_COL_WHITE,RGB_COL_RED); while(1); //Impede o progresso das demais rotinas } USB_HID_HOST_STATUS_t host_status; // Variável para armazenar o estado da comunicação USB USB_Init(); // Inicializações para utilizar USB while(1){ LCD_DrawFullRect(0, 0, 240, 320, LCD_COLOR_BLACK); // Imprime retângulo branco do tamanha da tela(apaga tudo) imprimir_menu(); // Imprime grafismo do menu inicial //-------------------------------------------------------------- while(menu==0) // Enquanto menu==0 o programa fica no menu inicial { host_status=USB_Function(); // Esta função deve ser chamada periodicamente para o funcionamento do teclado if(host_status!=USB_HID_DEV_DETACHED) // Se o USB não tiver sido desconectado menu = arrow_function(); // Chama função que controla o selecionamento do menu UB_Touch_Read(); // Lê informações do touch if(Touch_Data.status==TOUCH_PRESSED) { if((Touch_Data.yp < 130) && (Touch_Data.yp >= 70)) { // Verifica limites da região de um botão touch na tela if((Touch_Data.xp < 215) && (Touch_Data.xp > 45)) { menu=1; // Se o toque ocorreu muda o estado do programa } } } if(Touch_Data.status==TOUCH_PRESSED) { if((Touch_Data.yp < 260) && (Touch_Data.yp >= 200)) { // Verifica limites da região de um botão touch na tela if((Touch_Data.xp < 215) && (Touch_Data.xp > 45)) { menu=2; // Se o toque ocorreu muda o estado do programa } } } if(menu==1){ // menu==1 equivale ao modo de Digitação pos.x = 10; // Posições onde o cursor de digitação começa pos.y = 10; LCD_DrawFullRect(0, 0, 240, 320, LCD_COLOR_WHITE); // Imprime retângulo branco do tamanha da tela(apaga tudo) } if(menu==2){ // menu==2 equivale ao modo de Opções LCD_DrawFullRect(0, 0, 240, 320, LCD_COLOR_WHITE); // Imprime retângulo branco do tamanha da tela(apaga tudo) UB_Font_DrawString(10,10,"Cor do texto",&Arial_11x20,aktColor,RGB_COL_WHITE); //Imprime mensagem } } while(menu==1) // menu==1 equivale ao modo de Digitação { host_status=USB_Function(); //Esta função deve ser chamada periodicamente para o funcionamento do teclado UB_Touch_Read(); //Leitura do Touch LCD_DrawLine(pos.x,pos.y, 20, LCD_DIR_VERTICAL, RGB_COL_WHITE); if(Touch_Data.status==TOUCH_PRESSED) { if((Touch_Data.yp < 317) && (Touch_Data.yp >= 3)) { // Verifica se touch foi na tela( para evitar erros} if((Touch_Data.xp < 237) && (Touch_Data.xp > 3)) { pos.x=Touch_Data.xp; // Posiciona o cursor sobre o local tocado pos.y=Touch_Data.yp; LCD_DrawLine(pos.x,pos.y, 20, LCD_DIR_VERTICAL, RGB_COL_WHITE); } } } if(host_status!=USB_HID_DEV_DETACHED) //Se o USB não tiver sido desconectado pos = key_function(pos); //Interpreta todas teclas e funções do teclado, retorna posição do cursor if(host_status==USB_HID_DEV_CONNECTED) //Se o USB for reconectado LCD_DrawFullRect(0, 302, 240, 320, LCD_COLOR_WHITE); //Apaga mensagem pedindo para conectar if(host_status==USB_HID_DEV_DETACHED) //Se o USB for desconectado UB_Font_DrawString(10,302,"Teclado desconectado",&Arial_11x20,RGB_COL_RED,RGB_COL_WHITE); //Imprime mensagem } while(menu==2) // menu==2 equivale ao modo de Opções { host_status=USB_Function(); //Esta função deve ser chamada periodicamente para o funcionamento do teclado if(host_status!=USB_HID_DEV_DETACHED) //Se o USB não tiver sido desconectado menu = opcoes(); } } }