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

📄 cd.c

📁 我个人编写的车载dvd上的程序
💻 C
📖 第 1 页 / 共 4 页
字号:
							DispBuff[1][9]='C';
							DispBuff[1][10]='A';
							DispBuff[1][11]='N';
							break;
						case CD_SUBPLAY_SHF:
							DispBuff[1][8]='S';
							DispBuff[1][9]='H';
							DispBuff[1][10]='U';
							DispBuff[1][11]='F';
							DispBuff[1][12]='F';
							break;
						case CD_SUBPLAY_RPT:
							
							DispBuff[1][8]='R';
							DispBuff[1][9]='E';
							DispBuff[1][10]='P';
							DispBuff[1][11]='E';
							DispBuff[1][12]='A';
							DispBuff[1][13]='T';
							break;
					}
					break;
			}
	#endif		
	#ifdef SINO_MOS
	            str[0] = 'T';
                   str[1] = CD.AbsFileNum /10 + '0';
	            str[2] = CD.AbsFileNum%10 + '0';
                   str[3] = ' ';	            
	            str[4] = CD.PlayMin/10 + '0';
	            str[5] = CD.PlayMin%10 + '0';
	            str[6] = CD.PlaySec /10 + '0';
	            str[7] = CD.PlaySec%10 + '0';
                  PrintLine(str);
                  WheelShow();
	#else
			Display(DISP_REFRESH1);

			Display(DISP_CLEAR2);

			DispBuff[2][6]='T';
			DispBuff[2][7]=ReturnDispNum(CD.AbsFileNum,10);
			DispBuff[2][8]=ReturnDispNum(CD.AbsFileNum,1);
			DispBuff[2][9]=' ';
			DispBuff[2][10]=ReturnDispNum(CD.PlayMin,10);
			DispBuff[2][11]=ReturnDispNum(CD.PlayMin,1);
			DispBuff[2][12]=':';
			DispBuff[2][13]=ReturnDispNum((unsigned int)CD.PlaySec,10);
			DispBuff[2][14]=ReturnDispNum((unsigned int)CD.PlaySec,1);
			Display(DISP_REFRESH2);
	#endif

					break;


	}
	if(CD.DispMode==CD_DISP_DISC_EJECT||CD.DispMode==CD_DISP_NOUSB
		||CD.DispMode==CD_DISP_NOSD)
	{
		Display(DISP_CLEAR1);
		Display(DISP_CLEAR3);
		Display(DISP_REFRESH);
		CD.F_DispText = 0;
	}
	DisplayRefresh();
}

void CDPower(unsigned char mode)
{
	CD.PowerReq=mode;
	switch(CD.PowerReq)
	{
		case OFF_TO_STANDBY:
			CD.PowerMode=CD_POWER_OFF_TO_STANDBY_REQ;
			break;
		case OFF_TO_NORMAL:
			CD.PowerMode=CD_POWER_OFF_TO_STANDBY_REQ;
			break;
		case STANDBY_TO_OFF:
			CD.PowerMode=CD_POWER_STANDBY_TO_OFF_REQ;
			break;
		case STANDBY_TO_NORMAL:
			CD.PowerMode=CD_POWER_STANDBY_TO_NORMAL_REQ;
			break;
		case NORMAL_TO_OFF:
			CD.PowerMode=CD_POWER_NORMAL_TO_STANDBY_REQ;
			break;
		case NORMAL_TO_STANDBY:
			CD.PowerMode=CD_POWER_NORMAL_TO_STANDBY_REQ;
			break;
		
	}
	
}

void CDPowerMode(void)
{
	switch(CD.PowerMode)
	{
		case CD_POWER_OFF:
			if(CD.PowerReq==STANDBY_TO_OFF ||CD.PowerReq==NORMAL_TO_OFF)
				CD.PowerReq=0;
			
			break;
		case CD_POWER_OFF_TO_STANDBY_REQ:
			//Pin_CD_POWER=1;
			CD.PowerTimer10ms=10;
			CD.PowerMode=CD_POWER_RESET_ON;
			break;
		case CD_POWER_RESET_ON:
			if(CD.PowerTimer10ms>0)break;
			Pin_CD_RESET=1;
			CD.PowerMode=CD_POWER_WAIT_INIT_MSG;
			CD.PowerTimer10ms=100;
			break;
		case CD_POWER_WAIT_INIT_MSG:
			//if(CD.PowerTimer10ms==0)
			//	CD.PowerMode=CD_POWER_ERROR;
			//break;
		case CD_POWER_INIT:
			//if(CD.PowerTimer10ms==0)
			//	CD.PowerMode=CD_POWER_ERROR;
			if(CD.PowerTimer10ms==0)
				CD.PowerMode=CD_POWER_STANDBY;
			break;
		case CD_POWER_STANDBY:
			if(CD.PowerReq==OFF_TO_NORMAL)
				CD.PowerMode=CD_POWER_STANDBY_TO_NORMAL_REQ;
			else if(CD.PowerReq==NORMAL_TO_OFF)
				CD.PowerMode=CD_POWER_STANDBY_TO_OFF_REQ;
			else if(CD.PowerReq==OFF_TO_STANDBY ||CD.PowerReq==NORMAL_TO_STANDBY)
				CD.PowerReq=0;
				
			break;
		case CD_POWER_STANDBY_TO_NORMAL_REQ:
			Pin_CD_ON=1;
			CD.PowerMode=CD_POWER_STANDBY_TO_NORMAL;
			CD.PowerTimer10ms=100;
			break;
		case CD_POWER_STANDBY_TO_NORMAL:
			//if(CD.PowerTimer10ms==0)
			//	CD.PowerMode=CD_POWER_ERROR;
			if(CD.PowerTimer10ms==0)
				CD.PowerMode=CD_POWER_NORMAL;
			break;
		case CD_POWER_NORMAL:
			if(CD.PowerReq==OFF_TO_NORMAL ||CD.PowerReq==STANDBY_TO_NORMAL)
				CD.PowerReq=0;
			
			break;
		case CD_POWER_NORMAL_TO_STANDBY_REQ:
			Pin_CD_ON=0;
			CD.PowerMode=CD_POWER_NORMAL_TO_STANDBY;
			CD.PowerTimer10ms=10;
			break;
		case CD_POWER_NORMAL_TO_STANDBY:
			if(CD.PowerTimer10ms==0)
				CD.PowerMode=CD_POWER_STANDBY_TO_OFF_REQ;
			break;
		case CD_POWER_STANDBY_TO_OFF_REQ:
			Pin_CD_RESET=0;
			//Pin_CD_POWER=0;
			CD.PowerMode=CD_POWER_OFF;
			break;
		case CD_POWER_ERROR:
			
			break;
		
	}
	
}

void CDWork(unsigned char command)
{
	CD.WorkReq=command;
}

void CDWorkMode(void)
{

	switch(System.FWorkMode.Next)
	
	{
		case WORKMODE_DISC:
			#ifdef DEBUG_SCI_ENABLE		
			SCI_SendString("WORKMODE_DISC");
	#endif	
			CD.WorkMode=CD_WORKMODE_DISC;
			CDSendCommand(CD_CMD_SOURCE_TO_DISC);
			CD.WorkTimer1s=5;
			CD.DispMode=CD_DISP_DISC_READ;
			CD.F_DispReq=1;
			
			break;
		case WORKMODE_USB:
			#ifdef DEBUG_SCI_ENABLE		
			SCI_SendString("WORKMODE_USB");
	#endif	
			CD.WorkMode=CD_WORKMODE_USB;
			CDSendCommand(CD_CMD_SOURCE_TO_USB);
			CD.WorkTimer1s=12;//when CD power on, USB inserting msg need long time to feedback
			CD.DispMode=CD_DISP_USB_READ;
			CD.F_DispReq=1;
			break;
		case WORKMODE_SD:
			#ifdef DEBUG_SCI_ENABLE		
			SCI_SendString("WORKMODE_SD");
	#endif	
			CD.WorkMode=CD_WORKMODE_SD;
			CDSendCommand(CD_CMD_SOURCE_TO_SD);
			CD.WorkTimer1s=15;
			CD.DispMode=CD_DISP_SD_READ;
			CD.F_DispReq=1;
			break;
	}
	switch(System.FWorkMode.Last)
	{
	
		case WORKMODE_DISC:
		case WORKMODE_USB:
		case WORKMODE_SD:
			//if(CD.PlayMode!= CD_PLAY_STOP&&!(CD.PlayMode== CD_PLAY_ACCESS&&CD.PlayMode_PAR2==CD_PLAY_ACCESS_STOP))//cis0.8
			if(CD.PlayMode!= CD_PLAY_STOP)//cis0.9
				CDSendCommand(CD_CMD_STOP);
			break;
	}
	switch(CD.WorkMode)
	{
		case CD_WORKMODE_IDLE:
		
			if(System.FWorkMode.Current==WORKMODE_SD&&CD.NoSD)
			{	
				CD.WorkMode=CD_WORKMODE_AUTOCHANGE;
				CD.DispMode=CD_DISP_NOSD;
				CD.F_DispReq=1;
				CD.WorkTimer1s=3;
			}
			else if(System.FWorkMode.Current==WORKMODE_USB&&CD.NoUSB)
			{	
				//if(O_J14 == 0)
					CD.WorkMode=CD_WORKMODE_AUTOCHANGE;
				CD.DispMode=CD_DISP_NOUSB;
				CD.F_DispReq=1;
				//if( O_J14 == 0 )
					CD.WorkTimer1s=3;
			}
			break;

		case CD_WORKMODE_POWER_ON_REQ:
			if(CD.PowerMode==CD_POWER_OFF)
				CDPower(OFF_TO_NORMAL);
			else
				CDPower(STANDBY_TO_NORMAL);
			CD.WorkMode=CD_WORKMODE_POWER_ON_WAIT_NORMAL;
			break;
		case CD_WORKMODE_POWER_ON_WAIT_NORMAL:
			if(CD.PowerMode==CD_POWER_NORMAL)
			{
				CD.WorkMode=CD_WORKMODE_IDLE;
			}
			break;

		case CD_WORKMODE_POWER_OFF_REQ:
			//if(CD.PlayMode!=CD_PLAY_STOP&&!(CD.PlayMode== CD_PLAY_ACCESS&&CD.PlayMode_PAR2==CD_PLAY_ACCESS_STOP))
			if(CD.PlayMode!=CD_PLAY_STOP)
				CDSendCommand(CD_CMD_STOP);
			CD.WorkMode=CD_WORKMODE_POWER_OFF_WAIT;
			break;
			
		case CD_WORKMODE_POWER_OFF_WAIT:
			if(CD.PowerMode==CD_POWER_NORMAL)
				CDPower(NORMAL_TO_OFF);
			else
				CDPower(STANDBY_TO_OFF);
			CD.WorkMode=CD_WORKMODE_IDLE;
			break;
			
			
		/*
		case CD_WORKMODE_POWER_ON_REQ:
			if(CD.PowerMode==CD_POWER_OFF)
				CDPower(OFF_TO_NORMAL);
			else
				CDPower(STANDBY_TO_NORMAL);
			CD.DispMode=CD_DISP_READING;
			CD.F_DispReq=1;
			CD.WorkMode=CD_WORKMODE_POWER_ON_WAIT_NORMAL;
			break;
		case CD_WORKMODE_POWER_ON_WAIT_NORMAL:
			if(CD.PowerMode==CD_POWER_NORMAL)
				CD.WorkMode=CD_WORKMODE_POWER_ON_WAIT_LOADER;
			break;
		case CD_WORKMODE_POWER_ON_WAIT_LOADER:
			if(CD.F_NewLoaderMode)
			{
				CD.F_NewLoaderMode=0;
				if(CD.LoaderMode==CD_LODER_NODISC)
				{
					CD.DispMode=CD_DISP_NODISC;
					CD.F_DispReq=1;
					CD.WorkMode=CD_WORKMODE_POWER_WAIT_TO_RETURN;
					CD.PowerTimer10ms=250;
				}				
				else if((CD.LoaderMode==CD_LODER_STOP_POS || CD.LoaderMode==CD_LODER_INSERTING)
					&&CD.WorkReq==POWERON_LOAD_EJECT)
				{
					CD.WorkReq=0;
					CDSendCommand(CD_CMD_EJECTDISC);
					CD.WorkMode=CD_WORKMODE_POWER_WAIT_EJECTPOS;
					CD.PowerTimer10ms=250;
				}
				else if((CD.LoaderMode==CD_LODER_EJECT_POS ||CD.LoaderMode==CD_LODER_EJECTING)
					&&CD.WorkReq==POWERON_LOAD_EJECT)
				{
					CD.WorkReq=0;
					CDSendCommand(CD_CMD_LOADDISC);
					CD.WorkMode=CD_WORKMODE_POWER_WAIT_STOPPOS;
					CD.PowerTimer10ms=250;
				}
				else
				{
					CD.WorkMode=CD_WORKMODE_POWER_ON_WAIT_PLAYER;
					CDSendCommand(CD_CMD_SOURCE_TO_DISC);
					CD.DispMode=CD_DISP_DISC_READ;
					CD.F_DispReq=1;
				}
			}
			else
			{
				if(F_HalfSecondOut)
					CDSendCommand(CD_CMD_REQ_STATE);
			}
			break;
		case CD_WORKMODE_POWER_WAIT_EJECTPOS:
			if(CD.LoaderMode==CD_LODER_EJECT_POS)
			{
				CD.WorkMode=CD_WORKMODE_POWER_OFF_REQ;
			}
			break;
		case CD_WORKMODE_POWER_WAIT_STOPPOS:
			if(CD.LoaderMode==CD_LODER_STOP_POS)
			{
				CD.WorkMode=CD_WORKMODE_POWER_OFF_REQ;
			}
			break;
		case CD_WORKMODE_POWER_OFF_REQ:
			//CDSendCommand(CD_CMD_POWEROFF);
			//CDSendCommand(CD_CMD_STOP);
			CD.WorkMode=CD_WORKMODE_POWER_OFF_WAIT;
			break;
		case CD_WORKMODE_POWER_OFF_WAIT:
			if(F_HalfSecondOut)
			{
				if(CD.PlayMode!=CD_PLAY_STOP)
					CDSendCommand(CD_CMD_STOP);
				else
					CD.WorkMode=CD_WORKMODE_POWER_OFF_WAIT2;
			}
			break;
		case CD_WORKMODE_POWER_OFF_WAIT2:
			if(CD.PowerMode==CD_POWER_NORMAL)
				CDPower(NORMAL_TO_OFF);
			else
				CDPower(STANDBY_TO_OFF);
			CD.WorkMode=CD_WORKMODE_IDLE;
			break;
		case CD_WORKMODE_POWER_OFF_REQ:
			CDSendCommand(CD_CMD_STOP);
			CD.WorkMode=CD_WORKMODE_IDLE;
			
		case CD_WORKMODE_POWER_WAIT_TO_RETURN:
			if(CD.PowerTimer10ms>0)break;
			ChangeFWorkmode(WORKMODE_RADIO);
			CD.WorkMode=CD_WORKMODE_IDLE;
			break;
			
		case CD_WORKMODE_ERROR:
			break;
			*/
		case CD_WORKMODE_AUTOCHANGE:
			if(CD.WorkTimer1s>0 )break;
			ChangeFWorkmode(WORKMODE_RADIO);
			CD.WorkMode=CD_WORKMODE_IDLE;
			break;

		case CD_WORKMODE_DISC:
			if(CD.F_NewLoaderMode)
			{
				CD.F_NewLoaderMode=0;
				if(CD.DISC_Ready)
				{
					CD.WorkMode=CD_WORKMODE_POWER_ON_WAIT_PLAYER;
					if(CD.CD_CIS_0_0_9)
					{
						CDSendCommand(CD_CMD_REQ_START_TOC);
						CD.WorkTimer1s=50;//wait toc
					}
				}
/*				

				else if(CD.DISC_EJect)
					CDSendCommand(CD_CMD_LOADDISC);
*/					
				else if(CD.DISC_EJect)
					{
					CD.DispMode=CD_DISP_DISC_EJECT;
					CD.F_DispReq=1;
					}					
				else if(CD.DISC_Block)
				{
					CD.WorkMode=CD_WORKMODE_AUTOCHANGE;
					CD.DispMode=CD_DISP_DISC_ERROR;
					CD.F_DispReq=1;
					CD.WorkTimer1s=3;
				
				}
				else if(CD.DISC_Insert)
				{
					CD.WorkTimer1s=3;
					CD.DispMode=CD_DISP_DISC_READ;
					CD.F_DispReq=1;
				}
			}
			else
			{
				if(CD.NoDISC)
				{	
					CD.WorkMode=CD_WORKMODE_AUTOCHANGE;
					CD.DispMode=CD_DISP_NODISC;
					CD.F_DispReq=1;
					CD.WorkTimer1s=3;
				}
				else if(CD.WorkTimer1s>0)
				{
			
					if(F_HalfSecondOut)
						CDSendCommand(CD_CMD_REQ_LOADERSTATE);
					
				}
				else
				{
					CD.WorkMode=CD_WORKMODE_AUTOCHANGE;
					CD.DispMode=CD_DISP_NODISC;
					CD.F_DispReq=1;
					CD.WorkTimer1s=3;
				}
			}
			break;
		case CD_WORKMODE_USB:
			if(CD.USB_Ready)
			{
				//if(  O_J14 == 0 )
				{
					CD.WorkMode=CD_WORKMODE_POWER_ON_WAIT_PLAYER;
					CD.WorkTimer1s=3;
				}
			}
			else if(CD.NoUSB)
			{	
				//if(  O_J14 == 0 )
					CD.WorkMode=CD_WORKMODE_AUTOCHANGE;
				CD.DispMode=CD_DISP_NOUSB;
				CD.F_DispReq=1;
				//if(  O_J14 == 0 )
					CD.WorkTimer1s=3;
			}
			else if(CD.USB_Error||CD.USB_Unknown)
			{	
				//if(  O_J14 == 0 )
					CD.WorkMode=CD_WORKMODE_AUTOCHANGE;
				CD.DispMode=CD_DISP_USB_ERROR;
				CD.F_DispReq=1;
				//if(  O_J14 == 0 )				
					CD.WorkTimer1s=3;
			}
			else
			{
				if(CD.WorkTimer1s==0 )
				{
					//if(  O_J14 == 0 )				
						CD.WorkMode=CD_WORKMODE_AUTOCHANGE;
					CD.DispMode=CD_DISP_COMMUNICATION_ERROR;
					CD.F_DispReq=1;
					//if(  O_J14 == 0 )
						CD.WorkTimer1s=3;
				}
			}
			break;

		case CD_WORKMODE_SD:
			if(CD.SD_Ready)
			{
				CD.WorkMode=CD_WORKMODE_POWER_ON_WAIT_PLAYER;
				CD.WorkTimer1s=3;
			}
			else if(CD.NoSD)
			{	
				CD.WorkMode=CD_WORKMODE_AUTOCHANGE;
				CD.DispMode=CD_DISP_NOSD;
				CD.F_DispReq=1;
				CD.WorkTimer1s=3;
			}
			else if(CD.SD_Error||CD.SD_Unknown)
			{	
				CD.WorkMode=CD_WORKMODE_AUTOCHANGE;
				CD.DispMode=CD_DISP_SD_ERROR;
				CD.F_DispReq=1;
				CD.WorkTimer1s=3;
			}
			else
			{
				if(CD.WorkTimer1s==0)
				{
					CD.WorkMode=CD_WORKMODE_AUTOCHANGE;
					CD.DispMode=CD_DISP_COMMUNICATION_ERROR;
					CD.F_DispReq=1;
					CD.WorkTimer1s=3;
				}
			}
			break;

			
		case CD_WORKMODE_POWER_ON_WAIT_PLAYER:
			
			if(CD.F_NewPlayMode)
			{
				CD.F_NewPlayMode=0;
				//if(CD.PlayMode!=CD_PLAY_PLAY)
				//Yete: May-22-2007---Wait for TOC ready when in disc mode
				if(CD.CD_CIS_0_0_9)
				{
					if((CD.PlayMode==CD_PLAY_PAUSE && System.FWorkMode.Current == WORKMODE_DISC) 
                                    	 || (CD.PlayMode!=CD_PLAY_PLAY 
                                        	 &&( System.FWorkMode.Current==WORKMODE_USB || System.FWorkMode.Current==WORKMODE_SD)))
					{
						CDSendCommand(CD_CMD_PLAY);
						CD.WorkMode=CD_WORKMODE_POWER_ON_PLAY;
						CDMute(SOFTOFF);
						CD.WorkTimer1s=20;
					}
				}

				if(CD.CD_CIS_3_25)
				{
					CDSendCommand(CD_CMD_PLAY);
					CD.WorkMode=CD_WORKMODE_POWER_ON_PLAY;
					CDMute(SOFTOFF);
					CD.WorkTimer1s=20;
				}
			}
			else
			{
				if(CD.WorkTimer1s>0)
				{
					if(F_HalfSecondOut)
						CDSendCommand(CD_CMD_REQ_PLAYERSTATE);
				}
				else

⌨️ 快捷键说明

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