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

📄 gprsmanag.c

📁 电力行业必备。有错的地方
💻 C
📖 第 1 页 / 共 2 页
字号:
		}
		else
		{
			data = temp%100;
			data = data/10;
			if (data != 0)
			{
				buf[len] = data + 0x30;
				len ++;
			}
		}
		data = temp%10;
		buf[len] = data + 0x30;
		len ++;
		
		buf[len] = '.';
		len ++; 
		temp = ParamInSram.Term_Par.X8010[5];
		data = temp/100;
		if (data != 0)
		{
			buf[len] = data + 0x30;
			len ++;
			data = temp%100;
			data = data/10;
			buf[len] = data + 0x30;
			len ++;
			
		}
		else
		{
			data = temp%100;
			data = data/10;
			if (data != 0)
			{
				buf[len] = data + 0x30;
				len ++;
			}
		}
		data = temp%10;
		buf[len] = data + 0x30;
		len ++;
		
		buf[len] = '.';
		len ++; 
		temp = ParamInSram.Term_Par.X8010[6];
		data = temp/100;
		if (data != 0)
		{
			buf[len] = data + 0x30;
			len ++;
			data = temp%100;
			data = data/10;
			buf[len] = data + 0x30;
			len ++;
			
		}
		else
		{
			data = temp%100;
			data = data/10;
			if (data != 0)
			{
				buf[len] = data + 0x30;
				len ++;
			}
		}
		data = temp%10;
		buf[len] = data + 0x30;
		len ++;
		buf[len] = ' ';
		len ++; 
		
		temp = ParamInSram.Term_Par.X8010[7];
		temp = temp<<8;
		temp |= ParamInSram.Term_Par.X8010[8];
		//buf[len] = ' ';
		//len ++;
		//buf[19] = (temp/10000) + 0x30;
		//temp = temp%10000;
		buf[len]= (temp/1000) + 0x30;
		len ++;
		temp = temp%1000;
		buf[len]= (temp/100) + 0x30;
		len ++;
		temp = temp%100;
		buf[len]= (temp/10) + 0x30;
		len ++;
		temp = temp%10;
		buf[len]= temp + 0x30;
		len ++;
		buf[len]= ' ';
		len ++;}
	
		count = 0;
		GprsManagPar.gprsok = 0;
		while (count<3)
		{
			//len = 22;
			WriteGprsCmd(buf, len);
			OSTimeDly(200);
			//while ((len=ReadGprsBuf())==0);
			if (GprsSetAck()==0)
			{
				count = 4;
				GprsManagPar.gprsok = 1;
			}
			count ++;
			OSTimeDly(200);
		}	
	}
	
	buf[0] = 0x12;												// 读主站IP及端口
	buf[1] = 0xE3;
	ReadGprsCmd(buf);	
	OSTimeDly(400);
	len = ReadGprsBuf();
	OSTimeDly(200);
	

	buf[0] = 0x13;												// 设置登录唤醒方式
	buf[1] = 0xE3;
	buf[2] = 0x00;
	count = 0;
	while (count<3)
	{
		len = 3;
		WriteGprsCmd(buf, len);
		OSTimeDly(200);
		//while ((len=ReadGprsBuf())==0);
		if (GprsSetAck()==0)
		{
			count = 4;
		}
		count ++;
		OSTimeDly(200);
	}
	
	buf[0] = 0x13;												// 读登录唤醒方式
	buf[1] = 0xE3;
	ReadGprsCmd(buf);	
	OSTimeDly(400);
	len = ReadGprsBuf();
	OSTimeDly(200);
	
	buf[0] = 0x15;												// 设置首选通道
	buf[1] = 0xE3;
	buf[2] = 0x00;
	count = 0;
	//while (count<3)											// 该设置无返回
	{
		len = 3;
		WriteGprsCmd(buf, len);
		OSTimeDly(200);
		if (GprsSetAck()==0)
		{
			count = 4;
		}
		count ++;
		OSTimeDly(200);
	}
	
	buf[0] = 0x15;												// 读首选通道
	buf[1] = 0xE3;
	ReadGprsCmd(buf);	
	OSTimeDly(400);
	len = ReadGprsBuf();
	OSTimeDly(200);
	
	buf[0] = 0x16;												// 设置接入点APN
	buf[1] = 0xE3;
	j = 0;
	for (i=0;i<16;i++)
	{
		if (ParamInSram.Term_Par.X8015[i] != 0x00)
		{
			buf[2+j] = ParamInSram.Term_Par.X8015[i];
			j ++;
		}
	}
	for (i=0;i<16-j;i++)
	{
		buf[2+j+i] = 0xFF;
	}
	
	count = 0;
	GprsManagPar.gprsok = 0;
	while (count<3)
	{
		len = 18;
		WriteGprsCmd(buf, len);
		OSTimeDly(200);
		//while ((len=ReadGprsBuf())==0);
		if (GprsSetAck()==0)
		{
			count = 4;
			GprsManagPar.gprsok = 1;
		}
		count ++;
		OSTimeDly(200);
	}
	
	buf[0] = 0x16;												// 读接入点APN
	buf[1] = 0xE3;
	ReadGprsCmd(buf);	
	OSTimeDly(400);
	len = ReadGprsBuf();
	OSTimeDly(200);
	
	buf[0] = 0x1C;												// 设置连接方式
	buf[1] = 0xE3;
	buf[2] = 0x01;
	
	count = 0;
	while (count<3)
	{
		len = 3;
		WriteGprsCmd(buf, len);
		OSTimeDly(200);
		if (GprsSetAck()==0)
		{
			count = 4;
		}
		count ++;
		OSTimeDly(200);
	}
	
	buf[0] = 0x1C;												// 读连接方式
	buf[1] = 0xE3;
	ReadGprsCmd(buf);	
	OSTimeDly(400);
	len = ReadGprsBuf();
	OSTimeDly(200);
	
}
/*********************************************************************************************************
** 函数名称: GprsSetAck()
** 功能描述: 对GPRS模块设置的应答判断
**
** 输 入: 
**		   
** 输 出: 
**         
** 全局变量: 
** 调用模块:
**
** 作 者: 
** 日 期: 2007-09-25
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 GprsSetAck(void)
{
	uint8 i;
	uint8 len;

	len = ReadGprsBuf();
	if (len!=0)
	{
		for (i=0;i<len;i++)
		{
			if (GprsCommBuf[i]==0x68)
			{
				if ((GprsCommBuf[i+7]==0x68)&&(GprsCommBuf[i+11]==0x16)&&
					(GprsCommBuf[i+8]==0x84))
				{
					CommFlush(COMM2);	
					return(0);
					break;
				}	
			}
			else
			{
				continue;
			}
		}									
	}
	return(1);
}

/*********************************************************************************************************
** 函数名称: SendLogIn()
** 功能描述: 发送登录报文
**
** 输 入: 
**		   
** 输 出: 
**         
** 全局变量: 
** 调用模块:
**
** 作 者: 
** 日 期: 2007-09-28
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void SendLogIn(void)
{
	uint8 buf[32];
	uint8 temp;
	//uint8 err;
	
	buf[0] = 0x68;
	buf[1] = TermAddr[0];
	buf[2] = TermAddr[1];
	buf[3] = TermAddr[2];
	buf[4] = TermAddr[3];
	temp   = SendFseq&0x03;	
	temp   = temp<<6;											
	buf[5] = temp;
	temp   = SendFseq>>2;
	temp   = temp&0x1F;
	buf[6] = temp;
	SendFseq ++;
	if (SendFseq>0x7F)
	{
		SendFseq = 0x01;
	}
	buf[7] = 0x68;
	buf[8] = 0x21;
	buf[9] = 0x03;
	buf[10]= 0x00;
	buf[11]= UserCode[0];
	buf[12]= UserCode[1];
	buf[13]= UserCode[2];
	buf[14]= AddData(buf, 14);
	buf[15]= 0x16;
	CommFlush(COMM2);
	//OSMutexPend(Comm_Sem, 0, &err);
	WriteComm(COMM2, buf, 16);
	//OSMutexPost(Comm_Sem);
}
/*********************************************************************************************************
** 函数名称: SendLogOut()
** 功能描述: 发送登出报文
**
** 输 入: 
**		   
** 输 出: 
**         
** 全局变量: 
** 调用模块:
**
** 作 者: 
** 日 期: 2007-09-28
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void SendLogOut(void)
{
	uint8 buf[32];
	uint8 temp;
	//uint8 err;
	
	buf[0] = 0x68;
	buf[1] = TermAddr[0];
	buf[2] = TermAddr[1];
	buf[3] = TermAddr[2];
	buf[4] = TermAddr[3];
	temp   = SendFseq&0x03;	
	temp   = temp<<6;											
	buf[5] = temp;
	temp   = SendFseq>>2;
	temp   = temp&0x1F;
	buf[6] = temp;
	SendFseq ++;
	if (SendFseq>0x7F)
	{
		SendFseq = 0x01;
	}
	buf[7] = 0x68;
	buf[8] = 0x22;
	buf[9] = 0x00;
	buf[10]= 0x00;
	buf[11]= AddData(buf, 11);
	buf[12]= 0x16;
	CommFlush(COMM2);
	//OSMutexPend(Comm_Sem, 0, &err);
	WriteComm(COMM2, buf, 13);
	//OSMutexPost(Comm_Sem);
}
/*********************************************************************************************************
** 函数名称: SendHerat()
** 功能描述: 发送心跳报文
**
** 输 入: 
**		   
** 输 出: 
**         
** 全局变量: 
** 调用模块:
**
** 作 者: 
** 日 期: 2007-09-28
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void SendHeart(void)
{
	uint8 buf[32];
	uint8 temp;
	//uint8 err;
	
	buf[0] = 0x68;
	buf[1] = TermAddr[0];
	buf[2] = TermAddr[1];
	buf[3] = TermAddr[2];
	buf[4] = TermAddr[3];
	temp   = SendFseq&0x03;	
	temp   = temp<<6;											
	buf[5] = temp;
	temp   = SendFseq>>2;
	temp   = temp&0x1F;
	buf[6] = temp;
	SendFseq ++;
	if (SendFseq>0x7F)
	{
		SendFseq = 0x01;
	}
	buf[7] = 0x68;
	buf[8] = 0x24;
	buf[9] = 0x00;
	buf[10]= 0x00;
	buf[11]= AddData(buf, 11);
	buf[12]= 0x16;
	CommFlush(COMM2);
	//OSMutexPend(Comm_Sem, 0, &err);
	WriteComm(COMM2, buf, 13);
	//OSMutexPost(Comm_Sem);
}

⌨️ 快捷键说明

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