📄 gprs_program.c
字号:
return 0x55; //接收失败
}
}
bg_GprsRec = 0; //收到一帧命令回复信息,清接收标志
//result commpare ,confirm if connet success
// send ok
cl_Match = RamCodeCmp(&cg_GprsRecBuff[1],&CIPSEND_OK[0]);
if(cl_Match == 0)
{
bg_GprsRxComm = 0;
return 0x00; //connet success
}
else
{
bg_GprsRxComm = 0;
return 0x55;
}
return 0;
}
/*
**********************************************************************
* 函数功能: connet to serivers
* 输入参数: *IpAddr serivers ip addr
Port
* 输出参数: 返回值 == 0x00 ,连接已oK
== 0x55 ,未连上
**********************************************************************
*/
#if(0)
uchar GprsConnectStep(void)
{
uchar err;
uchar cl_Match;
uchar i;
void *GprsRecMsg;
i = 0;
do
{
//copy command
cg_GprsTraBuff[0] = CodeRam(CSTT,&cg_GprsTraBuff[1]);
cg_GprsTraBuff[0] ++;
cg_GprsTraBuff[cg_GprsTraBuff[0]] = 0x0d;
cg_GprsTraBuff[0] ++;
cg_GprsTraBuff[cg_GprsTraBuff[0]] = 0x0a;
//star connet
TI0 = 0;
SBUF0 = cg_GprsTraBuff[1];
cg_GprsTraCount = 1;
bg_GprsTraFinish = 1;
while(bg_GprsTraFinish);
GprsRecMsg = OSMboxPend(GprsRec,0,&err);
if(err == OS_NO_ERR)
{
if((*(uchar *)GprsRecMsg) == REC_COMM)
{
//result commpare ,confirm if connet success
cl_Match = RamCodeCmp(&cg_GprsRecBuff[1],OK);
}
}
} while((i<10) && (cl_Match != 0));
//
i = 0;
do
{
cg_GprsTraBuff[0] = CodeRam(CIICR,&cg_GprsTraBuff[1]);
cg_GprsTraBuff[0] ++;
cg_GprsTraBuff[cg_GprsTraBuff[0]] = 0x0d;
cg_GprsTraBuff[0] ++;
cg_GprsTraBuff[cg_GprsTraBuff[0]] = 0x0a;
//star connet
TI0 = 0;
SBUF0 = cg_GprsTraBuff[1];
cg_GprsTraCount = 1;
bg_GprsTraFinish = 1;
while(bg_GprsTraFinish);
GprsRecMsg = OSMboxPend(GprsRec,0,&err);
if(err == OS_NO_ERR)
{
if((*(uchar *)GprsRecMsg) == REC_COMM)
{
//result commpare ,confirm if connet success
cl_Match = RamCodeCmp(&cg_GprsRecBuff[1],OK);
}
}
} while((i<10) && (cl_Match != 0));
///
i = 0;
do
{
cg_GprsTraBuff[0] = CodeRam(CIFSR,&cg_GprsTraBuff[1]);
cg_GprsTraBuff[0] ++;
cg_GprsTraBuff[cg_GprsTraBuff[0]] = 0x0d;
cg_GprsTraBuff[0] ++;
cg_GprsTraBuff[cg_GprsTraBuff[0]] = 0x0a;
//star connet
TI0 = 0;
SBUF0 = cg_GprsTraBuff[1];
cg_GprsTraCount = 1;
bg_GprsTraFinish = 1;
while(bg_GprsTraFinish);
GprsRecMsg = OSMboxPend(GprsRec,0,&err);
if(err == OS_NO_ERR)
{
if((*(uchar *)GprsRecMsg) == REC_COMM)
{
//result commpare ,confirm if connet success
cl_Match = RamCodeCmp(&cg_GprsRecBuff[1],IP0);
}
}
} while((i<10) && (cl_Match == 0));
return 0;
}
#endif
//////
#if(0)
void GprsStatus(void)
{
cg_GprsTraBuff[0] = CodeRam(CSQ,&cg_GprsTraBuff[1]);
cg_GprsTraBuff[0] ++;
cg_GprsTraBuff[cg_GprsTraBuff[0]] = 0x0d;
cg_GprsTraBuff[0] ++;
cg_GprsTraBuff[cg_GprsTraBuff[0]] = 0x0a;
//star connet
TI = 0;
SBUF = cg_GprsTraBuff[1];
cg_GprsTraCount = 1;
bg_GprsTraFinish = 1;
bg_GprsRec = 0;
while(bg_GprsTraFinish);
TimeCount = 0; //请时间计数器
while(!bg_GprsRec)
{
if(TimeCount > 100)
{
return ; //接收失败
}
}
bg_GprsRec = 0; //收到一帧命令回复信息,清接收标志
}
#endif
/*
**********************************************************************
* 函数功能: close echo
* 输入参数:
* 输出参数: 返回值 == 0x00 ,
== 0x55 ,
**********************************************************************
*/
uchar GprsEcho(void)
{
// uchar err;
uchar cl_Match;
// void *GprsRecMsg;
cg_GprsTraBuff[0] = CodeRam(ATE,&cg_GprsTraBuff[1]);
cg_GprsTraBuff[0] ++;
cg_GprsTraBuff[cg_GprsTraBuff[0]] = 0x0d;
cg_GprsTraBuff[0] ++;
cg_GprsTraBuff[cg_GprsTraBuff[0]] = 0x0a;
//star connet
TI = 0;
SBUF = cg_GprsTraBuff[1];
cg_GprsTraCount = 1;
bg_GprsTraFinish = 1;
bg_GprsRec = 0;
bg_GprsRxComm = 1;
while(bg_GprsTraFinish);
TimeCount = 0; //请时间计数器
while(!bg_GprsRec)
{
if(TimeCount > 200)
{
bg_GprsRxComm = 0;
return 0x55; //接收失败
}
}
bg_GprsRec = 0; //收到一帧命令回复信息,清接收标志
//result commpare ,confirm if connet success
cl_Match = RamCodeCmp(&cg_GprsRecBuff[1],OK);
bg_GprsRxComm = 0;
if(cl_Match == 0)
{
return 0x00; //connet success
}
else
{
return 0x55; //connet fail
}
}
/*
**********************************************************************
* 函数功能: modify bps
* 输入参数:
* 输出参数: 返回值 == 0x00 ,
== 0x55 ,
**********************************************************************
*/
#if(0)
uchar GprsBps(void)
{
uchar err;
uchar cl_Match;
void *GprsRecMsg;
cg_GprsTraBuff[0] = CodeRam(IPR,&cg_GprsTraBuff[1]);
cg_GprsTraBuff[0] ++;
cg_GprsTraBuff[cg_GprsTraBuff[0]] = 0x0d;
cg_GprsTraBuff[0] ++;
cg_GprsTraBuff[cg_GprsTraBuff[0]] = 0x0a;
//star connet
TI0 = 0;
SBUF0 = cg_GprsTraBuff[1];
cg_GprsTraCount = 1;
bg_GprsTraFinish = 1;
while(bg_GprsTraFinish);
GprsRecMsg = OSMboxPend(GprsRec,0,&err);
if(err == OS_NO_ERR)
{
if((*(uchar *)GprsRecMsg) == REC_COMM)
{
//result commpare ,confirm if connet success
cl_Match = RamCodeCmp(&cg_GprsRecBuff[1],OK);
}
if(cl_Match == 0)
{
return 0x00; //connet success
}
else
{
return 0x55; //connet fail
}
}
}
#endif
/*
************************************************************************************
*
* 初始化串口
*
*************************************************************************************
*/
void GprsSerialIni()
{
T2CON = 0X34;
RCAP2H = TH2INI;
RCAP2L = TL2INI;
TH2 = TH2INI;
TL2 = TL2INI;
SCON = 0x50;
//enable interrupt
IE |= 0x30;
}
/*
***********************************************************************************
*
* 串口0中断
*
***********************************************************************************
*/
void Serial(void) interrupt 4
{
if(RI)
{
RI = 0;
bg_GprsRxByteOver = 1; //接收超时标志
cg_GprsRxByteCount = 0;
if(bg_GprsRecSE)
{
if(SBUF == 0x0d)
{
bg_GprsCr =1;
}
else if(SBUF == 0x0a)
{
if(bg_GprsCr)
{
bg_GprsCr = 0;
bg_GprsRecSE = 0;
cg_GprsRecBuff[0] = 0;
if( (cg_GprsRecBuff[1] == '+') && (cg_GprsRecBuff[2] == 'C') &&
(cg_GprsRecBuff[3] == 'M') && (cg_GprsRecBuff[4] == 'S') )
{
bg_GprsRxSms = 1;
}
else
{
bg_GprsRec = 1;
}
}
}
else
{
if(cg_GprsRecBuff[0] < GPRS_REC_COMM_SIZE)
{
cg_GprsRecBuff[0] ++;
}
else
{
cg_GprsRecBuff[0] = 0;
}
cg_GprsRecBuff[cg_GprsRecBuff[0]] = SBUF;
if( (cg_GprsRecBuff[0] == 2) && (cg_GprsRecBuff[1] == '>') &&
(cg_GprsRecBuff[2] == 0x20))
{
//may send data to gprs
bg_GprsRecSE = 0;
bg_GprsRec = 1;
cg_GprsRecBuff[0] = 0;
}
}
}
else if(bg_GprsDataHead)
{
cg_ExtInter |= GPRS_RED_ON;
EXT_INTER = cg_ExtInter;
cg_GprsRecDataBuff[0] ++;
cg_GprsRecDataBuff[cg_GprsRecDataBuff[0]] = SBUF;
if(cg_GprsRecDataBuff[0] == cg_GprsRecDataBuff[1])
{
//收到一帧完整的数据帧
bg_GprsRxData = 1;
cg_ExtInter &= GPRS_RED_OFF;
EXT_INTER = cg_ExtInter;
cg_GprsRecDataBuff[0] = 0;
bg_GprsDataHead = 0;
}
else if(cg_GprsRecDataBuff[0] > cg_GprsRecDataBuff[1])
{
cg_GprsRecDataBuff[0] = 0;
bg_GprsDataHead = 0;
}
}
else
{
if(SBUF == 0x0d)
{
bg_GprsCr = 1;
}
else if(SBUF == 0x0a)
{
if(bg_GprsCr)
{
bg_GprsCr = 0;
bg_GprsRecSE = 1;
}
}
else if(SBUF == GPRS_INFO_HEADER1)
{
bg_GprsRxHead = 1;
}
else if(SBUF == GPRS_INFO_HEADER2)
{
if(bg_GprsRxHead)
{
bg_GprsRxHead = 0;
bg_GprsDataHead = 1;
}
}
else
{
bg_GprsRxHead = 0;
bg_GprsCr = 0;
}
}
}
if(TI)
{
TI = 0;
cg_ExtInter |= GPRS_GREEN_ON;
EXT_INTER = cg_ExtInter;
if(bg_Decode)
{
bg_Decode = 0;
SBUF = cg_Decode;
}
else if(cg_GprsTraCount < cg_GprsTraBuff[0])
{
cg_GprsTraCount ++;
if(bg_SendData)
{
if(cg_GprsTraBuff[cg_GprsTraCount] == '&')
{
SBUF = '&';
bg_Decode = 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -