⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nav.c

📁 源程序是在VisualDSP环境下开发出来的
💻 C
📖 第 1 页 / 共 2 页
字号:
	StringOut("FAF",ROW1+20,TOP,YELLOW,BFINALRESULT);
	bScafaf=true;
	tempd=g_nParameters[17];//
	templ=g_nParameters[18]*RADIUS3/g_nParameters[11];
	fafzx=(int)(Ox+templ*sin(tempd*PI_180));
	fafzy=(int)(Oy-templ*cos(tempd*PI_180));
	Line(Ox,Oy,fafzx,fafzy,YELLOW,BFINALRESULT);//zhuan wan

	tempd=g_nParameters[19];//
	templ=g_nParameters[20]*RADIUS3/g_nParameters[11];
	fafyx=(int)(Ox+templ*sin(tempd*PI_180));
	fafyy=(int)(Oy-templ*cos(tempd*PI_180));
	DrawArc(fafyx,fafyy,fafzx,fafzy,WHOLEANGLE,CAMBLUE,BFINALRESULT);//YUAN

	tempd=g_nParameters[21];//
	templ=g_nParameters[22]*RADIUS3/g_nParameters[11];
	fafdx=(int)(Ox+templ*sin(tempd*PI_180));
	fafdy=(int)(Oy-templ*cos(tempd*PI_180));//faf dian

	tempd=g_nParameters[23];//
	templ=g_nParameters[24]*RADIUS3/g_nParameters[11];
	airportx=(int)(Ox+templ*sin(tempd*PI_180));
	airporty=(int)(Oy-templ*cos(tempd*PI_180));
	Line(fafdx,fafdy,airportx,airporty,YELLOW,BFINALRESULT);
	Line(airportx-5,airporty,airportx,airporty,YELLOW,BFINALRESULT);
	Line(airportx,airporty-5,airportx,airporty,YELLOW,BFINALRESULT);//jin chang

	Int2Str(g_nParameters[16],airportx,airporty,CAMBLUE,BFINALRESULT,0);
	DrawArc(airportx+12,airporty+10,airportx,airporty,WHOLEANGLE,PURPLE1,BFINALRESULT);//ji chang
}
/////////////////////////////////////////////////////////////////////
void SCA_RWYproc()
{
	int airportx,airporty;
	float tempd,templ;
	StringOut("SCA",LEFT,TOP,YELLOW,BFINALRESULT);
	StringOut("RWY",ROW1+20,TOP,YELLOW,BFINALRESULT);
	bScarwy=true;
	tempd=g_nParameters[17];//
	templ=g_nParameters[18]*RADIUS3/g_nParameters[11];
	airportx=(int)(Ox+templ*sin(tempd*PI_180));
	airporty=(int)(Oy-templ*cos(tempd*PI_180));
	Line(Ox,Oy,airportx,airporty,YELLOW,BFINALRESULT);
	Int2Str(g_nParameters[16],airportx-10,airporty-10,CAMBLUE,BFINALRESULT,0);
	DrawArc(airportx,airporty,airportx+12,airporty+12,WHOLEANGLE,PURPLE1,BFINALRESULT);//ji chang
}
/////////////////////////////////////////////////////////////////////
void NAVproc()
{
	
	static int angle=0;
	int x1,y1,x2,y2;//COURSE DEGREE RECT
	int paraInta10,paraInta;//dongqian hangxiang
	int paraIntb,paraIntc;//yingfei hangxiang,daifeijvli
	int degree2,degree1;//
	int hour,minute,second,j;
	int color=GREEN1;
	char cTime[8],cMinute[8],cSecond[8],cHangx[8],cJl[8];
	bool bNav=false,bNOTNav=true;
	char dire;
switch(g_nParameters[3])
	{
		case 1:		ARTEproc();break;
		case 2:		SCRSproc();break;
		case 3:		WPNTproc();break;
		case 4:		PPUCproc();break;
		case 5:		HEPproc();break;
		case 6:		ADFproc();break;
		case 7:		TCNproc();break;
		case 8:		TCN_FAFproc();break;
		case 9:		SCA_FAFproc();break;
		case 12:	SCA_RWYproc();break;
		default:	break;
	}
	bNav=bArte|bWpnt|bScrs|bPpuc|bHep|bHepData|bAdf|bTcn|bTcnfaf|bScafaf|bScarwy;
	bNOTNav=!(bTcnfaf|bScafaf|bScarwy);
	if(bNav==false)
	{
		return;
	}
	if(bHepData)/////shujv bhepdata start
	{
		StringOut("RTN",RIGHT,LINE5-50,GREEN1,BFINALRESULT);
		StringOut("LAT",(ROW1+ROW2)/2,LINE1,YELLOW,BFINALRESULT);
		StringOut("LON",ROW3,LINE1,YELLOW,BFINALRESULT);
		StringOut("H",(ROW5+ROW4)/2,LINE1,YELLOW,BFINALRESULT);
		StringOut("00",ROW1+10,LINE1+30,GREEN1,BFINALRESULT);
		StringOut("N35$15.3",(ROW1+ROW2)/2,LINE1+30,GREEN1,BFINALRESULT);
		StringOut("E130$10.0",ROW3,LINE1+30,GREEN1,BFINALRESULT);
		StringOut("1800",(ROW5+ROW4)/2,LINE1+30,GREEN1,BFINALRESULT);
		StringOut("01",ROW1+10,LINE1+60,GREEN1,BFINALRESULT);
		StringOut("N40$15.3",(ROW1+ROW2)/2,LINE1+60,GREEN1,BFINALRESULT);
		StringOut("E132$10.0",ROW3,LINE1+60,GREEN1,BFINALRESULT);
		StringOut("1200",(ROW5+ROW4)/2,LINE1+60,GREEN1,BFINALRESULT);
		StringOut("02",ROW1+10,LINE1+90,GREEN1,BFINALRESULT);
		StringOut("N43$15.3",(ROW1+ROW2)/2,LINE1+90,GREEN1,BFINALRESULT);
		StringOut("E133$10.0",ROW3,LINE1+90,GREEN1,BFINALRESULT);
		StringOut("1400",(ROW5+ROW4)/2,LINE1+90,GREEN1,BFINALRESULT);
		Line(LEFT,LINE1+55,RIGHT,LINE1+55,CAMBLUE,BFINALRESULT);
		Line(LEFT,LINE1+85,RIGHT,LINE1+85,CAMBLUE,BFINALRESULT);
		for(i=1;i<=15;i++)
			{
				Line(LEFT,LINE1+55+i,LEFT+i,LINE1+55+i,CAMBLUE,BFINALRESULT);
				Line(RIGHT,LINE1+55+i,RIGHT-i,LINE1+55+i,CAMBLUE,BFINALRESULT);
			}
		for(i=1;i<=15;i++)
		{
			Line(LEFT,(LINE1+55+LINE1+85)/2+i,LEFT+(LINE1+55+LINE1+85)/2-LINE1-55-i,(LINE1+55+LINE1+85)/2+i,CAMBLUE,BFINALRESULT);
			Line(RIGHT,(LINE1+55+LINE1+85)/2+i,RIGHT-(LINE1+55+LINE1+85)/2+LINE1+55+i,(LINE1+55+LINE1+85)/2+i,CAMBLUE,BFINALRESULT);
		}
		return;
	}
//	else/////////////hua mian
//	{
		
//	}
	if(g_nParameters[4]==0x2)
	StringOut("MAG",ROW5,TOP,CAMBLUE,BFINALRESULT);
	else if(g_nParameters[4]==0x3)
	StringOut("TRU",ROW5,TOP,CAMBLUE,BFINALRESULT);

	DrawArc(Ox,Oy,Ox,Oy-RADIUS,WHOLEANGLE,GREEN1,BFINALRESULT);
	DrawArc(Ox,Oy,Ox+RADIUS2*cos(45*PI_180),Oy+RADIUS2*cos(45*PI_180),270,GREEN1,BFINALRESULT);//|NEEDMODIFY);
	DrawArc(Ox,Oy,Ox+RADIUS3*cos(30*PI_180),Oy-RADIUS3*sin(30*PI_180),120,GREEN1,BFINALRESULT);//|NEEDMODIFY);

//	i=numofresult;j=numofrotatedresult;
//COURSE SCALE CENTER
	Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT1,TEST2,BFINALRESULT);
	paraInta10=Integer10(g_nParameters[12]);
	paraInta=(int)(g_nParameters[12]+0.5);//dangqianhangxiang
	if((paraInta10+30)>WHOLEANGLE)degree2=paraInta10+30-WHOLEANGLE;
	else degree2=paraInta10+30;
	if((paraInta10-40)<0)degree1=paraInta10-40+WHOLEANGLE;
	else degree1=paraInta10-40;
//	paraIntb=(int)(g_nParameters[13]+0.5);//yingfeihangxiang
//	paraIntc=(int)(g_nParameters[14]+0.5);//daifeijvli

//COURSE SCALE
/*
	Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT,GREEN1,!BFINALRESULT);
	Rotate((paraInta-paraInta10)*PI_180,Ox,Oy);
	Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT,GREEN1,!BFINALRESULT);
	Rotate((paraInta-paraInta10-10)*PI_180,Ox,Oy);
	Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT,GREEN1,!BFINALRESULT);
	Rotate((paraInta-paraInta10-20)*PI_180,Ox,Oy);
	Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT,GREEN1,!BFINALRESULT);
	Int2Str(degree2,Ox-COURSEWIDTH/2+2,Oy-RADIUS3-SCALEHIGHT1-COURSEHIGHT,GREEN1,!BFINALRESULT);
	Rotate((paraInta-paraInta10-30)*PI_180,Ox,Oy);
	Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT,GREEN1,!BFINALRESULT);
	Rotate((paraInta-paraInta10-40)*PI_180,Ox,Oy);
	Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT,GREEN1,!BFINALRESULT);
	Rotate((paraInta-paraInta10-50)*PI_180,Ox,Oy);
	Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT,GREEN1,!BFINALRESULT);
	Rotate((paraInta-paraInta10+10)*PI_180,Ox,Oy);
	Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT,GREEN1,!BFINALRESULT);
	Rotate((paraInta-paraInta10+20)*PI_180,Ox,Oy);
	Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT,GREEN1,!BFINALRESULT);
	Rotate((paraInta-paraInta10+30)*PI_180,Ox,Oy);
	Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT,GREEN1,!BFINALRESULT);
	Int2Str(degree1,Ox-COURSEWIDTH/2+2,Oy-RADIUS3-SCALEHIGHT1-COURSEHIGHT,GREEN1,!BFINALRESULT);
	Rotate((paraInta-paraInta10+40)*PI_180,Ox,Oy);
	Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT,GREEN1,!BFINALRESULT);
	Rotate((paraInta-paraInta10+50)*PI_180,Ox,Oy);
	Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT,GREEN1,!BFINALRESULT);
	Rotate((paraInta-paraInta10+60)*PI_180,Ox,Oy);
*/
	for(i=0;i<=11;i++)
	{
		Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT,GREEN1,!BFINALRESULT);
		Rotate((paraInta-paraInta10-50+i*10)*PI_180,Ox,Oy);
	}



	x1=Ox-COURSEWIDTH/2;
	y1=Oy-RADIUS3-SCALEHIGHT1-COURSEHIGHT;
	x2=Ox+COURSEWIDTH/2;
	y2=Oy-RADIUS3-SCALEHIGHT1;
	Line(x1,y1,x2,y1,TEST2,BFINALRESULT);
	Line(x2,y1,x2,y2,TEST2,BFINALRESULT);
	Line(x2,y2,x1,y2,TEST2,BFINALRESULT);
	Line(x1,y2,x1,y1,TEST2,BFINALRESULT);
	Int2Str(paraInta,Ox-COURSEWIDTH/2+2,Oy-RADIUS3-SCALEHIGHT1-COURSEHIGHT,CAMBLUE,BFINALRESULT,0);



//inside box and needle
	Line(Ox,Oy-RADIUS,Ox,Oy-RADIUS-SCALEHIGHT,GREEN1,!BFINALRESULT);
	PutChar('S',Ox-5,Oy-RADIUS-SCALEHIGHT-SCALEHIGHT1,GREEN1,!BFINALRESULT);
	Rotate((paraInta-HALFANGLE)*PI_180,Ox,Oy);

	
	Line(Ox,Oy-RADIUS,Ox,Oy-RADIUS-SCALEHIGHT,GREEN1,!BFINALRESULT);
	PutChar('E',Ox-5,Oy-RADIUS-SCALEHIGHT-SCALEHIGHT1,GREEN1,!BFINALRESULT);
	Rotate((paraInta-90)*PI_180,Ox,Oy);
	
	Line(Ox,Oy-RADIUS,Ox,Oy-RADIUS-SCALEHIGHT,GREEN1,!BFINALRESULT);
	PutChar('N',Ox-5,Oy-RADIUS-SCALEHIGHT-SCALEHIGHT1,GREEN1,!BFINALRESULT);
	Rotate((paraInta-WHOLEANGLE)*PI_180,Ox,Oy);
	
	Line(Ox,Oy-RADIUS,Ox,Oy-RADIUS-SCALEHIGHT,GREEN1,!BFINALRESULT);
	PutChar('W',Ox-5,Oy-RADIUS-SCALEHIGHT-SCALEHIGHT1,GREEN1,!BFINALRESULT);
	Rotate((paraInta-270)*PI_180,Ox,Oy);

//end of inside box an needle	

//liangcheng
	Int2Str(g_nParameters[11],RIGHT,(LINE1+LINE2)/2,GREEN1,BFINALRESULT,0);
	PutChar('@',RIGHT+10,LINE1,GREEN1,BFINALRESULT);
	PutChar('@',RIGHT+10,LINE2,GREEN1,!BFINALRESULT);
	Rotate(PI,RIGHT+15,LINE2+5);
	Int2Str(g_nParameters[11]*2/3,Ox-(RADIUS2-10),Oy-(RADIUS2-30),CAMBLUE,BFINALRESULT,0);
	Int2Str(g_nParameters[11]*2/3,Ox+(RADIUS2-30),Oy-(RADIUS2-30),CAMBLUE,BFINALRESULT,0);
//END OF LIANGCHENG

//MENU KEY
	if(!bTcnfaf)
	StringOut("CRUISE",ROW1,BOTTOM,GREEN1,BFINALRESULT);
	StringOut("BRIF",ROW5,BOTTOM,GREEN1,BFINALRESULT);
	if(bAdf)
	{
		color=PURPLE1;
		/*PutChar('A',RIGHT,LINE3-COURSEHIGHT,PURPLE1,BFINALRESULT);
		PutChar('D',RIGHT,LINE3,PURPLE1,BFINALRESULT);
		PutChar('F',RIGHT,LINE3+COURSEHIGHT,PURPLE1,BFINALRESULT);*/
	}
	else
	{
		color=GREEN1;
		
	}
	PutChar('A',RIGHT,LINE3-COURSEHIGHT,color,BFINALRESULT);
	PutChar('D',RIGHT,LINE3,color,BFINALRESULT);
	PutChar('F',RIGHT,LINE3+COURSEHIGHT,color,BFINALRESULT);
/*	if(bTcn)
	{
		PutChar('T',RIGHT,LINE4-COURSEHIGHT,PURPLE1,BFINALRESULT);
		PutChar('C',RIGHT,LINE4,PURPLE1,BFINALRESULT);
		PutChar('N',RIGHT,LINE4+COURSEHIGHT,PURPLE1,BFINALRESULT);
	}*/
	
	if(bTcn)color=PURPLE1;
		PutChar('T',RIGHT,LINE4-COURSEHIGHT,color,BFINALRESULT);
		PutChar('C',RIGHT,LINE4,color,BFINALRESULT);
		PutChar('N',RIGHT,LINE4+COURSEHIGHT,color,BFINALRESULT);
//END OF MENU KEY

//PLANE
	Line(Ox-10,Oy,Ox+10,Oy,CAMBLUE,BFINALRESULT);
	Line(Ox,Oy-10,Ox,Oy+15,CAMBLUE,BFINALRESULT);
	Line(Ox-5,Oy+12,Ox+5,Oy+12,CAMBLUE,BFINALRESULT);
//END OF PLANE

//TIME
	hour=(g_nParameters[15]>>16)&0xff;
	minute=(g_nParameters[15]>>8)&0xff;
	second=g_nParameters[15]&0xff;
	if(hour>=24||minute>=60||second>=60)
	{
		StringOut("TIME ERROR",Ox-40,Oy+RADIUS+40,RED,BFINALRESULT);
	}
	else
	{
		if(hour<10)sprintf(cTime,"0%d:",hour);
		else sprintf(cTime,"%d:",hour);
		if(minute<10)sprintf(cMinute,"0%d:",minute);
		else sprintf(cMinute,"%d:",minute);
		if(second<10)sprintf(cSecond,"0%d",second);
		else sprintf(cSecond,"%d",second);
		strcat(cTime,cMinute);
		strcat(cTime,cSecond);
		StringOut(cTime,Ox-40,Oy+RADIUS+40,CAMBLUE,BFINALRESULT);
	}
// END OF TIME

//ying fei hangxing and daifeijvli
	if(bTcn)
	{
		sprintf(cHangx,"BRG-%d$",g_nParameters[17]);
		StringOut(cHangx,ROW5-30,LINE5-80,CAMBLUE,BFINALRESULT);
		sprintf(cJl,"DIS-%dnm",g_nParameters[18]);
		StringOut(cJl,ROW5-30,LINE5-100,CAMBLUE,BFINALRESULT);
		sprintf(cHangx,"CRS-%d$",g_nParameters[19]);
		StringOut(cHangx,ROW5-30,LINE5-60,CAMBLUE,BFINALRESULT);
		
	}
	else
	{
		paraIntb=(int)(g_nParameters[13]+0.5);//yingfeihangxiang
		paraIntc=(int)(g_nParameters[14]+0.5);//daifeijvli

		sprintf(cHangx,"%d$",g_nParameters[13]);
		StringOut(cHangx,ROW5,LINE5-55,CAMBLUE,BFINALRESULT);
		sprintf(cJl,"%dnm",g_nParameters[14]);
		StringOut(cJl,ROW5,LINE5-75,CAMBLUE,BFINALRESULT);
	}
//end of ying fei hangxing and daifeijvli

//arrowhead
	Line(Ox,Oy-RADIUS3,Ox-4,Oy-RADIUS3+8,CAMBLUE,!BFINALRESULT);
	Line(Ox,Oy-RADIUS3,Ox+4,Oy-RADIUS3+8,CAMBLUE,!BFINALRESULT);
	Line(Ox,Oy-RADIUS,Ox-4,Oy-RADIUS+8,CAMBLUE,!BFINALRESULT);
	Line(Ox,Oy-RADIUS,Ox+4,Oy-RADIUS+8,CAMBLUE,!BFINALRESULT);
	Line(Ox,Oy+RADIUS,Ox-4,Oy+RADIUS+8,CAMBLUE,!BFINALRESULT);
	Line(Ox,Oy+RADIUS,Ox+4,Oy+RADIUS+8,CAMBLUE,!BFINALRESULT);
	Rotate((g_nParameters[12]-g_nParameters[13])*PI_180,Ox,Oy);
//arrowhead

//hangludian
	if(bNOTNav)
	{
		for(i=0;i<num;i++)
		PutChar('&',psx[i]-8,psy[i]-8,CAMBLUE,BFINALRESULT);
		Line(Ox,Oy,psx[0],psy[0],YELLOW,BFINALRESULT);
		for(i=0;i<num-1;i++)
		Line(psx[i],psy[i],psx[i+1],psy[i+1],YELLOW,BFINALRESULT);
	}

//end of hangludian
/*	PutChar('+',Ox-200,Oy+RADIUS+10,GREEN1,BFINALRESULT);
	PutChar('-',Ox-160,Oy+RADIUS+10,GREEN1,BFINALRESULT);
	PutChar('%',Ox-120,Oy+RADIUS+10,GREEN1,BFINALRESULT);
	PutChar(':',Ox-80,Oy+RADIUS+10,GREEN1,BFINALRESULT);
	PutChar('.',Ox-40,Oy+RADIUS+10,GREEN1,BFINALRESULT);
	PutChar('@',Ox-20,Oy+RADIUS+10,GREEN1,BFINALRESULT);
	PutChar('$',Ox,Oy+RADIUS+10,GREEN1,BFINALRESULT);
	PutChar('^',Ox+40,Oy+RADIUS+10,GREEN1,BFINALRESULT);
	PutChar('#',Ox+80,Oy+RADIUS+10,GREEN1,BFINALRESULT);
	PutChar('&',Ox+120,Oy+RADIUS+10,GREEN1,BFINALRESULT);

//	}///////////bhepdata end*/
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -