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

📄 tr800.txt

📁 用ARM和TR800彩信模块实现彩信发送
💻 TXT
字号:
void Send_SMS(char SMS_Long,char * User_Phone,char * SMS_Udl,char * SMS_Data)
{ 
  char aa[30]={0};
  char bb[30]={0};
  char cc[60]={0};
  char dd[60]={0};
  char i1=0,i2=0,i3=0,i4=0;
  char Out1=0,Out2=0,Out3=0,Out4=0;
  char time=0x30;
  
  Led_Display(0x2);
  Uart_Select(1);

     Uart_Printf("at+cmgf=0\n");       //使能PDU发送,1时为text
     while(1)
      {
        aa[i1]=Uart_Getch();
       if(aa[i1]=='\n')
             Out1++;
     if(Out1==1)
     {                    //第1行出现OK或者其他标示
        if((aa[i1-1]=='O')&&(aa[i1]=='K'))

          break;

        else if ((aa[i1-2]=='R')&&(aa[i1-1]=='O')&&(aa[i1]=='R'))
         {
           Out1=0;
           time++;     
           Uart_Printf("\n");
           Clear_Rin_Sign();
           Uart_Select(0);
           Uart_Printf("Hardware Error,Pleasr Reset\n");
           Uart_Select(1);
           }
       }
     if(Out1==2){                   //2个换行最大值,判定模块是否激活
       Uart_Printf("\n");
       Clear_Rin_Sign();
       Uart_Printf("at+cmgf=0\n");
       Out1=0;
       time++;}
     if(time==0x33)                //超出3次即视为系统错误
     {
       Uart_Select(0);
       Uart_Printf("Hardware Error,Pleasr Reset\n");
       Uart_SendByte('F');
       Uart_Printf("\n");
       Uart_Select(1);
       break;
     }
     i1++;
    }   //第1个while(1)

    Uart_Printf("at+cnmi=2,2,0,0,0\n");          //发送命令
    Clear_Rin_Sign();

 ////*************用CMGS命令发送短信**************////////
  Led_Display(0x4);
  Uart_Printf("At+cmgs=24\n");                //发送SMS短信命令
    while(1)
    {
     bb[i2]=Uart_Getch();
     if(bb[i2]=='\n')
       Out2++;
     if(Out2==1)
     {
       if(bb[i2]=='>') 
       {
         Uart_Printf("0011000D9168");      //前端初始设置
         Uart_Printf(User_Phone);
         Uart_Printf("000000");
         Uart_Printf(SMS_Udl);
         Uart_Printf(SMS_Data);
         Uart_SendByte(0x1A);             //撤销符Ctrl+z,发送短信命令结束
         
//////*******看返回信息是发送成功还是失败******//////
         while(1)                         
          { 
             cc[i3]=Uart_Getch();
             Led_Display(0x8);
             if(cc[i3]=='\n')
               Out3++;
             if(Out3==1)
             {                    
               if ((cc[i3-3]=='C')&&(cc[i3-2]=='M')&&(cc[i3-1]=='G')&&(cc[i3]=='S'))
                 {
                   Uart_Select(0);
                   Uart_Printf("\n\nSMS Sussess\n");
                   Uart_Select(1);
                   break;
                   }
               if ((cc[i3-2]=='R')&&(cc[i3-1]=='O')&&(cc[i3]=='R'))
                {
                   Uart_Select(0);
                   Uart_Printf("\n\nFirst Time Lost,Try Again\n");
                   Uart_Select(1);
                   
  //////*******若第一次失败,尝试第二次,可以针对上电重启时的状态******////// 
                   Uart_Printf("\n");  
                   Clear_Rin_Sign();
                   Delay(2000);
                   Uart_Printf("At+cmgs=24\n");          
                   while(1)
                    {
                       dd[i4]=Uart_Getch();
                       if(dd[i4]=='\n')
                          Out4++;
                       if(Out4==1)
                       {
                          if(dd[i4]=='>') 
                           {
                             Uart_Printf("0011000D9168");    //前端初始设置
                             Uart_Printf(User_Phone);
                             Uart_Printf("000000");
                             Uart_Printf(SMS_Udl);
                             Uart_Printf(SMS_Data);
                             Uart_SendByte(0x1A);             //撤销符Ctrl+z,发送短信命令结束
                             break;
                             }
                          if ((dd[i4-2]=='R')&&(dd[i4-1]=='O')&&(dd[i4]=='R'))
                            {  
                               Uart_Select(0);
                               Uart_Printf("Hardware Error,Pleasr Reset\n");
                               Uart_Select(1);
                               break; //跳出第4个while(1)
                               }
                         }
                        i4++;
                       }
                     //*********第4个while(1)的结束*********//// 
                       
                  
                    break;  //跳出第3个while(1)
                  }
             
               }
              
            i3++;
           }  
           //*********第3个while(1)的结束*********////  
          break;//跳出第2个while(1)
         }
        else if ((bb[i2-2]=='R')&&(bb[i2-1]=='O')&&(bb[i2]=='R'))
         {
           Out2=0;
           time++; 
           Uart_Printf("\n");
           Clear_Rin_Sign();    
           Uart_Printf("At+cmgs=24\n");
          }
      }
      
     if(Out2==2)   //2个换行最大值
     {   
       Out2=0;
       time++; 
       Uart_Printf("\n");
       Clear_Rin_Sign();    
       Uart_Printf("At+cmgs=\n");
       }
     if(time==0x36)       //超出一定次数即视为系统错误
     {
      Uart_Select(0);
      Uart_Printf("Hardware Error,Pleasr Reset\n");
      Uart_SendByte('S');
      Uart_Printf("\n");
      Uart_Select(1);
      break;  //跳出第2个while(1)
      }
    i2++;
    }   
//*********第二个while(1)的结束**********///////  

  
//*********向电脑发送状态数组**********///////    
  Uart_Select(0);
  Uart_SendString(aa);
  Uart_Printf("\n");
  Uart_SendString(bb);
  Uart_SendString(cc);
  Uart_Printf("\n");
  Uart_SendString(dd);
  Uart_Printf("\n");
  Uart_Select(1); 
}




         
         
         
         
         
         
//////*******看返回信息是发送成功还是失败******//////
         while(1)                         
          { 
             cc[i3]=Uart_Getch();
             Led_Display(0x8);
             if(cc[i3]=='\n')
               Out3++;
             if(Out3==1)
             {                    
               if ((cc[i3-3]=='C')&&(cc[i3-2]=='M')&&(cc[i3-1]=='G')&&(cc[i3]=='S'))
                 {
                   Uart_Select(0);
                   Uart_Printf("\n\nSMS Sussess\n");
                   Uart_Select(1);
                   break;
                   }
               if ((cc[i3-2]=='R')&&(cc[i3-1]=='O')&&(cc[i3]=='R'))
                {
                   Uart_Select(0);
                   Uart_Printf("\n\nFirst Time Lost,Try Again\n");
                   Uart_Select(1);
                   
  //////*******若第一次失败,尝试第二次,可以针对上电重启时的状态******////// 
                   Uart_Printf("\n");  
                   Clear_Rin_Sign();
                   Delay(2000);
                   Uart_Printf("At+cmgs=24\n");          
                   while(1)
                    {
                       dd[i4]=Uart_Getch();
                       if(dd[i4]=='\n')
                          Out4++;
                       if(Out4==1)
                       {
                          if(dd[i4]=='>') 
                           {
                             Uart_Printf("0011000D9168");    //前端初始设置
                             Uart_Printf(User_Phone);
                             Uart_Printf("000000");
                             Uart_Printf(SMS_Udl);
                             Uart_Printf(SMS_Data);
                             Uart_SendByte(0x1A);             //撤销符Ctrl+z,发送短信命令结束
                             break;
                             }
                          if ((dd[i4-2]=='R')&&(dd[i4-1]=='O')&&(dd[i4]=='R'))
                            {  
                               Uart_Select(0);
                               Uart_Printf("Hardware Error,Pleasr Reset\n");
                               Uart_Select(1);
                               break; //跳出第4个while(1)
                               }
                         }
                        i4++;
                       }
                     //*********第4个while(1)的结束*********//// 
                       
                  
                    break;  //跳出第3个while(1)
                  }
             
               }
              
            i3++;
           }  
           //*********第3个while(1)的结束*********////  
          break;//跳出第2个while(1)
         }
        else if ((bb[i2-2]=='R')&&(bb[i2-1]=='O')&&(bb[i2]=='R'))
         {
           Out2=0;
           time++; 
           Uart_Printf("\n");
           Clear_Rin_Sign();    
           Uart_Printf("At+cmgs=24\n");
          }
      }
      
     if(Out2==2)   //2个换行最大值
     {   
       Out2=0;
       time++; 
       Uart_Printf("\n");
       Clear_Rin_Sign();    
       Uart_Printf("At+cmgs=\n");
       }
     if(time==0x36)       //超出一定次数即视为系统错误
     {
      Uart_Select(0);
      Uart_Printf("Hardware Error,Pleasr Reset\n");
      Uart_SendByte('S');
      Uart_Printf("\n");
      Uart_Select(1);
      break;  //跳出第2个while(1)
      }
    i2++;
    }   
//*********第二个while(1)的结束**********///////  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -