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

📄 atframe.c

📁 pic18f6520上运行的gprs通讯处理程序
💻 C
📖 第 1 页 / 共 3 页
字号:

void CheckLine(void)
{
//	if(WorkFG.bits.Online)
//	{
		if(SecCnt&0x01) return;
//	}
	if(Framept2.pt!=RXpt2.pt) return;
	
	ATcipstatus();
	if(WaitFrame2()!=1)
	{
	CheckLine_err:
		WorkFG.bits.InitErr=1;
		return;
	}
	Framept2.data=FrameEnd2.data;
	R3=*(Framept2.pt-3);
	COMFG2.bits.AFrame=0;
	if(R3=='8')
	{
		if(!WorkFG.bits.Online)
		{
			if(ConnectOkEN)
			{
				ConnectOk=1;
				ConnectOkEN=0;
			}
			WorkFG.bits.Online=1;
		}
		Connecting=0;
		SIG_Lap=0;
		return;
	}
	else 
	{
	//	if((R3<=0x39)&&(R3>=0x30)&&(R3!=0x38))
	//	{
			WorkFG.bits.Online=0;
			Connecting=1;
	//	}
	}
	
	if(!WorkFG.bits.Online)
	{
		if(SecRedail>=SetReSec)	// if Online=0, per 16sec connect
		{
			if(++ReDialCnt>=3)
				RUNERR();
			ATcipclose();
			if(WaitFrame2()!=1)
				goto CheckLine_err;
			ResetCOMBUF2();	
			ATcipstart();
			if(Wait300d_2()!=1) 
				goto CheckLine_err;
			ResetCOMBUF2();
			R0=40;
			while(R0--)
			{
				Delay50ms();
			}
			SecRedail=0;
			ConnectOkEN=1;
		}
	}
}
	
		
void InitGPRS(void)
{
	SendATFG.ch=0;
	WorkFG.ch=0;
	WorkFG.bits.TestMS=1;
	ATclear();
	Delay50ms();
	Delay50ms();
	Delay50ms();
	Delay50ms();
	ATev();
	Delay50ms();
	Delay50ms();
	ResetCOMBUF1();
	ResetCOMBUF2();
//	ATuart();
//	Delay50ms();
//	Delay50ms();
//	if(Wait300d_2()!=1) 
//		goto InitGPRS_err;
	ATev();
	if(Wait300d_2()!=1)
	{
		Nop();
	InitGPRS_err:
		WorkFG.bits.InitErr=1;
		return;
	}
	
	ATcscs();
	if(Wait300d_2()!=1)
		goto InitGPRS_err;
//	ATcfun();
//	if(Wait300d_2()!=1) goto InitGPRS_err;
	ATcmgf();
	if(Wait300d_2()!=1) 
		goto InitGPRS_err;
	ATcnmi();
	if(Wait300d_2()!=1) 
		goto InitGPRS_err;
	
	R0=40;
	WorkFG.bits.NetERR=1;
	while(R0--)
	{
		ATcreg();
		if(WaitFrame2()!=1)
			goto InitGPRS_err;
		ATframe();
		Delay50ms();
		Delay50ms();
		Delay50ms();
		Delay50ms();
		Delay50ms();
		Delay50ms();
		Delay50ms();
		Delay50ms();
		Delay50ms();
		Delay50ms();
		SecErr=0;
		if(COMFG2.bits.AFrame) ATframe();
		if(!WorkFG.bits.NetERR) break;
	}
	if(WorkFG.bits.NetERR)
		goto InitGPRS_err;	//*/
//	ATcops();
//	if(WaitFrame2()!=1) goto InitGPRS_err;
//	ATframe();
/*	R0=200;
	while(R0--)
	{
		Delay50ms();
		SecErr=0;
	}
*/
	ATcipshut();
	if(WaitFrame2()!=1) goto InitGPRS_err;
	Delay50ms();
	Delay50ms();
	ResetCOMBUF2();

	ATciphead();		//1
	if(Wait300d_2()!=1) 
		goto InitGPRS_err;
	ATcipsprt();		//1
	if(Wait300d_2()!=1)
		goto InitGPRS_err;
	ATcipflp();		//1
	if(Wait300d_2()!=1) 
		goto InitGPRS_err;
	ATcipsrip();		//0
	if(Wait300d_2()!=1) 
		goto InitGPRS_err;
	ATcdnsorip();		//0
	if(Wait300d_2()!=1) 
		goto InitGPRS_err;
	ATcipdpdp();		//=1,120,255
	if(Wait300d_2()!=1)
		goto InitGPRS_err;
	ATcipmode();
	if(Wait300d_2()!=1) 
		goto InitGPRS_err;
	ATcipstart();
	if(Wait300d_2()!=1) 
		goto InitGPRS_err;
	ResetCOMBUF2();
	WorkFG.bits.InitErr=0;
	SecRedail=0;
	SecCnt=0;
	MinTest=0;
	ReDialCnt=0;
	ConnectOkEN=1;
}


void sendAT(void)
{
	SendATFG.bits.ATing=1;
	TXpt1.pt=ATBUF;
	TXOVERTMR2=0;
	while(TXOVERTMR2<30)		//240ms
	{
		Com1Trans();
		if(!SendATFG.bits.ATing) 
			break;
	}
	Nop();
}








void Serialframe(void)
{
	SFrameFG.ch=0;
	if(COMFG1.bits.BUF_over)
	{
		INTCONbits.GIE=0;
		ResetCOMBUF1();
		INTCONbits.GIE=1;
	}
	if(COMFG1.bits.FramErr)
	{
		INTCONbits.GIE=0;
		Framept1.data=FrameErr1.data;
		COMFG1.bits.FramErr=0;
		COMFG1.bits.AFrame=0;
		INTCONbits.GIE=1;
	}	//*/
	INTCONbits.GIE=0;
	RXptbak.pt=RXpt1.pt;
	INTCONbits.GIE=1;
	if(!COMFG1.bits.AFrame)
	{
		if(Framept1.data==RXptbak.data)	return;
	}
	if(SendATFG.bits.Tranning) 
		return;

	temp4.Uchp=Framept1.pt;		//temp4.Uchp 存储FRAME指针
	Get_char1();
	if(R3=='#')
	{
		Get_char1();
		if(R3!='#') goto check1_continue;
		Get_char1();
		if(R3!='#') goto check1_continue;
		Get_char1();
		if(R3!='*') goto check1_continue;
		Get_char1();
		if(R3!='*') goto check1_continue;
		Get_char1();
		if(R3!='*') goto check1_continue;
		Get_char1();
		
		if(!COMFG1.bits.AFrame) return;
		Framept1.data=FrameEnd1.data;
		COMFG1.bits.AFrame=0;
		if(R3=='?')
		{
			Get_char1();
			if(R3!='?') return;	//此帧数据无效
			Get_char1();
			if(R3!='?') return;
			if((COMFG2.ch&0x0f)||SendATFG.bits.IPDing)
			return;
			INTCONbits.GIE=0;
			ResetCOMBUF2();
			COMBUF2[0]='#';
			COMBUF2[1]='#';
			COMBUF2[2]='#';
			COMBUF2[3]='*';
			COMBUF2[4]='*';
			COMBUF2[5]='*';
			COMBUF2[6]=0x0d;
			COMBUF2[7]=0x0a;
			
			COMBUF2[8]=' ';
			COMBUF2[9]=' ';
			COMBUF2[10]='H';
			COMBUF2[11]='D';
			COMBUF2[12]='=';
			COMBUF2[13]='0';
			if(CONFIGFG.bits.enID) COMBUF2[13]='1';
			COMBUF2[14]=',';
			for(R0=0,R1=0;R0<12;R0++)
			{
				R3=HeadID[R0];
				if((R3==0x0d)||(R3==' ')) R1=1;
				if(R1) R3=' ';
				COMBUF2[15+R0]=R3;
			}
			COMBUF2[27]=0x0d;
			COMBUF2[28]=0x0a;
			
			COMBUF2[29]='M';
			COMBUF2[30]='O';
			COMBUF2[31]='D';
			COMBUF2[32]='E';
			COMBUF2[33]='=';
			COMBUF2[34]=Mode;
			COMBUF2[35]=0x0d;
			COMBUF2[36]=0x0a;
			
			COMBUF2[37]=' ';
			COMBUF2[38]='R';
			COMBUF2[39]='D';
			COMBUF2[40]='T';
			COMBUF2[41]='=';
			R0=SetReSec/100;
			COMBUF2[42]=0x30+R0;
			R0=(SetReSec-R0*100)/10;
			COMBUF2[43]=0x30+R0;
			R0=SetReSec-(SetReSec/10)*10;
			COMBUF2[44]=0x30+R0;
			COMBUF2[45]=0x0d;
			COMBUF2[46]=0x0a;
			
			COMBUF2[47]='T';
			COMBUF2[48]='E';
			COMBUF2[49]='S';
			COMBUF2[50]='T';
			COMBUF2[51]='=';
			COMBUF2[52]='0';
			if(CONFIGFG.bits.enTest) COMBUF2[52]='1';
			COMBUF2[53]=',';
			COMBUF2[54]=0x30+SetMinTest;
			COMBUF2[55]=' ';
			COMBUF2[56]=0x0d;
			COMBUF2[57]=0x0a;
			
			COMBUF2[58]=' ';
			COMBUF2[59]=' ';
			COMBUF2[60]='I';
			COMBUF2[61]='P';
			COMBUF2[62]='=';
			subah=0;
			subal=AT_IPadr;
			IICNUM=15;
			IICMEM=COMBUF2+63;
			EEPR();
			COMBUF2[78]=':';
			subah=0;
			subal=AT_IPport;
			IICNUM=5;
			IICMEM=COMBUF2+79;
			EEPR();
			COMBUF2[84]=0x0d;
			COMBUF2[85]=0x0a;
			
			COMBUF2[86]=' ';
			COMBUF2[87]='B';
			COMBUF2[88]='P';
			COMBUF2[89]='S';
			COMBUF2[90]='=';
			COMBUF2[91]='0';
			if(CONFIGFG.bits.Com1Bit9) COMBUF2[91]='1';
			COMBUF2[92]=',';
			COMBUF2[93]=' ';
			if(Com1BPS==0)
			{
				COMBUF2[94]=' ';
				COMBUF2[95]='3';
			}
			else if(Com1BPS==1)
			{
				COMBUF2[94]=' ';
				COMBUF2[95]='6';
			}
			else if(Com1BPS==2)
			{
				COMBUF2[94]='1';
				COMBUF2[95]='2';
			}
			else if(Com1BPS==3)
			{
				COMBUF2[94]='2';
				COMBUF2[95]='4';
			}
			else if(Com1BPS==4)
			{
				COMBUF2[94]='4';
				COMBUF2[95]='8';
			}
			else if(Com1BPS==6)
			{
				COMBUF2[93]='1';
				COMBUF2[94]='9';
				COMBUF2[95]='2';
			}
			else
			{
				COMBUF2[94]='9';
				COMBUF2[95]='6';
			}
			
			COMBUF2[96]='0';
			COMBUF2[97]='0';
			COMBUF2[98]=0x0d;
			COMBUF2[99]=0x0a;
			
			COMBUF2[100]=' ';
			COMBUF2[101]='C';
			COMBUF2[102]='S';
			COMBUF2[103]='Q';
			COMBUF2[104]='=';
			COMBUF2[105]=(NetRssi/0x10)+0x30;
			COMBUF2[106]=(NetRssi&0x0f)+0x30;
			COMBUF2[107]=',';
			COMBUF2[108]=(NetBer/0x10)+0x30;
			COMBUF2[109]=(NetBer&0x0f)+0x30;
			COMBUF2[110]=0x0d;
			COMBUF2[111]=0x0a;
			
			COMBUF2[112]='V';
			COMBUF2[113]='e';
			COMBUF2[114]='r';
			COMBUF2[115]=' ';
			COMBUF2[116]='=';
			COMBUF2[117]='3';
			COMBUF2[118]='.';
			COMBUF2[119]='0';
			COMBUF2[120]=0x0d;
			COMBUF2[121]=0x0a;
			
			TXSAVED2=IPDlen=122;
			IPDtran=1;
			SendATFG.bits.IPDing=1;
			COMFG2.bits.AFrame=1;
			RXpt2.pt=COMBUF2+122;
			FrameEnd2.data=RXpt2.data;
			RXOVERTMR2=0;
			INTCONbits.GIE=1;
			return;
		}
		if(R3=='I')
		{
			Get_char1();
			if(R3!='P') return;	//此帧数据无效
			Get_char1();
			if(R3!=':') return;
			
			Get_char1();
			BFIIC[0]=R3;
			Get_char1();
			BFIIC[1]=R3;
			Get_char1();
			BFIIC[2]=R3;
			Get_char1();
			BFIIC[3]=R3;
			
			Get_char1();
			BFIIC[4]=R3;
			Get_char1();
			BFIIC[5]=R3;
			Get_char1();
			BFIIC[6]=R3;
			Get_char1();
			BFIIC[7]=R3;
			
			Get_char1();
			BFIIC[8]=R3;
			Get_char1();
			BFIIC[9]=R3;
			Get_char1();
			BFIIC[10]=R3;
			Get_char1();
			BFIIC[11]=R3;
			
			Get_char1();
			BFIIC[12]=R3;
			Get_char1();
			BFIIC[13]=R3;
			Get_char1();
			BFIIC[14]=R3;
			Get_char1();
			BFIIC[15]=R3;
			
			Get_char1();
			BFIIC[16]=R3;
			Get_char1();
			BFIIC[17]=R3;
			Get_char1();
			BFIIC[18]=R3;
			Get_char1();
			BFIIC[19]=R3;
			Get_char1();
			BFIIC[20]=R3;
			
			if(Check_ServerIP()!=1) return;	//not Number
			
			if(SFrameFG.bits.Contin) return;
			
			subah=0;
			subal=AT_IPadr;
			IICNUM=15;
			IICMEM=BFIIC;
			EEPW();
			
			subah=0;
			subal=AT_IPport;
			IICNUM=5;
			IICMEM=BFIIC+16;
			EEPW();
			SendATFG.bits.IPchange=1;
			return;
		}
		if(R3=='P')
		{
			Get_char1();
			if(R3!='A') return;	//此帧数据无效
			Get_char1();
			if(R3!='S') return;
			Get_char1();
			if(R3!='S') return;
			Get_char1();
			if(R3!=':') return;
			
			Get_char1();
			BFIIC[0]=R3;
			Get_char1();
			BFIIC[1]=R3;
			Get_char1();
			BFIIC[2]=R3;
			Get_char1();
			BFIIC[3]=R3;
			if(SFrameFG.bits.Contin) return;
			subah=0;
			subal=AT_PASS;
			IICNUM=4;

⌨️ 快捷键说明

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