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