📄 gprsmanag.c
字号:
/****************************************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 + -