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

📄 gprsmanag.c

📁 电力行业必备。有错的地方
💻 C
📖 第 1 页 / 共 2 页
字号:
/****************************************Copyright (c)**************************************************
**                               	江苏广一科技有限公司
**                                     研    发    部
**                                        浙江配变
**
**                                 
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: gprsmanag.c
**创   建   人: 
**最后修改日期: 2007年10月02日
**描        述: 
**              
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 
** 版  本: 
** 日 期: 
** 描 述: 
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
** 描 述: 
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#define  GPRSM_GLOBALS
#include "commup.h"
//#include "config.h"
#include "powerram.h"
#include "parameter.h"
#include "global.h"
#include "gprsmanag.h"
#include "main.h"

extern PARAM_STR ParamInSram;

/*********************************************************************************************************
** 函数名称: ReadGprsCmd()
** 功能描述: 读GPRS参数
**
** 输 入: *pbuf	标识编码
**
** 输 出: 
**         
** 全局变量: 
** 调用模块:
**
** 作 者: 
** 日 期: 2007-09-24
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 ReadGprsCmd(uint8 *pbuf)
{
	uint8 buf[128];
	uint8 err;
	
	buf[0] = 0x68;
	buf[1] = 0x0E;
	buf[2] = 0x00;
	buf[3] = 0x00;
	buf[4] = 0x00;
	buf[5] = 0x00;
	buf[6] = 0x00;
	buf[7] = 0x68;
	buf[8] = 0x01;
	buf[9] = 0x02;
	buf[10]= *pbuf;
	buf[11]= *(pbuf+1);
	buf[12]= AddData(buf, 12);
	buf[13]= 0x16;
	WriteCpuIoStatus(IO_SEL_MODE_CMD);
	//OSMutexPend(Comm_Sem, 0 ,&err);
	WriteComm(COMM2, buf, 14);						 	// 调用发送函数
	//OSMutexPost(Comm_Sem);
	//WriteCpuIoStatus(IO_SEL_MODE_DATA);
	//OSSemPend(Gprs_Set_Ack, 400, &err);
	return(err);
}

/*********************************************************************************************************
** 函数名称: ReadGprsCmd()
** 功能描述: 读GPRS参数
**
** 输 入: *pbuf	标识编码
**		   len		数据域长度
** 输 出: 0:成功
**         
** 全局变量: 
** 调用模块:
**
** 作 者: 
** 日 期: 2007-09-24
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void WriteGprsCmd(uint8 *pbuf, uint8 len)
{
	uint8 buf[128];
	uint8 i;
	//uint8 err;
	
	buf[0] = 0x68;
	buf[1] = 0x0E;
	buf[2] = 0x00;
	buf[3] = 0x00;
	buf[4] = 0x00;
	buf[5] = 0x00;
	buf[6] = 0x00;
	buf[7] = 0x68;
	buf[8] = 0x04;
	buf[9] = len;
	for (i=0;i<len;i++)
	{
		buf[10+i]= *(pbuf+i);
	}
	buf[10+len]= AddData(buf, len+10);
	buf[11+len]= 0x16;
	WriteCpuIoStatus(IO_SEL_MODE_CMD);
	//OSMutexPend(Comm_Sem, 0, &err);
	WriteComm(COMM2, buf, len+12);						 	// 调用发送函数
	//OSMutexPost(Comm_Sem);
	//WriteCpuIoStatus(IO_SEL_MODE_DATA);
//	OSSemPend(Gprs_Set_Ack, 400, &err);
//	return(err);
}

/*********************************************************************************************************
** 函数名称: ReadGprsBuf()
** 功能描述: 对GPRS模块操作时用于读底层
**
** 输 入: 
**		   
** 输 出: len		数据域长度
**         
** 全局变量: 
** 调用模块:
**
** 作 者: 
** 日 期: 2007-09-24
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 ReadGprsBuf(void)
{
	uint8 i,j;
	uint8 len,len1;
	uint8 buf[128];
	//uint8 err;

	j = 0;
	len = 0;
	//OSMutexPend(Comm_Sem, 0 ,&err);
	while (1)	
	{									
		len1 = ReadCommMs(COMM2,buf,128,40, 100);						// 读底层接收缓冲区
		if (len1!=0)														// 将读到的数据放到本地接收缓冲区
		{
			len = len + len1;
			for (i=0;i<len1;i++)											// 将读到的数据放到本地接收缓冲区
			{
				GprsCommBuf[j] = buf[i];
				len ++;
				j ++;
				if (j>256)
				{
					//OSMutexPost(Comm_Sem);
					return(len);
				}
			}
			DelayMS(20);
		}
		else
		{
			//OSMutexPost(Comm_Sem);
			return(len);
			//break;
		}	
	}
	//OSMutexPost(Comm_Sem);
	return(len);
}

/*********************************************************************************************************
** 函数名称: GprsParInit()
** 功能描述: 对GPRS模块操作时用于读底层
**
** 输 入: 
**		   
** 输 出: 
**         
** 全局变量: 
** 调用模块:
**
** 作 者: 
** 日 期: 2007-09-25
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void GprsParInit(void)
{
	uint8 i,j;
	uint8 count;
	uint8 len;
	uint8 buf[128];
	uint8 data;
	uint16 temp;
	
	buf[0] = 0x10;												// 设置短信中心号码
	buf[1] = 0xE3;
	buf[2] = (ParamInSram.Term_Par.X8013[2]<<4)&0xF0;
	data   = (ParamInSram.Term_Par.X8013[3]>>4)&0x0F;
	buf[2] |= data;
	buf[3] = (ParamInSram.Term_Par.X8013[3]<<4)&0xF0;
	data   = (ParamInSram.Term_Par.X8013[4]>>4)&0x0F;
	buf[3] |= data;
	buf[4] = (ParamInSram.Term_Par.X8013[4]<<4)&0xF0;
	data   = (ParamInSram.Term_Par.X8013[5]>>4)&0x0F;
	buf[4] |= data;
	buf[5] = (ParamInSram.Term_Par.X8013[5]<<4)&0xF0;
	data   = (ParamInSram.Term_Par.X8013[6]>>4)&0x0F;
	buf[5] |= data;
	buf[6] = (ParamInSram.Term_Par.X8013[6]<<4)&0xF0;
	data   = (ParamInSram.Term_Par.X8013[7]>>4)&0x0F;
	buf[6] |= data;
	buf[7] = (ParamInSram.Term_Par.X8013[7]<<4)&0xF0;
	buf[7] |= 0x0F;
	buf[8] = 0xFF;
	buf[9] = 0xFF;
	count = 0;
	GprsManagPar.smsok = 0;
	while (count<3)												// 设置短信中心号码
	{
		len = 10;
		WriteGprsCmd(buf, len);
		OSTimeDly(200);
		//while ((len=ReadGprsBuf())==0);
		if (GprsSetAck()==0)
		{
			count = 4;
			GprsManagPar.smsok = 1;
		}
		count ++;
		OSTimeDly(200);
	}
	
	buf[0] = 0x10;												// 读短信中心号码
	buf[1] = 0xE3;
	ReadGprsCmd(buf);	
	OSTimeDly(400);
	len = ReadGprsBuf();
	OSTimeDly(200);
	
	if (ParamInSram.Term_Par.X8010[0]==0x01)						// 初始化主站短信号码
	{
		buf[0] = 0x11;												// 
		buf[1] = 0xE3;
		buf[2] = (ParamInSram.Term_Par.X8010[3]<<4)&0xF0;
		data   = (ParamInSram.Term_Par.X8010[4]>>4)&0x0F;
		buf[2] |= data;
		buf[3] = (ParamInSram.Term_Par.X8010[4]<<4)&0xF0;
		data   = (ParamInSram.Term_Par.X8010[5]>>4)&0x0F;
		buf[3] |= data;
		buf[4] = (ParamInSram.Term_Par.X8010[5]<<4)&0xF0;
		data   = (ParamInSram.Term_Par.X8010[6]>>4)&0x0F;
		buf[4] |= data;
		buf[5] = (ParamInSram.Term_Par.X8010[6]<<4)&0xF0;
		data   = (ParamInSram.Term_Par.X8010[7]>>4)&0x0F;
		buf[5] |= data;
		buf[6] = (ParamInSram.Term_Par.X8010[7]<<4)&0xF0;
		data   = (ParamInSram.Term_Par.X8010[8]>>4)&0x0F;
		buf[6] |= data;
		buf[7] = (ParamInSram.Term_Par.X8010[8]<<4)&0xF0;
		buf[7] |= 0x0F;
		buf[8] = 0xFF;
		buf[9] = 0xFF;
		count = 0;
		//GprsManagPar.smsok = 0;
		while (count<3)												// 
		{
			len = 10;
			WriteGprsCmd(buf, len);
			OSTimeDly(200);
			//while ((len=ReadGprsBuf())==0);
			if (GprsSetAck()==0)
			{
				count = 4;
				GprsManagPar.smsok = 1;
			}
			count ++;
			OSTimeDly(200);
		}
	}
	else if (ParamInSram.Term_Par.X8011[0]==0x01)
	{
		buf[0] = 0x11;												// 
		buf[1] = 0xE3;
		buf[2] = (ParamInSram.Term_Par.X8011[3]<<4)&0xF0;
		data   = (ParamInSram.Term_Par.X8011[4]>>4)&0x0F;
		buf[2] |= data;
		buf[3] = (ParamInSram.Term_Par.X8011[4]<<4)&0xF0;
		data   = (ParamInSram.Term_Par.X8011[5]>>4)&0x0F;
		buf[3] |= data;
		buf[4] = (ParamInSram.Term_Par.X8011[5]<<4)&0xF0;
		data   = (ParamInSram.Term_Par.X8011[6]>>4)&0x0F;
		buf[4] |= data;
		buf[5] = (ParamInSram.Term_Par.X8011[6]<<4)&0xF0;
		data   = (ParamInSram.Term_Par.X8011[7]>>4)&0x0F;
		buf[5] |= data;
		buf[6] = (ParamInSram.Term_Par.X8011[7]<<4)&0xF0;
		data   = (ParamInSram.Term_Par.X8011[8]>>4)&0x0F;
		buf[6] |= data;
		buf[7] = (ParamInSram.Term_Par.X8011[8]<<4)&0xF0;
		buf[7] |= 0x0F;
		buf[8] = 0xFF;
		buf[9] = 0xFF;
		count = 0;
		//GprsManagPar.smsok = 0;
		while (count<3)												// 
		{
			len = 10;
			WriteGprsCmd(buf, len);
			OSTimeDly(200);
			//while ((len=ReadGprsBuf())==0);
			if (GprsSetAck()==0)
			{
				count = 4;
				GprsManagPar.smsok = 1;
			}
			count ++;
			OSTimeDly(200);
		}
	}
	else if (ParamInSram.Term_Par.X8012[0]==0x01)
	{
		buf[0] = 0x11;												// 
		buf[1] = 0xE3;
		buf[2] = (ParamInSram.Term_Par.X8012[3]<<4)&0xF0;
		data   = (ParamInSram.Term_Par.X8012[4]>>4)&0x0F;
		buf[2] |= data;
		buf[3] = (ParamInSram.Term_Par.X8012[4]<<4)&0xF0;
		data   = (ParamInSram.Term_Par.X8012[5]>>4)&0x0F;
		buf[3] |= data;
		buf[4] = (ParamInSram.Term_Par.X8012[5]<<4)&0xF0;
		data   = (ParamInSram.Term_Par.X8012[6]>>4)&0x0F;
		buf[4] |= data;
		buf[5] = (ParamInSram.Term_Par.X8012[6]<<4)&0xF0;
		data   = (ParamInSram.Term_Par.X8012[7]>>4)&0x0F;
		buf[5] |= data;
		buf[6] = (ParamInSram.Term_Par.X8012[7]<<4)&0xF0;
		data   = (ParamInSram.Term_Par.X8012[8]>>4)&0x0F;
		buf[6] |= data;
		buf[7] = (ParamInSram.Term_Par.X8012[8]<<4)&0xF0;
		buf[7] |= 0x0F;
		buf[8] = 0xFF;
		buf[9] = 0xFF;
		count = 0;
		//GprsManagPar.smsok = 0;
		while (count<3)												// 
		{
			len = 10;
			WriteGprsCmd(buf, len);
			OSTimeDly(200);
			//while ((len=ReadGprsBuf())==0);
			if (GprsSetAck()==0)
			{
				count = 4;
				GprsManagPar.smsok = 1;
			}
			count ++;
			OSTimeDly(200);
		}
	}
	else
	{
		GprsManagPar.smsok = 0;
	}
	
	
	if (ParamInSram.Term_Par.X8010[0]!=0x02)
	{
		GprsManagPar.gprsok = 0;
	}
	else
	{
		len = 0;
		buf[len] = 0x12;										// 设置主站IP及端口
		len ++;
		buf[len] = 0xE3;
		len ++;
		for (i=0;i<2;i++){
		temp = ParamInSram.Term_Par.X8010[3];
		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[4];
		data = temp/100;
		if (data != 0)
		{
			buf[len] = data + 0x30;
			len ++;
			data = temp%100;
			data = data/10;
			buf[len] = data + 0x30;
			len ++;
			

⌨️ 快捷键说明

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