📄 gprs.c
字号:
#define RECLEN 128
#define IGT P1_6
#define gx_straindata g_strainData
uchar xdata g_rec[RECLEN];
uchar g_rspoint;
char xdata g_phone[11];
uchar code GPRSCmdAT[] = "AT\r";
uchar code GPRSCmdCMGF[] = "AT+CMGF=1\r";
char xdata GPRSCmdCNMI[] = "AT+CNMI=2,1\r";
char xdata GPRSCmdCMGD[] = "AT+CMGD=1\r";
char xdata GPRSCmdCMGR[] = "AT+CMGR=1\r";
char xdata GPRSCmdCMGS[] = "AT+CMGS=";
char xdata gx_sentdata[8][10];
void change()
{
uchar i,j;
char c;
for(i=0; i<8; i++)
{
for(j=0;j<5; j++)
{
c = (gx_straindata[i][j] & 0xf0)>>4;
if (c<=9)
gx_sentdata[i][j<<1] = c|0x30;
else
gx_sentdata[i][j<<1] = (c-9)|0x40;
c = gx_straindata[i][j] & 0x0f;
if (c<=9)
gx_sentdata[i][(j<<1)+1] = c|0x30;
else
gx_sentdata[i][(j<<1)+1] = (c-9)|0x40;
}
}
}
void testssd()
{
uchar i,j;
for(i=0; i<8; i++)
{
send_char('1');
send_char(0x41+i);
send_char(':');
for(j=0;j<10;j++)
send_char(gx_sentdata[i][j]);
send_char(',');
}
}
void Serial_INT() interrupt 4 using 3
{
if(RI)
{
RI = 0;
g_rec[g_rspoint++] = SBUF;
if (g_rspoint>=RECLEN)
{
g_rspoint = 0;
// todo? set overflow
}
}
}
void gprs_delay(void) //delay 1S
{
unsigned char h,i,j,k;
for(h=5;h>0;h--)
for(i=4;i>0;i--)
for(j=116;j>0;j--)
for(k=214;k>0;k--);
}
void gprs_start()
{
gprs_delay();
gprs_delay();
gprs_delay();
gprs_delay();
gprs_delay();
gprs_delay();
P1_6=1;
P1_6=0;
gprs_delay();
P1_6=1;
}
void gprs_rec()
{
uchar prept = 0xff;
ES=1;
g_rspoint=0;
while(prept != g_rspoint)
{
prept = g_rspoint;
delay10ms();
delay10ms();
delay10ms();
}
ES=0;
// gprs_delay();
}
void gprs_CNMI()
{
uchar i, len;
len = strlen(GPRSCmdCNMI);
for (i=0;i<len; i++)
{
send_char(GPRSCmdCNMI[i]);
}
gprs_rec();
}
void gprs_CMGF()
{
uchar i, len;
len = strlen(GPRSCmdCMGF);
for (i=0;i<len; i++)
{
send_char(GPRSCmdCMGF[i]);
}
gprs_rec();
}
void gprs_CMGD()
{
uchar i, len;
len = strlen(GPRSCmdCMGD);
for (i=0;i<len; i++)
{
send_char(GPRSCmdCMGD[i]);
}
gprs_rec();
}
void testssd();
void gprs_CMGS()
{
uchar i, len;
ES=1;
g_rspoint = 0;
len = strlen( GPRSCmdCMGS);
for(i=0; i<len; i++)
{
delay1ms();
send_char(GPRSCmdCMGS[i]);
}
for(i=0; i<11; i++)
{
delay1ms();
send_char(g_phone[i]);
}
delay1ms();
send_char(0x0d);
// gprs_rec();
delay10ms();
delay10ms();
delay10ms();
testssd();
send_char(0x1a);
for(i=0;i<10;i++)
gprs_delay();
// display(0, g_rec, g_rspoint);
}
bit gprs_CMGR()
{
uchar i, j, len;
len = strlen(GPRSCmdCMGR);
// P1_1=1;
// P1_1=0;
// gprs_delay();
// P1_1=1;
// display(0, GPRSCmdCMGR, len);
for (i=0; i<len; i++)
{
send_char(GPRSCmdCMGR[i]);
}
gprs_rec();
// GET PHOTHON
for (i=0; i<g_rspoint; i++)
{
if (g_rec[i] == ',' )
{
if (g_rec[i+1] == ',')
// it is empty message
return 0;
if (g_rec[i+2]!='+')
{
send_char('a');
send_char('t');
send_char('1');
send_char('\r');
gprs_CMGD();
return 0;
}
for(j=0; j<11; j++)
g_phone[j] = g_rec[i+5+j];
break;
}
}
for(i += 36; i<g_rspoint; i++)
if (g_rec[i] == '\n')
{
// read message content
if (g_rec[i+1] == 'A' && g_rec[i+2] == 'A' && g_rec[i+3] == 'A')
{
gprs_CMGD();
return 1;
}
else
{
send_char('a');
send_char('t');
send_char('2');
send_char('\r');
}
}
gprs_CMGD();
return 0;
}
bit gprs_Init()
{
char i, retry=3;
while(retry--)
{
// display(retry, s, 3);
for(i=0;i<3;i++)
{
send_char(GPRSCmdAT[i]);
}
gprs_rec();
g_rec[g_rspoint] = 0x30+g_rspoint;
// CLRSCR();
// display(0, g_rec, g_rspoint+1);
// delay500ms();
if (g_rec[5]=='O' && g_rec[6]=='K')
break;
}
if(retry<=0)
return 0;
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -