📄 pt_gprs.c
字号:
RCAP2H=0xFF; //波特率38400
RCAP2L=0xEE; //
TR0=0; //关定时器T0
TR2=0; //关定时器T2
EA=0; //关中断
ES=0;
TH0=0xB8; //定时10毫秒,装初值
TL0=0x00; //
TR0=1; //开定时器T0
TR2=1; //开定时器T2
EA=1; //开中断
// ES=1; //开串口中断
ET0=1; //开定时器T0中断
TI=0; //清发送置位
RI=0; //清接收置位
}
//.....................................................
main()
{
uchar i;
// get_led=1; //初始化接收指示灯关
// send_led=1; //初始化发送指示灯关
// er_led1=1; //初始化错误指示灯关
// er_led2=1;
// er_led3=1;
// er_led4=1;
// over_led=1; //初始化结束指示灯关
outbufsign=0;
inbufful1=0;
inbufful2=0;
TIsign=0;
data_number1=0;
data_number2=0;
data_over1=0;
data_over2=0;
T0_10ms_count=0;
OI=0;
TTL_485=1;
for(i=0;i<=120;i++)
{
DelayUs(0x7A12); //延时15s
}
init(); //串口,定时器初始化
//=======================================================
//以下关中断,以防指令数据接收错误
//=======================================================
ES=0;
//.......................................................
for(i=0;i<=2;i++)
{
sendDatas("AT\r\n");
getDatas();
if(AT_BUFF[2]=='O'&&AT_BUFF[3]=='K')
break;
// if(i==2)
// {
// er_led1=0; //初始化错误指示灯关
// er_led2=1;
// er_led3=1;
// er_led4=1;
// while(1){};
// }
}
//..............................................................
for(i=0;i<20;i++)
{
DelayUs(0x30D4); //延时1s
}
//..............................................................
for(i=0;i<=2;i++)
{
sendDatas("AT+CGDCONT=1,");
sendData('"');
sendDatas("IP");
sendData('"');
sendData(',');
sendData('"');
sendDatas("cmnet");
sendData('"');
sendData(',');
sendData('"');
sendDatas("0.0.0.0");
sendData('"');
sendDatas(",0,0\r\n");
getDatas();
if(AT_BUFF[2]=='O'&&AT_BUFF[3]=='K')
break;
// if(i==2)
// {
// er_led1=1; //初始化错误指示灯关
// er_led2=0;
// er_led3=1;
// er_led4=1;
// while(1){};
// }
}
//..............................................................
for(i=0;i<20;i++)
{
DelayUs(0x30D4); //延时1s
}
//..............................................................
for(i=0;i<=2;i++)
{
sendDatas("AT#USERID=");
sendData('"');
sendData('"');
sendDatas("\r\n");
getDatas();
if(AT_BUFF[2]=='O'&&AT_BUFF[3]=='K')
break;
// if(i==2)
// {
// er_led1=0; //初始化错误指示灯关
// er_led2=0;
// er_led3=1;
// er_led4=1;
// while(1){};
// }
}
//..............................................................
for(i=0;i<20;i++)
{
DelayUs(0x30D4); //延时1s
}
//..............................................................
for(i=0;i<=2;i++)
{
sendDatas("AT#PASSW=");
sendData('"');
sendData('"');
sendDatas("\r\n");
getDatas();
if(AT_BUFF[2]=='O'&&AT_BUFF[3]=='K')
break;
// if(i==2)
// {
// er_led1=1; //初始化错误指示灯关
// er_led2=1;
// er_led3=0;
// er_led4=1;
// while(1){};
// }
}
//..........................................................
for(i=0;i<20;i++)
{
DelayUs(0x30D4); //延时1s
}
//..........................................................
for(i=0;i<=2;i++)
{
sendDatas("AT#PKTSZ=20\r\n");
getDatas();
if(AT_BUFF[2]=='O'&&AT_BUFF[3]=='K')
break;
// if(i==2)
// {
// er_led1=0; //初始化错误指示灯关
// er_led2=1;
// er_led3=0;
// er_led4=1;
// while(1){};
// }
}
//...........................................................
for(i=0;i<20;i++)
{
DelayUs(0x30D4); //延时1s
}
//...........................................................
for(i=0;i<=2;i++)
{
sendDatas("AT#DSTO=1\r\n");
getDatas();
if(AT_BUFF[2]=='O'&&AT_BUFF[3]=='K')
break;
// if(i==2)
// {
// er_led1=1; //初始化错误指示灯关
// er_led2=0;
// er_led3=0;
// er_led4=1;
// while(1){};
// }
}
//..........................................................
for(i=0;i<20;i++)
{
DelayUs(0x30D4); //延时1s
}
//...........................................................
for(i=0;i<=2;i++)
{
sendDatas("AT#SKTTO=1000\r\n");
getDatas();
if(AT_BUFF[2]=='O'&&AT_BUFF[3]=='K')
break;
// if(i==2)
// {
// er_led1=0; //初始化错误指示灯关
// er_led2=0;
// er_led3=0;
// er_led4=1;
// while(1){};
// }
}
//...........................................................
for(i=0;i<20;i++)
{
DelayUs(0x30D4); //延时1s
}
//............................................................
for(i=0;i<=2;i++)
{
sendDatas("AT#SKTSET=0,4000,");
sendData('"');
sendDatas("60.176.84.10");
sendData('"');
sendDatas("\r\n");
getDatas();
if(AT_BUFF[2]=='O'&&AT_BUFF[3]=='K')
break;
// if(i==2)
// {
// er_led1=1; //初始化错误指示灯关
// er_led2=1;
// er_led3=1;
// er_led4=0;
// while(1){};
// }
}
//.............................................................
for(i=0;i<20;i++)
{
DelayUs(0x30D4); //延时1s
}
//............................................................
for(i=0;i<=2;i++)
{
// sendDatas("AT#GPRS?\r\n");
// getDatas();
// if(AT_BUFF[9]=='0'&&AT_BUFF[14]=='O'&&AT_BUFF[15]=='K') //未登陆,设置登陆 #GPRS: 0
// {
// for(j=0;j<=2;j++)
// {
//.........................................................
// for(k=0;k<20;k++)
// {
// DelayUs(0x30D4); //延时1s
// }
//........................................................
sendDatas("AT#GPRS=1\r\n");
getDatas();
if(AT_BUFF[2]=='+'&&AT_BUFF[3]=='I'&&AT_BUFF[4]=='P')
break;
// if(j==2)
// {
// er_led1=0; //初始化错误指示灯关
// er_led2=1;
// er_led3=1;
// er_led4=0; //............................
// while(1){};
// }
// }
// break;
// }
// else //已登陆 #GPRS: 1
// break;
// if(i==2)
// {
// er_led1=1; //初始化错误指示灯关
// er_led2=0;
// er_led3=1;
// er_led4=0; //............................
// while(1){};
// }
}
//...............................................................
for(i=0;i<20;i++)
{
DelayUs(0x30D4); //延时1s
}
//................................................................
sendDatas("AT#SKTD=0,4000,");
sendData('"');
sendDatas("60.176.84.10");
sendData('"');
sendDatas(",255\r\n");
//=================================================================
for(i=0;i<80;i++)
{
DelayUs(0x30D4); //延时4s
}
//.................................................................
ES=1; //开串口中断
//=================================================================
OI=1;
putbytes("Command Ready!",14); //发送给上位机PC,准备接收数据
for(i=0;i<20;i++)
DelayUs(0x30D4); //延时1s
while(data_over2==0); //接收上位机PC数据
for(i=0;i<20;i++)
DelayUs(0x30D4); //延时1s
data_number2=0; //清空接收标志
data_over2=0;
OI=1;
putbytes("DATA_OK!\r\n",10); //返回确认信息
for(i=0;i<20;i++)
DelayUs(0x30D4); //延时1s
while(1)
{
while(data_over2==0); //接收上位机PC数据
for(i=0;i<20;i++)
DelayUs(0x30D4); //延时1s
data_number2=0; //清空接收标志
data_over2=0;
ASCII_OXXX(inbuf2); //十六进制字符串转化为十六进制 "B0"=>0xB0
OI=1;
putbytes(inbuf2,3); //返回确认信息
// OI=0;
// putbytes(inbuf2,3); //把上位机指令发给下位机
for(i=0;i<20;i++)
DelayUs(0x30D4); //延时1s
while(data_over1==0); //接收PT报警盒数据
for(i=0;i<20;i++)
DelayUs(0x30D4); //延时1s
data_number1=0; //清空接收标志
data_over1=0;
OXXX_ASCII(inbuf1); //十六进制转化为十六进制字符串 0xB0=>"B0"
OI=1;
putbytes(inbuf1,6); //向上位机发送PT报警信息
for(i=0;i<20;i++)
DelayUs(0x30D4); //延时1s
};
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -