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

📄 gprs.c

📁 C8051ucos源码
💻 C
字号:
#include "CM240128.H"
#include "C8051F020.h" 
#include <string.h>
#include "数据存储.h"

//-----------------------------------------------------------------------------------------------------------------

void UART0Write(unsigned char *pbuf,unsigned char count)
{
bit c;
	if(count==0)return;
	c=EA;
	EA=0;
	TI0=0;
	while(count--)
	{
		SBUF0 = *pbuf++;
		while(!TI0);
		TI0=0;
	}
	EA=c;
}
//-----------------------------------------------------------------------------------------------------------------


void UART1Write(unsigned char *pbuf,unsigned char count)
{
bit c;
	if(count==0)return;
	c=EA;
	EA=0;
	//SCON1=SCON1&0xfd;
	UART1ClrTI();
	while(count--)
	{
		SBUF1 = *pbuf++;
		while(!UART1GetTI());
		UART1ClrTI();
	}
	EA=c;
}
//
//-----------------------------------------------------------------------------------------------------------------

unsigned char UART0Read(unsigned char *pbuf)
{
unsigned int i;
unsigned char cnt;
	cnt=0;
	RI0=0;
	for(i=0;i<60000;i++)
	{
		if(RI0!=0)
		{
			RI0=0;
			i=0;
			cnt++;
			*pbuf++ = SBUF0; 		
		}
	}
return cnt;
}
//-----------------------------------------------------------------------------------------------------------------
//字符串寻找
//判断字符串srcstr中是否包含substr
//返回 0:不包含
// 	   1:包含
unsigned char StrFind(unsigned char *srcstr,unsigned char *substr)
{
unsigned char *psrc,*psub,srcln,subln,i,j;
	psrc = srcstr;psub = substr;
	srcln = strlen(psrc);
	subln = strlen(psub);
	for(i=0;i<srcln;i++)
	{
		if(psrc[i]==psub[0])
		{
			for(j=0;j<subln;j++)
				if(psrc[i+j]!=psub[j])break;
			if(j==subln)return 1;
		}		
	}
	return 0;
}
//-----------------------------------------------------------------------------------------------------------------
//unsigned char DDDDDDDD;//ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt
void GPRSInit(void)
{
xdata unsigned char buf[100];
unsigned char cnt,j,sendcnt;
unsigned int i;
//	if(DDDDDDDD!=0xaa)return;//ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt
 	UART0SETUP(57600,8);//设置串口
	UART0DISABLE();//关串口中断	

	SetCurrLoc(0,16);
	DisplayFill(' ',180);//清除显示区


	for(i=0;i<60000;i++);

	for(j=0;j<10;j++)
	{
	
		UART0Write("AT\r\n",4);
		cnt = UART0Read(buf);buf[cnt]='\0';
		if(cnt!=0)
			if(StrFind(buf,"OK"))
				break;
		for(i=0;i<60000;i++);
	}
	if(j>=10){SetCurrLoc(0,16);DisplayStr("GPRS模块连接:ERR",30);}
	else{SetCurrLoc(0,16);DisplayStr("GPRS模块连接:OK",30);}

//	for(i=0;i<60000;i++);
for(sendcnt=0;sendcnt<3;sendcnt++)
	{
	SetCurrLoc(0,32);
	UART0Write("AT+CGDCONT=1,\"IP\",\"CMNET\"\r\n",27);
	cnt = UART0Read(buf);buf[cnt]='\0';
	if(cnt!=0)
		if(StrFind(buf,"OK"))
			{
			DisplayStr("GPRS配置服务商:OK",30);
			break;
			}
	}
if(sendcnt==3)DisplayStr("GPRS配置服务商:ERR",30);	 

//	for(i=0;i<60000;i++);
for(sendcnt=0;sendcnt<3;sendcnt++)
	{
	SetCurrLoc(0,48);
	UART0Write("AT%CGPCO=1,\"PAP,,\" ,1\r\n",23);
	cnt = UART0Read(buf);buf[cnt]='\0';
	if(cnt!=0)
		if(StrFind(buf,"OK"))
		{
			DisplayStr("GPRS配置用户:OK",30);
			break;
		}
	}if(sendcnt==3)DisplayStr("GPRS配置用户:ERR",30);

//	for(i=0;i<60000;i++);
for(sendcnt=0;sendcnt<3;sendcnt++)
	{
	SetCurrLoc(0,64);
	//UART0Write("AT$DESTINFO=\"218.60.36.112\",1,8002\r\n",36);
	UART0Write("AT$DESTINFO=\"",13);
	UART0Write(ServerIp,strlen(ServerIp));
	UART0Write("\",1,8002\r\n",10);
	cnt = UART0Read(buf);buf[cnt]='\0';
	if(cnt!=0)
		if(StrFind(buf,"OK"))
		{
			DisplayStr("GPRS配置IP地址:OK",30);
			break;
		}
	}if(sendcnt==3)DisplayStr("GPRS配置IP地址:ERR",30);

//	for(i=0;i<60000;i++);

	SetCurrLoc(0,80);
	UART0Write("ATD*97#;\r\n",10);
	for(i=0;i<20;i++)
	{
		cnt = UART0Read(buf);buf[cnt]='\0';
		if(cnt!=0)
			{
			//	DisplayStr(buf,30);
				if(StrFind(buf,"OK"))
					break;
				cnt=0;
			}
	}
	UART0ENABLE();//开串口中断
}
//-----------------------------------------------------------------------------------------------------------------
void GPRSEnd(void)
{						
/*
xdata unsigned char buf[100];
unsigned char j,cnt,n;
unsigned int i;
*/
 	UART0SETUP(57600,8);//设置串口
	UART0DISABLE();//关串口中断	
	ClrDisplay();
/*
	SetCurrLoc(0,16);DisplayStr("GPRS模块断开程序",30);
	for(j=0;j<10;j++)
	{
		UART0Write("+++",3);
		for(n=0;n<10;n++)for(i=0;i<60000;i++);
		UART0Write("AT\r\n",4);
		cnt = UART0Read(buf);buf[cnt]='\0';
		if(cnt!=0)
			if(StrFind(buf,"OK"))
				break;
		for(i=0;i<60000;i++);
	}
	if(j>=10){SetCurrLoc(0,16);DisplayStr("GPRS模块断开:ERR",30);}
	else{SetCurrLoc(0,16);DisplayStr("GPRS模块断开:OK",30);}
*/
}




















⌨️ 快捷键说明

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