コード例 #1
0
ファイル: PMain.c プロジェクト: caoqing32/galee-devo7e
void DrawBattery(void)
{
	static u8 batflash;
	int i,BatPer;	
	u16 batfull,batlow;
	
	//计算百分比,缺省镍电:4V~5V
	batfull=500;
	batlow=400;
	if(TxSys.BatType==1)//碱性:4V~6V
	{
		batfull=600;
		batlow=400;
	}
	if(TxSys.BatType==2)//1S LI:3.3V~4.2V
	{
		batfull=410;
		batlow=330;
	}
	if(TxSys.BatType==3)//2S LI:6.6V~8.4V
	{
		batfull=830;
		batlow=660;
	}
	
	if(BatVol>batfull)	BatPer=LCD_BAT_FULL;
	else				BatPer=(BatVol-batlow)*LCD_BAT_FULL/(batfull-batlow);
	
	//开始绘制电池状态
    LcdDrawStart(0, 0,LCD_W-1, 8, DRAW_NWSE);
    
    //显示电池电压
    if(BatLowCnt>=BAT_LOW_CNT)  batflash=!batflash;
    else						batflash=1;

    if(batflash)
    {
    	LcdDrawMiniInt(LCD_BAT_X+18,LCD_BAT_Y,BatVol,0,2,0,1);
    	LcdDrawMiniNum(LCD_BAT_X+18,LCD_BAT_Y,LCD_MN_CHAR('V'));
    }
    else LcdDrawRect(LCD_BAT_X,LCD_BAT_Y,LCD_BAT_X+22,LCD_BAT_Y+6,0);
    
    //显示电池柱状图
    LcdDrawMaskY(LCD_BAT_X+24,LCD_BAT_Y,LCD_BAT_ICON1,5);
    LcdDrawMaskY(LCD_BAT_X+25,LCD_BAT_Y,BatPer==LCD_BAT_FULL?LCD_BAT_ICON4:LCD_BAT_ICON2,5);
    for(i=0;i<LCD_BAT_FULL;i++)
    {
    	LcdDrawMaskY(LCD_BAT_X+26+i,LCD_BAT_Y,i>=(LCD_BAT_FULL-BatPer)?LCD_BAT_ICON4:LCD_BAT_ICON3,5);
    }
    LcdDrawMaskY(LCD_BAT_X+26+LCD_BAT_FULL,LCD_BAT_Y,LCD_BAT_ICON5,5);
    
    LcdDrawStop();
}
コード例 #2
0
ファイル: PMain.c プロジェクト: caoqing32/galee-devo7e
void DrawRunTimer(u16 sec)
{
	u16 h,m,s;
	
	//开机时间
	h=sec/3600;
	m=sec/60%60;
	s=sec%60;
	
	//绘制开机时间
	LcdDrawMiniNum(RUNTIMER_X   ,RUNTIMER_Y,h/10);
	LcdDrawMiniNum(RUNTIMER_X+ 4,RUNTIMER_Y,h%10);
	LcdDrawMiniNum(RUNTIMER_X+ 8,RUNTIMER_Y,LCD_MN_COL);
	LcdDrawMiniNum(RUNTIMER_X+10,RUNTIMER_Y,m/10);
	LcdDrawMiniNum(RUNTIMER_X+14,RUNTIMER_Y,m%10);
	LcdDrawMiniNum(RUNTIMER_X+18,RUNTIMER_Y,LCD_MN_COL);
	LcdDrawMiniNum(RUNTIMER_X+20,RUNTIMER_Y,s/10);
	LcdDrawMiniNum(RUNTIMER_X+24,RUNTIMER_Y,s%10);
}
コード例 #3
0
ファイル: P_Rev.c プロジェクト: RcBazaar/Avionic-RCB-OS-10
void Disp_NorRev(u8 x,u8 y)
{
	LcdDrawMiniNum(x,y,LCD_MN_CHAR('N'),0);
	x+=4;
	LcdDrawMiniNum(x,y,LCD_MN_CHAR('O'),0);
	x+=4;
	LcdDrawMiniNum(x,y,LCD_MN_CHAR('R'),0);
	x+=12;
	LcdDrawMiniNum(x,y,LCD_MN_CHAR('R'),0);
	x+=4;
	LcdDrawMiniNum(x,y,LCD_MN_CHAR('E'),0);
	x+=4;
	LcdDrawMiniNum(x,y,LCD_MN_CHAR('V'),0);
}
コード例 #4
0
ファイル: P_Curve.c プロジェクト: caoqing32/galee-devo7e
u32 PageCurveSet(u8 event)
{
	static u8 DrawMask;
	static u8 iStk;
	static u8 iFocus,Total,iStart;
	
	if(event==PV_INIT)
	{
		LcdClear(0);
		iStk=0;
		iFocus=CURVE_NUM;
		iStart=0;
		Total=CURVE_NUM+CURVE_FUNC;
		DrawMask=PD_ALL;	
		return 1;
	}
		
	if(event==PV_USER)
	{
		LcdClear(0);
		DrawMask=PD_ALL;
	}
	
	//开始绘图
	if(DrawMask)    
	{
		LcdDrawStart(0, 0,LCD_W-1, LCD_H-1, DRAW_NWSE);  
	
		//标题绘制
		if(DrawMask&PD_TITLE)
		{
			LcdDrawRect(0, 0,127,13,0);
			LcdDrawText(2,0,(char*)PageCurveTitle[iStk]);
			if(PageCurveCnt>1)	LcdDrawText(96,0,"\1ENT\x2");
			LcdDrawHLine(0,LCD_CV_X-2,14,1);
			LcdDrawHLine(0,LCD_CV_X-2,15,1);
		}
		
		//曲线点列表
		if(DrawMask&(PD_LIST|PD_VALUE))
		{			
			u16 i,x,y,idx;
			for(i=0,y=18;i<LCD_CURVE_LINES ;i++,y+=7)
			{
				idx=iStart+i;
				LcdBw=(idx==iFocus);
				
				LcdDrawRect(LCD_CV_IX,y,LCD_CV_IX+31,y+7,LcdBw);				//绘制选中框
				LcdDrawMiniInt(LCD_CV_IX+3,y+1,idx+1,1,0,0xff,0);				//绘制曲线序号
				LcdDrawMiniNum(LCD_CV_IX+7,y+1,LCD_MN_COL);						//绘制分隔点
				LcdDrawMiniInt(LCD_CV_IX+30,y+1,PageCurveValue[iStk*CURVE_DS+idx],0,1,0,1);	//绘制曲线值
				LcdBw=0;
			}
			
			//绘制EXP EPA菜单
			LcdBw=(iFocus==CURVE_NUM);
			LcdDrawRect(3,20,LCD_CV_IX-4,26,LcdBw);	
			LcdDrawMiniEng(5,21,"EPA\x12");
			LcdDrawMiniInt(40,21,PageCurveValue[iStk*CURVE_DS+CURVE_NUM],0,0,1,1);	//绘制EPA
			
			LcdBw=(iFocus==CURVE_NUM+1);
			LcdDrawRect(3,30,LCD_CV_IX-4,36,LcdBw);	
			LcdDrawMiniEng(5,31,"EXP\x12");
			LcdDrawMiniInt(40,31,PageCurveValue[iStk*CURVE_DS+CURVE_NUM+1],0,0,1,1);//绘制EXP

			LcdBw=(iFocus==CURVE_NUM+2);
			LcdDrawRect(3,40,LCD_CV_IX-4,46,LcdBw);	
			LcdDrawMiniEng(5,41,"LEVEL");
			
			LcdBw=(iFocus==CURVE_NUM+3);
			LcdDrawRect(3,50,LCD_CV_IX-4,56,LcdBw);	
			LcdDrawMiniEng(5,51,"RESET");
			
			LcdBw=0;
			
			//绘制曲线
			LcdDrawRect(LCD_CV_X,LCD_CV_Y,LCD_CV_X+LCD_CV_W,LCD_CV_Y+LCD_CV_H,1);
			LcdDrawRect(LCD_CV_X+1,LCD_CV_Y+1,LCD_CV_X+LCD_CV_W-1,LCD_CV_Y+LCD_CV_H-1,0);
			LcdDrawHLine(LCD_CV_X,LCD_CV_X+LCD_CV_W,LCD_CV_Y+LCD_CV_H/2,1);
			LcdDrawVLine(LCD_CV_X+LCD_CV_W/2,LCD_CV_Y,LCD_CV_Y+LCD_CV_H,1);
			u16 x0,y0;
			for(i=0,x0=y0=0;i<CURVE_NUM;i++)
			{
				x=i*LCD_CV_W/(CURVE_NUM-1);
				y=LCD_CV_H-(s32)PageCurveValue[iStk*CURVE_DS+i]*LCD_CV_H/CURVE_TRV;
				if(y>LCD_CV_H) y=LCD_CV_H;
				LcdDrawLine(LCD_CV_X+x0,LCD_CV_Y+y0,LCD_CV_X+x,LCD_CV_Y+y,1);
				if(i==iFocus) LcdDrawVLine(LCD_CV_X+x,LCD_CV_Y,LCD_CV_Y+LCD_CV_H,1);
				x0=x;
				y0=y;
			}
		}
		//完成绘图		
		LcdDrawStop();
		DrawMask=0;
	}
			
	//加减按键处理
	s16 v=PageCurveValue[iStk*CURVE_DS+iFocus];
	///////////////////////////////////////////////////////////////
	if(iFocus<CURVE_NUM)//曲线值
	{
		if(KeyTstHold(KEY_R))
		{
			v=(v/10+1)*10;
			if(v>CURVE_TRV)	v=CURVE_TRV;
			DrawMask=PD_LIST;
		}
		else if(KeyTstDown(KEY_R))
		{
			if(v<CURVE_TRV)	v++;		
			DrawMask=PD_LIST;
		}
		if(KeyTstHold(KEY_L))
		{
			v=(v/10-1)*10;
			if(v<0)	v=0;
			DrawMask=PD_LIST;
		}
		else if(KeyTstDown(KEY_L))
		{
			if(v>0)	v--;		
			DrawMask=PD_LIST;
		}
	}
	///////////////////////////////////////////////////////////////
	else//EXP EPA等
	{
		////////////////////////////////////////
		if(iFocus==CURVE_NUM+3)//RESET
		{
			if(KeyTstDown(KEY_R) || KeyTstDown(KEY_L))
			{
				u32 i;
				for(i=0;i<CURVE_NUM;i++)	PageCurveValue[iStk*CURVE_DS+i]=i*125;
				PageCurveValue[iStk*CURVE_DS+CURVE_NUM  ]=100;		//epa
				PageCurveValue[iStk*CURVE_DS+CURVE_NUM+1]=0;		//exp
				PageAlert("曲线参数已复位!",500,PV_USER);
			}
		}
		////////////////////////////////////////
		if(iFocus==CURVE_NUM+2)//LEVEL
		{
			s16 delta=0;
			if(KeyTstHold(KEY_R))		delta=10;
			else if(KeyTstDown(KEY_R))	delta=1;
			
			if(KeyTstHold(KEY_L))		delta=-10;
			else if(KeyTstDown(KEY_L))	delta=-1;
			
			if(delta)
			{
				for(u32 i=0;i<CURVE_NUM;i++)	
				{
					s16 v=PageCurveValue[iStk*CURVE_DS+i];
					v+=delta;
					if(v>1000)	v=1000;
					if(v<0)		v=0;
					PageCurveValue[iStk*CURVE_DS+i]=v;
				}
				DrawMask=PD_LIST;
			}
		}
		////////////////////////////////////////
		if(iFocus==CURVE_NUM+1)//EXP
		{
			if(KeyTstDown(KEY_R))		if(v<50) 	v++;
			if(KeyTstDown(KEY_L))		if(v>0) 	v--;
			if(PageCurveValue[iStk*CURVE_DS+CURVE_NUM+1]!=v)
			{
				CurveMake(&PageCurveValue[iStk*CURVE_DS],PageCurveValue[iStk*CURVE_DS+CURVE_NUM],v);
				DrawMask=PD_LIST;
			}
		}
		////////////////////////////////////////
		if(iFocus==CURVE_NUM)//EPA
		{
			if(KeyTstDown(KEY_R))		if(v<100) 	v++;
			if(KeyTstDown(KEY_L))		if(v>-100) 	v--;
			if(PageCurveValue[iStk*CURVE_DS+CURVE_NUM]!=v)
			{
				CurveMake(&PageCurveValue[iStk*CURVE_DS],v,PageCurveValue[iStk*CURVE_DS+CURVE_NUM+1]);
				DrawMask=PD_LIST;
			}
		}
	}
	PageCurveValue[iStk*CURVE_DS+iFocus]=v;
	
	///////////////////////////////////////////////////////////////
	//上下按键处理
	if(KeyTstDown(KEY_UP))
	{
		if(iFocus>0) iFocus--;
		else		 iFocus=Total-1;
		DrawMask=PD_LIST|PD_IDX;
	}
	if(KeyTstDown(KEY_DW))
	{
		if(iFocus<Total-1) iFocus++;
		else		 		iFocus=0;
		DrawMask=PD_LIST|PD_IDX;
	}
	if(iFocus>=Total)							iFocus=Total-1;
	if(iFocus>=CURVE_NUM)						iStart=0;
	else if(iFocus<iStart) 						iStart=iFocus;
	else if(iFocus>iStart+LCD_CURVE_LINES-1) 	iStart=iFocus-LCD_CURVE_LINES+1;	
	
	///////////////////////////////////////////////////////////////
	//回车键切换曲线		
	if(KeyTstDown(KEY_ENT) )
	{
		iStk++;
		if(iStk>=PageCurveCnt) iStk=0;
		DrawMask|=PD_ALL;
	}
	
	///////////////////////////////////////////////////////////////
	//返回键处理
	if(KeyTstDown(KEY_EXT) )
	{
		PageReturn(PV_REDRAW);
	}
	
	KeyClearDown(KEY_MENUALL);	
	
	return 0;
}
コード例 #5
0
ファイル: P_Rev.c プロジェクト: RcBazaar/Avionic-RCB-OS-10
//模型参数调节菜单处理过程
u32 PageNorRevSet(u8 event)
{
	static u8 DrawMask;
	static u8 iFocus;
	
	if(event==PV_INIT)
	{
		LCD_Clr_All();//清屏
		DrawMask = PD_ALL;
		iFocus = 0;
		return 1;
	}
	
	if(event==PV_REDRAW)
	{
		LCD_Clr_All();//清屏
		DrawMask = PD_ALL;	
	}
	
	if(DrawMask)
	{
		if(DrawMask&PD_TITLE)
		{
			LCD_Fill_Rect(0,0,127,13,0);
			Disp_GB2312_String(0,3,(u8 *)TitleNorRevSet[TxSys.Language],0,0);
			LCD_Draw_Line(0,14,127,14,1);
			LCD_Draw_Line(0,15,127,15,1);
			
			Disp_NorRev(24,17);
			Disp_NorRev(92,17);
		}
		
		if(DrawMask&PD_IDX)
		{
			if(iFocus==0)	LcdDraw_RevBarArrow(ARROW_X1,ARROW_Y);
			else	LCD_Fill_Rect(ARROW_X1,ARROW_Y,ARROW_X1+6,ARROW_Y+8,0);
			
			if(iFocus==1)	LcdDraw_RevBarArrow(ARROW_X1,ARROW_Y+8);
			else	LCD_Fill_Rect(ARROW_X1,ARROW_Y+8,ARROW_X1+6,ARROW_Y+16,0);
			
			if(iFocus==2)	LcdDraw_RevBarArrow(ARROW_X1,ARROW_Y+16);
			else	LCD_Fill_Rect(ARROW_X1,ARROW_Y+16,ARROW_X1+6,ARROW_Y+24,0);
			
			if(iFocus==3)	LcdDraw_RevBarArrow(ARROW_X1,ARROW_Y+24);
			else	LCD_Fill_Rect(ARROW_X1,ARROW_Y+24,ARROW_X1+6,ARROW_Y+32,0);
			
			if(iFocus==4)	LcdDraw_RevBarArrow(ARROW_X1,ARROW_Y+32);
			else	LCD_Fill_Rect(ARROW_X1,ARROW_Y+32,ARROW_X1+6,ARROW_Y+40,0);
			
			if(iFocus==5)	LcdDraw_RevBarArrow(ARROW_X2,ARROW_Y);
			else	LCD_Fill_Rect(ARROW_X2,ARROW_Y,ARROW_X2+6,ARROW_Y+8,0);
			
			if(iFocus==6)	LcdDraw_RevBarArrow(ARROW_X2,ARROW_Y+8);
			else	LCD_Fill_Rect(ARROW_X2,ARROW_Y+8,ARROW_X2+6,ARROW_Y+16,0);
			
			if(iFocus==7)	LcdDraw_RevBarArrow(ARROW_X2,ARROW_Y+16);
			else	LCD_Fill_Rect(ARROW_X2,ARROW_Y+16,ARROW_X2+6,ARROW_Y+24,0);
			
			if(iFocus==8)	LcdDraw_RevBarArrow(ARROW_X2,ARROW_Y+24);
			else	LCD_Fill_Rect(ARROW_X2,ARROW_Y+24,ARROW_X2+6,ARROW_Y+32,0);
			
			if(iFocus==9)	LcdDraw_RevBarArrow(ARROW_X2,ARROW_Y+32);
			else	LCD_Fill_Rect(ARROW_X2,ARROW_Y+32,ARROW_X2+6,ARROW_Y+40,0);
		}
			
		if(DrawMask&PD_VALUE)	
		{
			LcdDrawMiniNum(REVBAR_X1,REVBAR_Y,LCD_MN_CHAR('C'),0);
			LcdDrawMiniNum(REVBAR_X1+4,REVBAR_Y,LCD_MN_CHAR('H'),0);
			LcdDrawMiniNum(REVBAR_X1+8,REVBAR_Y,1,0);
			Disp_RevBar(REVBAR_X1+12,REVBAR_Y,Model.Rev[0]);
			
			LcdDrawMiniNum(REVBAR_X1,REVBAR_Y+8,LCD_MN_CHAR('C'),0);
			LcdDrawMiniNum(REVBAR_X1+4,REVBAR_Y+8,LCD_MN_CHAR('H'),0);
			LcdDrawMiniNum(REVBAR_X1+8,REVBAR_Y+8,2,0);
			Disp_RevBar(REVBAR_X1+12,REVBAR_Y+8,Model.Rev[1]);
			
			LcdDrawMiniNum(REVBAR_X1,REVBAR_Y+16,LCD_MN_CHAR('C'),0);
			LcdDrawMiniNum(REVBAR_X1+4,REVBAR_Y+16,LCD_MN_CHAR('H'),0);
			LcdDrawMiniNum(REVBAR_X1+8,REVBAR_Y+16,3,0);
			Disp_RevBar(REVBAR_X1+12,REVBAR_Y+16,Model.Rev[2]);
			
			LcdDrawMiniNum(REVBAR_X1,REVBAR_Y+24,LCD_MN_CHAR('C'),0);
			LcdDrawMiniNum(REVBAR_X1+4,REVBAR_Y+24,LCD_MN_CHAR('H'),0);
			LcdDrawMiniNum(REVBAR_X1+8,REVBAR_Y+24,4,0);
			Disp_RevBar(REVBAR_X1+12,REVBAR_Y+24,Model.Rev[3]);
			
			LcdDrawMiniNum(REVBAR_X1,REVBAR_Y+32,LCD_MN_CHAR('C'),0);
			LcdDrawMiniNum(REVBAR_X1+4,REVBAR_Y+32,LCD_MN_CHAR('H'),0);
			LcdDrawMiniNum(REVBAR_X1+8,REVBAR_Y+32,5,0);
			Disp_RevBar(REVBAR_X1+12,REVBAR_Y+32,Model.Rev[4]);
			
			LcdDrawMiniNum(REVBAR_X2,REVBAR_Y,LCD_MN_CHAR('C'),0);
			LcdDrawMiniNum(REVBAR_X2+4,REVBAR_Y,LCD_MN_CHAR('H'),0);
			LcdDrawMiniNum(REVBAR_X2+8,REVBAR_Y,6,0);
			Disp_RevBar(REVBAR_X2+12,REVBAR_Y,Model.Rev[5]);
			
			LcdDrawMiniNum(REVBAR_X2,REVBAR_Y+8,LCD_MN_CHAR('C'),0);
			LcdDrawMiniNum(REVBAR_X2+4,REVBAR_Y+8,LCD_MN_CHAR('H'),0);
			LcdDrawMiniNum(REVBAR_X2+8,REVBAR_Y+8,7,0);
			Disp_RevBar(REVBAR_X2+12,REVBAR_Y+8,Model.Rev[6]);
			
			LcdDrawMiniNum(REVBAR_X2,REVBAR_Y+16,LCD_MN_CHAR('C'),0);
			LcdDrawMiniNum(REVBAR_X2+4,REVBAR_Y+16,LCD_MN_CHAR('H'),0);
			LcdDrawMiniNum(REVBAR_X2+8,REVBAR_Y+16,8,0);
			Disp_RevBar(REVBAR_X2+12,REVBAR_Y+16,Model.Rev[7]);
			
			LcdDrawMiniNum(REVBAR_X2,REVBAR_Y+24,LCD_MN_CHAR('C'),0);
			LcdDrawMiniNum(REVBAR_X2+4,REVBAR_Y+24,LCD_MN_CHAR('H'),0);
			LcdDrawMiniNum(REVBAR_X2+8,REVBAR_Y+24,9,0);
			Disp_RevBar(REVBAR_X2+12,REVBAR_Y+24,Model.Rev[8]);
			
			LcdDrawMiniNum(REVBAR_X2-4,REVBAR_Y+32,LCD_MN_CHAR('C'),0);
			LcdDrawMiniNum(REVBAR_X2,REVBAR_Y+32,LCD_MN_CHAR('H'),0);
			LcdDrawMiniNum(REVBAR_X2+4,REVBAR_Y+32,1,0);
			LcdDrawMiniNum(REVBAR_X2+8,REVBAR_Y+32,0,0);
			Disp_RevBar(REVBAR_X2+12,REVBAR_Y+32,Model.Rev[9]);
		}
		DrawMask = 0;
	}
		
	if(KeyTstDown(KEY_ENT))
	{
		Model.Rev[iFocus] = !Model.Rev[iFocus];
		DrawMask = PD_VALUE;
	}
	
	//上下按键处理
	if(KeyTstDown(KEY_DOWN))
	{
		if(iFocus<9)	iFocus++;
		else	iFocus = 0;
		DrawMask = PD_IDX;
	}
	if(KeyTstDown(KEY_UP))
	{
		if(iFocus>0)	iFocus--;
		else	iFocus = 9;
		DrawMask = PD_IDX;
	}
	
	//返回键处理
	if(KeyTstDown(KEY_EXT))
	{
		PageReturn(PV_INIT);
	}

	KeyClearDown(KEY_MENUALL);

	
	return 0;
}