Пример #1
0
void draw_menu(void)
{
	struct m_item* mi_child;
	uint8_t index_temp = 0;
	uint8_t i = 0;

	Disp_Clear();
	
	if(menu_type)
	{
		XY_Str(2,0,(*mi_entry).text);
		mi_child = (*mi_entry).child;
		XY_Str(1,1,(*mi_child).text);
		mi_child = (*mi_child).next;
		XY_Str(8,1,(*mi_child).text);
		
		if(arrow_Pos_H == 0)
			XY_Char(0,1,m_arrow);
		else
			XY_Char(7,1,m_arrow);
	}
	else
	{
		Locate_xy(0,0);
		Disp_Str((*mi_entry).text);
		
		Locate_xy(4,0);
		Disp_Char('.');
		Disp_Char('|');
		
		if(arrow_Pos_V == 0)
		{
			index_temp = mi_index;
			Disp_Char(m_arrow);
		}
		else
		{		
			index_temp = mi_index - 1;
			XY_Char(6,1,m_arrow);
		}
		
		Locate_xy(5,1);
		Disp_Char('|');
		
		mi_child = (*mi_entry).child;
		for(i=0;i<2;i++)
		{
			while((*mi_child).index != index_temp + i)
				mi_child = (*mi_child).next;
				
			XY_Str(7,i,(*mi_child).text);
			if((*mi_child).child == 0)
				XY_Char(15,i,'|');
			else
				XY_Char(15,i,'>');
		}
	}
}
Пример #2
0
/**************************************************************   
*  函数说明:目录显示函数                                     *   
**************************************************************/   
void ShowMenu(void)   
{   
    unsigned char n = 0; 
    MaxItems = MenuPoint[0].MenuCount;   
    DisplayPoint = DisplayStart;    
	for(n = 0;n<MaxItems;n++)   
	{   				  
		Disp_Str(n,0,MenuPoint[DisplayPoint++].DisplayString);
	}
	Set_Cursor(1,1);
}   
Пример #3
0
/**************************************************************   
*  函数说明:电机参数设置函数                         *   
**************************************************************/  
void SetMotor(void)
{
	uint8 esc_flag = 0;
	uint8 count = 0;

    Disp_Str_eeprom(1,3,str_speed);
	Disp_Str_eeprom(2,3,divid);
    if(run_type == Horizon)
    {
    	Disp_Str(3,3,"水平");
    }
    else
    {
    	Disp_Str(3,3,"垂直");
    }

	UserChooseR = 1;
	UserChooseC = 4;
    Set_Cursor(UserChooseR,UserChooseC);
	while(!esc_flag)
	{
        if(time_10ms)  //10ms定时扫描键盘    
        { 
        time_10ms = 0; 
        *pRockValue=No_rock;
        rocker_type = Read_Rocker(pRockValue);
		if(rocker_type & keyPressed)
		{
			switch(*pRockValue)   
			{      
				case  Down:   
					  UserChooseR ++;   
					  if(UserChooseR == 4)   
					  {   
						UserChooseR = 1;   
					  }   
					  break;
				case  Left:	
					  UserChooseC --;   
					  if(UserChooseC == 2)   
					  {	
					    UserChooseC = 4;	 
					  }	
					  break;
			}			

            Set_Cursor(UserChooseR,UserChooseC);
		}


		key_value= Read_keyboard();
		if(key_value != No_key)
		{
	        switch(key_value)
	        {
	        	case Esc:
						if(MenuPoint[UserChooseR].ParentMenus != NULL) 
						{ 
						 MenuPoint = MenuPoint[UserChooseR].ParentMenus; 
						 UserChooseR = 0; 
						 UserChooseC = 0;
						 //DisplayStart = 0; 
						} 
						esc_flag = 1;
						break;	
	        	case OK:
					    //Set_Mode();
	  				 	break;
				default:
						switch(UserChooseR)
						{
							case 1:
									if(UserChooseC==3)
									{
										if(count==0)
											str_speed[0] = key_value + 0x30;
										else
											str_speed[1] = key_value + 0x30;
									}
									if(UserChooseC==4)
									{
										if(count==0)
											str_speed[2] = key_value + 0x30;
										else
											str_speed[3] = key_value + 0x30;
									}
									Disp_Str_eeprom(0,3,str_speed);
                                    int_speed = Str2Int(str_speed);
									break;
							case 2:
									if(UserChooseC==3)
									{
										if(count==0)
											divid[0] = key_value + 0x30;
										else
											divid[1] = key_value + 0x30;
									}
									if(UserChooseC==4)
									{
										if(count==0)
											divid[2] = key_value + 0x30;
										else
											divid[3] = key_value + 0x30;
									}
									Disp_Str_eeprom(2,3,divid);
                                    subdiv = Str2Int(divid);
									break;
							case 3:
                                    //待添加功能
									break;
						}			

			}

			count = count + 1;
			if(count==2)
				count = 0;	

		}
	
    	}		
	} 
      
	moto_set(int_speed,subdiv);
	Clear_Scr();
	ShowMenu();
}
Пример #4
0
/**************************************************************   
*  函数说明:光传感器设置函数                         *   
**************************************************************/  
void SetSensor(void)
{

    char *str_AV = (char *) malloc(5); 
    char *str_TV = (char *) malloc(8); 
    char *str_ISO = (char *) malloc(5);
    char *str_coef = (char *) malloc(5);
    char *str_HDR = (char *) malloc(2);
    char *str_ND = (char *) malloc(3);
    
	uint8 AV_NO = 1;
    uint8 esc_flag = 0;
    uint8 time_cnt = 0;
     
    float coef,AV;
    uint32 int_TV;
    uint16 ISO;
    uint8 HDR,ND;
    
    Set_Mode(OFF);
    
    ISO = 100 << e_ISO; 
    itoa(ISO,str_ISO);
    Disp_Str1(0,5,str_ISO);
    
    AV = e_AV;
    ftoa(AV,1,str_AV);
    Disp_Str1(0,1,str_AV);
    
    coef = e_coef;
    ftoa(coef,2,str_coef);
    Disp_Str1(2,5,str_coef); 
    
    HDR = e_HDR;
    itoa(HDR,str_HDR);
    Disp_Str1(3,3,str_HDR);
            
    ND = e_ND;
    itoa(ND,str_ND);
    Disp_Str1(3,6,str_ND);

	while(!esc_flag)
	{
        if(time_10ms)  //10ms定时扫描键盘    
        { 
        time_10ms = 0; 

		key_value= Read_keyboard();
		if(key_value != No_key)
		{
	        switch(key_value)
	        {
	        	case Esc:
						if(MenuPoint[UserChooseR].ParentMenus != NULL) 
						{ 
						 MenuPoint = MenuPoint[UserChooseR].ParentMenus; 
						 UserChooseR = 1; 
						 UserChooseC = 0;
						 //DisplayStart = 0; 
						} 
						esc_flag = 1;
						break;	
	        	case OK:
					    //Set_Mode();
	  				 	break; 
				case  1:
                		AV_NO++;
                      	if(AV_NO==8)
                        {
                        	AV_NO = 1;
                        }   
					  	break;
                case  3:
                		e_ISO++;
                        if(e_ISO == 6)
                        {e_ISO = 0;} 
                        ISO = 100 << e_ISO;
                        break;
                case  4:
                		coef -= 0.05;
                        break;
                case  6:
                		coef += 0.05;
                        break;
                case  7:
                		HDR++;
                        if(HDR == 7)
                        {
                        	HDR = 0;
                        }
                		break;	
                case  9:
                		ND++;
                        if(ND == 11)
                        {
                        	ND = 0;
                        }	
				default:
                		break;			
			} 
            
            switch(AV_NO)
            {
            	case 1:
                		AV = 2.8;
                        break;
            	case 2:
                		AV = 4.0;
                        break;
            	case 3:
                		AV = 5.6;
                        break;
            	case 4:
                		AV = 8.0;
                        break;
            	case 5:
                		AV = 11;
                        break;
            	case 6:
                		AV = 16;
                        break;
            	case 7:
                		AV = 22;
                        break;
                default:
                		break;                
            }			
		
        	e_AV = AV;
            ftoa(AV,1,str_AV);
            Disp_Str(0,1,"    ");  
    		Disp_Str1(0,1,str_AV);
            
            e_coef = coef;	 
    		ftoa(coef,2,str_coef); 
    		Disp_Str1(2,5,str_coef); 
            
            itoa(ISO,str_ISO);
            Disp_Str(0,5,"      ");
            Disp_Str1(0,5,str_ISO);
            
            e_HDR = HDR;
            itoa(HDR,str_HDR);
            Disp_Str1(3,3,str_HDR);
            
            e_ND = ND;
            itoa(ND,str_ND);
            Disp_Str(3,6,"  ");
            Disp_Str1(3,6,str_ND);
		}
        
        if(++time_cnt == 100)
        {
        	time_cnt = 0;
            //get_lux(); 
        	//Disp_Str1(0,4,lux_value);
            int_TV = Get_TV(); 
            ltoa(int_TV,str_TV); 
            Disp_Str(1,3,"      ");
            Disp_Str1(1,3,str_TV);    
        }		
		}
    }
	  
    free(str_AV);
    free(str_TV);
    free(str_ISO);
    free(str_coef);
    free(str_HDR);
    free(str_ND);
    
    Set_Mode(ON);
	Clear_Scr();
	ShowMenu();
}
Пример #5
0
/**************************************************************   
*  函数说明:状态显示函数                         *   
**************************************************************/  
void ShowState(void)
{
	char *s_taken = (char *) malloc(5); 
    char *s_left = (char *) malloc(5);
    char *s_dist = (char *) malloc(5);
    
    uint8 time_cnt = 0; 
    uint8 esc_flag = 0;
    //UserChooseR = 0;
    //Set_Cursor(0,0);

    itoa(photo_taken,s_taken);
    Disp_Str1(0,2,s_taken);

    itoa(photo_left,s_left);
    Disp_Str1(0,6,s_left); 

    itoa(now_dist,s_dist);
    Disp_Str1(1,5,s_dist);

    Set_Mode(OFF);
    while(!esc_flag)
    {
        if(time_10ms)  //10ms定时扫描键盘    
        { 
        	time_10ms = 0; 

			key_value= Read_keyboard();
			if(key_value == Esc)
			{
            	Set_Mode(ON);
            	if(MenuPoint[UserChooseR].ParentMenus != NULL) 
            	{ 
             		MenuPoint = MenuPoint[UserChooseR].ParentMenus; 
             		UserChooseR = 1; 
             		UserChooseC = 1; 
            	} 
            	esc_flag = 1;	
			} 
            
            if(++time_cnt == 100)
            {
                time_cnt = 0;
                
        		//s_taken = Int2Str(photo_taken);
        		itoa(photo_taken,s_taken);
        		Disp_Str(0,2,"    ");
        		Disp_Str1(0,2,s_taken);

        		//s_left = Int2Str(photo_left);
        		itoa(photo_left,s_left);
        		Disp_Str(0,6,"    ");
        		Disp_Str1(0,6,s_left); 

        		//dist_str = Int2Str(now_dist);
        		itoa(now_dist,s_dist);
        		Disp_Str(1,5,"    ");
        		Disp_Str1(1,5,s_dist);
        		//delay_ms(50);
            }
        }           
    }
    
    
    free(s_taken);
	free(s_left);
    free(s_dist);
    Clear_Scr();
	ShowMenu();
}
Пример #6
0
/**************************************************************   
*  函数说明:自定义快门设置函数                         *   
**************************************************************/  
void SetShutter(void)
{
	uint8 esc_flag = 0;
	uint8 count = 0;

    Disp_Str_eeprom(0,5,TV);

	UserChooseR = 0;
	UserChooseC = 5;
    Set_Cursor(UserChooseR,UserChooseC);
	
	while(!esc_flag)
	{
        if(time_10ms)  //10ms定时扫描键盘    
        { 
        time_10ms = 0; 
		*pRockValue=No_rock;
        rocker_type = Read_Rocker(pRockValue);
		if(rocker_type & keyPressed)
		{
			switch(*pRockValue)   
			{      
				case  Down:   
					  UserChooseR ++;   
					  if(UserChooseR == 3)   
					  {   
						UserChooseR = 0;   
					  }   
					  break;
				case  Left:	
					  UserChooseC --;   
					  if(UserChooseC == 4)   
					  {	
					    UserChooseC = 6;	 
					  } 	
					  break;
			}			

            Set_Cursor(UserChooseR,UserChooseC);
		}


		key_value= Read_keyboard();
		if(key_value != No_key)
		{
	        switch(key_value)
	        {
	        	case Esc:
						if(MenuPoint[UserChooseR].ParentMenus != NULL) 
						{ 
						 MenuPoint = MenuPoint[UserChooseR].ParentMenus; 
						 UserChooseR = 1; 
						 UserChooseC = 0;
						 //DisplayStart = 0; 
						} 
						esc_flag = 1;
						break;	
	        	case OK:
					    Disp_Str(0,7," S");
	  				 	break;
				default:
						switch(UserChooseR)
						{
							case 0:
									if(UserChooseC==5)
									{
										if(count==0)
											TV[0] = key_value + 0x30;
										else
											TV[1] = key_value + 0x30;
									}
									if(UserChooseC==6)
									{
										if(count==0)
											TV[2] = key_value + 0x30;
										else
											TV[3] = key_value + 0x30;
									}
									Disp_Str_eeprom(0,5,TV);
									break;
							case 1:
                                    //
									break;
							case 2:
                                    //
									break;
						}			

			}

			count = count + 1;
			if(count==2)
				count = 0;	

		}
    
    	}    		
	}
	
    //expos_value = Str2Int(TV);
	Clear_Scr();
	ShowMenu();
}