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

📄 19264cv0_1.c

📁 V型机LCD程序2005-11-5,V型机LCD程序2005-11-5
💻 C
📖 第 1 页 / 共 5 页
字号:
	 					//CommSMSProcess(p);//短信存储
						//ReturnOK(0x51);
						break;

					 //以下为对接收的主机应答液显屏数据的处理

					case 0x30://发送标志码后主机的应答。收到主机的应答后
						  //才可以开始。。。
						if(RxMain_data[5]==0x00)
							COMM_OK=1;
						else
						 	COMM_OK=0;
						 RxMain_end=FALSE;
						 break;
					case 0x31://设置IP
						KEYVAL_OK=RxMain_data[5];
						break;
					case 0x39://发送键值后主机的回应。
					 	 
						 RxMain_end=FALSE;
						 break;
					case 0x3e://校验主机IP 以及短信中心设置密码
						
						if(RxMain_data[5]==0)
							KEYVAL_OK=1;
						else
							KEYVAL_OK=0;
						break;

					/*
					 case 0x43://发送短语或者业务代码后主机的回应。
					 	 if(RxMain_data[5]==0x00)
						 	KEYVAL_OK=1;
						 else
						 	KEYVAL_OK=0;
						 RxMain_end=FALSE;
						 //Dispchar(0,0,0x38,1);//for debug
						 break;
						*/
					 case 0x63://收到主机发送的热线、短信中心、报警、号码
					 	p1tune(RAMCS);
						HotLineCnt=0;
						if(RxMain_data[5]==0x00&&RxMain_data[6]==0x00&&RxMain_data[7]==0x01)//是否是热线号码
						{
							k=9;
							for(i=0;i<6;i++)
							{
								for(j=0;j<24;k++)
								{	//如果收到结束符或者超出接收数组的实际长度
									checksum=RxMain_data[k];
									if((checksum==0x22)||(checksum==0x2c))
									{	HotLineNum[i][j]=0x0d;
										//if((RxMain_data[k-1]>0x2f)&&(RxMain_data[k-1]<0x3a))
										HotLineCnt++;//
										if(checksum==0x22)
											i=6;
										j=24;
										
									}
									else
									{	HotLineNum[i][j]=checksum;//																
										j++; 
								
									}
													
								}
								
									
							}
							
						      	KEYVAL_OK=1;
							Dispchar(4,0,(number_ascii(HotLineCnt)),1);
							//while(1);
							//HotLineCnt=3;//
							break;		
						
						}
						else
						{	
							if(RxMain_data[5]==0x00&&RxMain_data[6]==0x00&&RxMain_data[7]==0x05)
								
								goto LabSMS;
							else
							{	KEYVAL_OK=0;
								//取热线电话。。。
								TxCommandBuf[0]=0x63;
								TxCommandBuf[1]=0x00;
								TxCommandBuf[2]=0x01;
								TxCommandBuf[3]=0x0d;
								TxCmdCnt=0x03;
								TxCommand();//发送取热线号码命令
							}
						}		
						////接收短信中心号码
						LabSMS:
						p1tune(RAMCS);
						if(RxMain_data[5]==0x00&&RxMain_data[6]==0x00&&RxMain_data[7]==0x05)
						{	//是否是短信中心号码
							
							
								for(j=0,k=9;j<24;j++,k++)
								{	//如果收到结束符或者超出接收数组的实际长度
									p1tune(RAMCS);
									if(RxMain_data[k]==0x22||RxMain_data[k]==0x2c)
									{	SMS_CenterTel[j]=0x0d;
										break;
									}
									SMS_CenterTel[j]=RxMain_data[k];																
																
								}
								if(RxMain_data[k]==0x22)
								{	i++;
									//HotLineCnt=i;
									
								}		
							
						      	KEYVAL_OK=1;
							break;		
						
						}
						else
						{	KEYVAL_OK=0;
							//取热线电话。。。
							/*TxCommandBuf[0]=0x63;
							TxCommandBuf[1]=0x00;
							TxCommandBuf[2]=0x05;
							TxCommandBuf[3]=0x0d;
							TxCmdCnt=0x03;
							TxCommand();*///发送取热线号码命令
						}		
						break;
						 
					 case 0x64://主机发送来电号码到外设
					 	 p1tune(RAMCS);
						 ReturnOK(0x64);
						 bGSM_GPRS=0;//GSM状态
						 if(NoTalkCnt>=20)
						 	NoTalkCnt=20;//未接听电话计数器
						else
							NoTalkCnt++;//未接听电话计数器
						 p1tune(RAMCS);
						 if(ComeTelCnt>=20) 
						 {	 
						 	ComeTelCnt=20;													
							for(i=ComeTelCnt-1;i>0;i--)
							{
								ComeTel[i]=ComeTel[i-1];
								ComeTel[i].ComeTelNumber=i+1;
								
							}
							//记录移动结束
							j=0;
							ComeTel[0].ComeTelNumber=1;
							 	
						 }
						 else
						 {
						 	if(ComeTelCnt>0)
						  	{
								for(i=ComeTelCnt;i>0;i--)
								{
									ComeTel[i]=ComeTel[i-1];
									ComeTel[i].ComeTelNumber=i+1;
								
								}
												
							}

							j=0;
						 	ComeTelCnt++;
							ComeTel[0].ComeTelNumber=1; 												
						 
						 }
						 for(i=4,j=5;j<p;j++)//存电话号码
						 {	if(i<24) 
							{ 	ComeTelBuf[i]=RxMain_data[j];	
							 	i++;
							}
							else	break;			 
						 }
						 for(;i<24;i++)//号码不满一行填空格
						  	ComeTelBuf[i]=0x20;
						 p1tune(RAMCS);						 						 
						 ComeTel[0].TalkFlag=0x2a;//标志:未接、未存。“*”
						 					 
						 for(i=0,j=4;i<22;i++,j++)//存号码
						 {
						 	ComeTel[0].ComeTel[i]=ComeTelBuf[j];	
						 							 
						 }

						 if(gps_dingw)//如果当前GPS信号有效,存GPS时间
						 {	 
						 	for(i=0;i<4;i++)
								ComeTel[0].ComeTelDate[i]=0x20;
							for(i=4,j=0;i<24;i++)//存当前日期时间
							 {
							 	if(i>20)
									ComeTel[0].ComeTelDate[i]=0x20;
								else
								{
								
									ComeTel[0].ComeTelDate[i++]=yymmtt[j++];
									ComeTel[0].ComeTelDate[i++]=yymmtt[j++];
								}		
							 							 
							 }
							 ComeTel[0].ComeTelDate[6]=0x2d;//"-"
							 ComeTel[0].ComeTelDate[9]=0x2d;//"-"
							 ComeTel[0].ComeTelDate[12]=0x20;//" "
							 ComeTel[0].ComeTelDate[15]=0x3a;//"-"
							 ComeTel[0].ComeTelDate[18]=0x3a;//"-"
							 ComeTel[0].ComeTelDate[21]=0x20;//"-"
						 }
						else//GPS无信号。填充“??-??-?? ??:??”
						{
							for(i=0;i<24;i++)
							{
								ComeTel[0].ComeTelDate[i]=0x20;
							}
							/*
							for(i=0;i<4;i++)
								ComeTel[0].ComeTelDate[i]=0x20;
							for(i=4;i<20;i++)
								ComeTel[0].ComeTelDate[i]=0x3f;//"?"
							ComeTel[0].ComeTelDate[8]=0x2d;//"-"
							ComeTel[0].ComeTelDate[11]=0x2d;//"-"
							ComeTel[0].ComeTelDate[14]=0x20;//"空格"
							ComeTel[0].ComeTelDate[17]=0x3A;//":"
							for(i=20;i<24;i++)
								ComeTel[0].ComeTelDate[i]=0x20;//
							*/
						
						}		
						
						ComeTelTimer=0;//启动来电超时定时器//40S
						comeingtelep=1;//新来电标志
						dispteleph=1;
						CallStatus=0x04;//来电状态		
						break;													 	
					default:
						RxMain_end=FALSE;
						break;
				
				
				}
					
			}

		}
		
		
		RxMain_end=0;
		//p1tune(RAMCS);			
		//RxMain_data[0]=0x36;
			
	}
		
}

void p1tune(uchar temp)//向P1口送片选信号函数。
{
	
	switch(temp)
	{
		case 0:
			P12=0;
			P13=0;
			P14=0;
			//mcsbak=0x00;
			break;
		case 1:
				
			P12=1;
			P13=0;
			P14=0;
			//mcsbak=0x01;
			break;
		case 2:
			P12=0;
			P13=1;
			P14=0;
			//mcsbak=0x02;
			break;
		case 3:
			
			P12=1;
			P13=1;
			P14=0;
			//mcsbak=0x03;
			break;
	       case 4:
			
			P12=0;
			P13=0;
			P14=1;
			//mcsbak=0x04;
			break;
	       case 5:
			
			P12=1;
			P13=0;
			P14=1;
			//mcsbak=0x05;
			break;
	       case 6:
			
			P12=0;
			P13=1;
			P14=1;
			//mcsbak=0x06;
			break;
	      case 7:
			
			P12=1;
			P13=1;
			P14=1;
			//mcsbak=0x07;
			break;
	} 

}
void  antennaroue1(void)//显示12*12的信号强度或者GPRS图标
{	//  获取GSM信号强度值。并将相应点阵码送如x12dote[0][12]-2[]

uchar	data i,j,k,temp,temp1;
//extern uchar code signel1[2][12];
	uchar code * discodeprt;
	p1tune(mcs138=RAMCS);
	LCDRWIO=1;
	LCDDIIO=1;
	if(bGSM_GPRS)//显示GPRS图标
	{	
		discodeprt=&Bmp12_Gprs[0][0];
		
		for(i=0;i<2;i++)
		{
			for(k=0,j=12;j<24;j++,k++)
			{	temp1=*(discodeprt++);
				temp1 = bytetune(temp1);
				x12dote[i][j]=temp1;
			}
		}
	}
	else
	{	
		OldAntennaVal=antenna;//
		discodeprt=&signel1[0][0];
		if(antenna==0) temp=0;
		if((antenna<11)&&(antenna>0))  temp=2;	// 1格信号
		if((antenna<16)&&(antenna>10)) temp=4;	// 2格信号
		if((antenna<20)&&(antenna>15)) temp=6;	// 3格信号
		if((antenna<26)&&(antenna>19)) temp=8;	// 4格信号
		if((antenna<32)&&(antenna>25)) temp=10;	// 5格信号
				
		for(i=0;i<2;i++)
		{
			for(k=0,j=12;j<24;j++,k++)
			{	temp1=*(discodeprt++);
				temp1 = bytetune(temp1);
				if(temp>k)
			 		x12dote[i][j]=temp1;
				else
					x12dote[i][j]=0x00;
			}
		}// 以上是信号强度 temp是等级2 4 6 8 10 等级
		
	}
	
	//temp = (antenna/3);	// antenna 1--31
}

void dis12dote(uchar x,uchar y,uchar * poniter,bit tempsign)
{	//是汉字时 tempsign=0//  应该是:如果要反显	tempsign=1;
//x指示x12dote[i][j]中i值,y指示其中j值。用于天线及GSM信号强度2004.06.11 mers
uchar data i,j,temp;
uchar * discodeprt=poniter;
	LCDRWIO=1;
	LCDDIIO=1;
	p1tune(mcs138=RAMCS);
	for(i=x;i<x+2;i++)
	{
		for(j=6*y;j<(6*y+6);j++)
		{	temp=*(discodeprt++);
			temp = bytetune(temp);
			if(tempsign)
				temp=~temp;
			x12dote[i][j]=temp;//////////////////////////////////////////////
		}
	}
}
void dis12dote1(uchar x,uchar y,uchar * poniter,bit tempsign)
{	
uchar data i,j,temp;
uchar * discodeprt=poniter;
	LCDRWIO=1;
	LCDDIIO=1;
	p1tune(mcs138=RAMCS);
	for(i=x;i<x+2;i++)
	{
		for(j=6*y;j<(6*y+12);j++)
		{	temp=*(discodeprt++);
			temp = bytetune(temp);
			if(tempsign)
				temp=~temp;
			x12dote[i][j]=temp;
		}
	}
}
//--------------------------------------------
void dotetimedate(void)
{extern uchar code dote12_l[];
extern uchar code dote12_0[];extern uchar code dote_yue[];
extern uchar code dote_rei[];extern uchar code dote12_m[];
extern uchar code dote12_k[];extern uchar code dote12_h[];
extern uchar code dote_nai[];extern uchar code dote_dian[];
extern uchar code dote_xing[];extern uchar code dote_mao[];
extern uchar code dote_nop[];
uchar data i,j,temp;
uchar *discodeprt;
	LCDRWIO=1;
	LCDDIIO=1;
	p1tune(mcs138=RAMCS);
	xytime[4] =13;xytime[16] =13;	// 经度与纬度中的小数点
	for(i=1,j=0;i<7;i++)	//日期
	{
		temp=(yymmtt[i+1-j])&0x0f;
		if((temp==0x00)&&(i==1))
			{dis12dote(2,i,dote_nop,0);continue;}
		if(i==3)
			{dis12dote1(2,i,dote_yue,0);i++;j++;j++;continue;}
		discodeprt = &dote12_0[0]+temp*12;
		dis12dote(2,i,discodeprt,0);
	}
	dis12dote1(2,7,dote_rei,0);

	for(i=0,j=0;i<8;i++)	//时间
	{	temp=(yymmtt[i-j+6])&0x0f;
		if((i==2)|(i==5))
			{temp=10;j++;}
		discodeprt = &dote12_0[0]+temp*12;
		dis12dote(2,i+10,discodeprt,0);
	}
/*	for(i=0,j=0;i<8;i++)	//日期
	{	temp=(yymmtt[i-j])&0x0f;
		if((i==2)|(i==5))
			{temp=14;j++;}
		discodeprt = &dote12_0[0]+temp*12;
		dis12dote(2,i+8,discodeprt);
	}
	for(i=0,j=0;i<8;i++)	//时间
	{	temp=(yymmtt[i-j+6])&0x0f;
		if((i==2)|(i==5))
			{temp=10;j++;}
		discodeprt = &dote12_0[0]+temp*12;
		dis12dote(4,i+6,discodeprt);
	}
*/	for(i=0,j=0;i<5;i++)	//显示速度
	{	temp=(speedfang1[i])&0x0f;
		discodeprt = &dote12_0[0]+temp*12;
		dis12dote(4,i+6,discodeprt,0);
		if(temp==13)
			break;
	}

	temp=(speedfang1[i+1])&0x0f;i=i+7;
	discodeprt = &dote12_0[0]+temp*12;
	dis12dote(4,i++,discodeprt,0);	// 小数点值
	dis12dote(4,i++,dote_nop,0);
	dis12dote(4,i++,dote12_k,0);	//k
	dis12dote(4,i++,dote12_m,0);	//m
	dis12dote(4,i++,dote12_l,0);	//'/'
	dis12dote(4,i++,dote12_h,0);	//h
	for(;i<19;i++)
		dis12dote(4,i,dote_nop,0);
	for(i=0,j=0;i<11;i++)	//经度
	{	temp=(xytime[i-j])&0x0f;
		//if((i==2)|(i==5)|(i==10)|(i==6))

⌨️ 快捷键说明

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