uint8_t arrow_function(void){


	uint8_t   ascii_code=0;			// Variável para receber valor ascii
	static uint8_t   menu=0;			// Variável para definir qual a escolhas será feita no menu
	ascii_code=GetKey();        // GetKey retorna valor ascii apenas 1 vez quando tem algum novo

	if (ascii_code==6){
		menu=1;
		LCD_DrawFullRect(0, 0, 240, 320, LCD_COLOR_BLACK);	//Imprime retângulo branco do tamanha da tela(apaga tudo)
		LCD_DrawFullRect(35, 60, 170, 80, aktColor);
		imprimir_menu();
	}
	if (ascii_code==7){
		menu=2;
		LCD_DrawFullRect(0, 0, 240, 320, LCD_COLOR_BLACK);	//Imprime retângulo branco do tamanha da tela(apaga tudo)
		LCD_DrawFullRect(35, 190, 170, 80, aktColor);
		imprimir_menu();
	}

	if (ascii_code==4)
	return(menu);
	else
	return(0);
}
Esempio n. 2
0
int main(){

    int salir=0; //Flag para cerrar el programa
    int opcion; //variable aux para guardar la opcion
    while(salir==0){
        opcion=-1; //solamente para q no qued guardada la ultima opcion
        imprimir_menu();

        fflush(stdin);
        scanf("%d",&opcion); //obtengo la nueva opcion

        if(opcion==3)salir=1;
        else if(opcion==1)agregar_invitado();
        else if(opcion==2)ver_invitados();
    }

    return 0;
}
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();

	  }
	}
}