⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pt_gprs.c

📁 51单片机控制GM862 GPRS模块进行数据传输
💻 C
📖 第 1 页 / 共 3 页
字号:
 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 + -