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

📄 西门子无线手机模块通信at命令.c

📁 西门子无线手机模块AT COMMAND 用于无线数传(C51MCU)
💻 C
📖 第 1 页 / 共 3 页
字号:
        {
           c=Recv_Data();
           if(Recv_bit==0)return(0);
        }
        Address_H=0x00;
        Address_L=0x00;

        Month=Recv[0]&0x0f;
        Month=((Recv[0]&0xf0)>>4)*10+Month;
        Day=Recv[1]&0x0f;
        Day=((Recv[1]&0xf0)>>4)*10+Day;
        /****/
        Day=Day-1;
        DB=Day;
        if(Day==0)
        {
          Month=Month-1;
          if(Month==0)Month=12;
          switch(Month)
          {
             case 1:
                    Day=31;
                    break;
             case 2:
                    Day=29;
                    break;
             case 3:
                    Day=31;
                    break;
             case 4:
                    Day=30;
                    break;
             case 5:
                    Day=31;
                    break;
             case 6:
                    Day=30;
                    break;
             case 7:
                    Day=31;
                    break;
             case 8:
                    Day=31;
                    break;
             case 9:
                    Day=30;
                    break;
             case 10:
                    Day=31;
                    break;
             case 11:
                    Day=30;
                    break;
             case 12:
                    Day=31;
                    break;
          }
        }

        switch(Timeout_Set)
        {
                case 0xc1:
                          for(i=1;i<Day;i++)
                          {
                                   CY=0;
                                   Address_L=Address_L+0x70;
                                   if(CY==1)Address_H++;
                          }
                          if((Month&0x01)==0x01)
                          {
                                   CY=0;
                                   Address_L=Address_L+0x90;
                                   if(CY==1)Address_H++;
                                   Address_H=Address_H+0x0d;
                          }
                          Clear_R_S();
                          if(DingShiShangChuan_OneDay(Address_H,Address_L)==0)return(0);
                          /****/
                          R_S_Data[110]=(R_S_Data[110]&0x0f)|(((Day/10)*16)&0xf0);
                          R_S_Data[112]=(R_S_Data[112]&0x0f)|(((Day-((Day/10)*10))*16)&0xf0);
                          R_S_Data[108]=(R_S_Data[108]&0x0f)|((Month*16)&0xf0);
                          /****/
                          if(Send_Message()==0)return(0);
                          break;
                case 0xc2:
                          if(DB==0)
                          {

                                   Clear_R_S();
                                   if((Month&0x01)==0x01)
                                    {
                                     Address_H=0x1f;
                                     Address_L=0x90;
                                    }
                                   else
                                    {
                                     Address_H=0x1f;
                                     Address_L=0x80;
                                    }
                                   if(DingShiShangChuan_OneMonth(Address_H,Address_L)==0)return(0);
                                   R_S_Data[108]=(R_S_Data[108]&0x0f)|((Month*16)&0xf0);
                                   if(Send_Message()==0)return(0);
                          /**************************/
                          }
                          break;
                default:
                          break;
        }
        return(1);
}

/*短信控制命令****/
bit TC35_ini()
{
   uchar c;
   Send_Char('A');   /* 初始化PDU格式 */
   Send_Char('T');
   Send_Char('+');
   Send_Char('C');
   Send_Char('M');
   Send_Char('G');
   Send_Char('F');
   Send_Char('=');
   Send_Char('0');
   Send_Char(0x0d);
   while(1)
   {
     c=Recv_Data();
     if(Recv_bit==0)return(0);
     if(c=='O')
     {
       c=Recv_Data();
       if(Recv_bit==0)return(0);
       if(c=='K')break;
     }
   }
   return(1);
}

bit Set_Mode()//设置短信息模式
{

   uchar c;
   Send_Char('A');
   Send_Char('T');
   Send_Char('E');
   Send_Char('0');
   Send_Char(0x0d);
   while(1)
   {
     c=Recv_Data();
     if(Recv_bit==0)return(0);
     if(c=='O')
     {
       c=Recv_Data();
       if(Recv_bit==0)return(0);
       if(c=='K')break;
     }
   }
   Delay_1000ms();
   Send_Char('A');
   Send_Char('T');
   Send_Char('+');
   Send_Char('C');
   Send_Char('N');
   Send_Char('M');
   Send_Char('I');
   Send_Char('=');
   Send_Char('1');
   Send_Char(',');
   Send_Char('1');
   Send_Char(',');
   Send_Char('0');
   Send_Char(',');
   Send_Char('0');
   Send_Char(',');
   Send_Char('1');
   Send_Char(0x0d);
   while(1)
   {
     c=Recv_Data();
     if(Recv_bit==0)return(0);
     if(c=='O')
     {
       c=Recv_Data();
       if(Recv_bit==0)return(0);
       if(c=='K')break;
     }
   }
   return(1);
}

bit Recv_GSM_Data()//接收短信息
{
    uchar c;
    while(1)
        {c=Recv_Data();
         if(Recv_bit==0)return(0);
         if(c=='C')
            {c=Recv_Data();
             if(Recv_bit==0)return(0);
             if(c=='M')
                {c=Recv_Data();
                 if(Recv_bit==0)return(0);
                 if(c=='T')
                    {c=Recv_Data();
                     if(Recv_bit==0)return(0);
                     if(c=='I')break;
                    }
                }
            }
        }

   c=Recv_Data();                        //返回‘:’0x3a
   if(Recv_bit==0)return(0);
   c=Recv_Data();                        //返回‘  ’0x20
   if(Recv_bit==0)return(0);
   c=Recv_Data();                        //返回‘"’ 0x22 
   if(Recv_bit==0)return(0);
   c=Recv_Data();                        //返回‘S’ 0x53
   if(Recv_bit==0)return(0);
   c=Recv_Data();                        //返回‘M’ 0x4D
   if(Recv_bit==0)return(0);
   c=Recv_Data();                        //返回‘"’ 0x22
   if(Recv_bit==0)return(0);
   c=Recv_Data();                        //返回‘,’ 0x2C
   if(Recv_bit==0)return(0);
   c=Recv_Data();                        //返回‘3’ 0x33
   if(Recv_bit==0)return(0);
   Message_No=c;
   c=Recv_Data();                        //返回‘3’ 0x33
   if(Recv_bit==0)return(0);
   if(c!=0x0d)
   {
     Message_NoB=c;
     No_bit=1;
   }
   return(1);
}


bit Get_Message_Capability()    //获取短信息容量
{
   uchar c;
   Send_Char('A');
   Send_Char('T');
   Send_Char('+');
   Send_Char('C');
   Send_Char('P');
   Send_Char('M');
   Send_Char('S');
   Send_Char('?');
   Send_Char(0x0d);
    while(1)
        {c=Recv_Data();
         if(Recv_bit==0)return(0);
         if(c=='C')
            {c=Recv_Data();
             if(Recv_bit==0)return(0);
             if(c=='P')
                {c=Recv_Data();
                 if(Recv_bit==0)return(0);
                 if(c=='M')
                    {c=Recv_Data();
                     if(Recv_bit==0)return(0);
                     if(c=='S')break;
                    }
                }
            }
        }
   c=Recv_Data();                     //返回‘:’0x3a
   if(Recv_bit==0)return(0);
   c=Recv_Data();                     //返回' ',0x20
   if(Recv_bit==0)return(0);
   c=Recv_Data();                     //返回'"',0x22
   if(Recv_bit==0)return(0);
   c=Recv_Data();                     //返回'S',0X53
   if(Recv_bit==0)return(0);
   c=Recv_Data();                     //返回'M',0X4D
   if(Recv_bit==0)return(0);
   c=Recv_Data();                     //返回'"',0X22
   if(Recv_bit==0)return(0);
   c=Recv_Data();                     //返回',',0X2C
   if(Recv_bit==0)return(0);
   c=Recv_Data();                     //返回'1',0X31  当前已有短信数量    
   if(Recv_bit==0)return(0);
   c=Recv_Data();                     //返回',',0X2C    
   if(Recv_bit==0)return(0);
   if(c!=0x2c)
   {
       c=Recv_Data();                 //返回',',0X2C    
       if(Recv_bit==0)return(0);
   }  
   c=Recv_Data();                     //返回'1',0X31    
   if(Recv_bit==0)return(0);
   Message_No=c;
   c=Recv_Data();                     //返回'5',0X35    
   if(Recv_bit==0)return(0);
   Message_NoB=c;
   Message_Capability=toint(Message_No)*10+toint(Message_NoB);   
   return(1);
}

bit Read_GSM_Text()//读短信息
{
   uchar c;
   uint i,j,t,f,k=0,n=0;
   uchar Data_Wide[2],Message_Mode;
   Send_Char('A');
   Send_Char('T');
   Send_Char('+');
   Send_Char('C');
   Send_Char('M');
   Send_Char('G');
   Send_Char('R');
   Send_Char('=');
   Send_Char(Message_No);
   if(No_bit==1)Send_Char(Message_NoB);
   Send_Char(0x0d);
   while(1)/*------------*/
    {c=Recv_Data();
     if(Recv_bit==0)return(0);
     if(c=='+')
        {c=Recv_Data();
         if(Recv_bit==0)return(0);
         if(c=='C')
            {c=Recv_Data();
             if(Recv_bit==0)return(0);
             if(c=='M')
                {c=Recv_Data();
                 if(Recv_bit==0)return(0);
                 if(c=='G')
                    {c=Recv_Data();
                     if(Recv_bit==0)return(0);
                     if(c=='R')break;
                    }
                }
            }
        }
    }
    /*------------*/
   c=Recv_Data();                         //返回‘:’  0x3a   
   if(Recv_bit==0)return(0);
   c=Recv_Data();                         //返回‘  ’  0x20   
   if(Recv_bit==0)return(0);
   c=Recv_Data();                         //返回‘1’   0x31   短信记录号   
   if(Recv_bit==0)return(0);
   if(c==0x30)                            //短信息为空则延时后返回
   { 
     for(i=0;i<11;i++)
     {
        c=Recv_Data();
        if(Recv_bit==0)return(0);
     }
     Delay_100ms();
     Message_NoB=0x99;     
     return(2);
   }
   c=Recv_Data();                         //返回‘,’  0x2C   
   if(Recv_bit==0)return(0);
   if(c!=0x2c)                              
   {
     c=Recv_Data();                         //返回‘,’  0x2C   
     if(Recv_bit==0)return(0);
   }
   c=Recv_Data();                         //返回‘,’    0x2C   
   if(Recv_bit==0)return(0);
   c=Recv_Data();                         //返回‘2’     0x32   
   if(Recv_bit==0)return(0);
   c=Recv_Data();                         //返回‘2’     0x32   
   if(Recv_bit==0)return(0);
   c=Recv_Data();
   if(Recv_bit==0)return(0);
   if(c==0x0d)
    {
      f=27;
   }
   else
    {
      f=28;
    }
   for(i=0;i<f;i++)
    {
      c=Recv_Data();
      if(Recv_bit==0)return(0);
    }
    /*--------------*/
   for(i=0;i<12;i++)
    {
      c=Recv_Data();
      if(Recv_bit==0)return(0);
    }
    /*--------------*/
   for(i=0;i<3;i++)
    {
      c=Recv_Data();
      if(Recv_bit==0)return(0);
    }
   /*--------------*/
   c=Recv_Data();
   if(Recv_bit==0)return(0);
   Message_Mode=c;
   for(i=0;i<12;i++)
    {
      c=Recv_Data();
      if(Recv_bit==0)return(0);
    }
   /*--------------*/
   for(i=0;i<2;i++)
    {
      c=Recv_Data();
      if(Recv_bit==0)return(0);
    }
   /*--------------*/
   for(i=0;i<2;i++)
    {
      c=Recv_Data();
      if(Recv_bit==0)return(0);
      Data_Wide[i]=c;
    }
   /*--------------*/
   i=16*(Data_Wide[0]-0x30);
   if(Data_Wide[1]>0x40)
     i=i+Data_Wide[1]-0x40+9;
   else
     i=i+Data_Wide[1]-0x30;
   if(i>114) i=114;    //最多处理57汉字或114字符数字
   /*----------------*/
   if(Message_Mode=='8')//中文传输模式
   {
     for(j=0;j<i/2;j++)
     {
         c=Recv_Data();
         if(Recv_bit==0)return(0);
         if(c>0x40)
          t=16*(c-0x40+9);
         else
          t=16*(c-0x30);
         c=Recv_Data();
         if(Recv_bit==0)return(0);
         if(c>0x40)
          t=t+c-0x40+9;
         else
          t=t+c-0x30;
         R_S_Data[k++]=t;

         c=Recv_Data();
         if(Recv_bit==0)return(0);
         if(c>0x40)
          t=16*(c-0x40+9);
         else
          t=16*(c-0x30);
         c=Recv_Data();
         if(Recv_bit==0)return(0);
         if(c>0x40)
          t=t+c-0x40+9;
         else
          t=t+c-0x30;
          R_S_Data[k++]=t;
     }
   }
   else//英文传输模式
   {
     ;
   }
   return(1);
}

bit Delect_GSM_Message()//删除短信息
{
   uchar c;
   Send_Char('A');
   Send_Char('T');
   Send_Char('+');
   Send_Char('C');
   Send_Char('M');
   Send_Char('G');
   Send_Char('D');
   Send_Char('=');
   Send_Char(Message_No);
   if(No_bit==1)Send_Char(Message_NoB);
   Send_Char(0x0d);
   while(1)
   {
     c=Recv_Data();
     if(Recv_bit==0)return(0);
     if(c=='O')
     {
       c=Recv_Data();
       if(Recv_bit==0)return(0);
       if(c=='K')break;
     }
   }
   return(1);
}

bit Delect_GSM_MessageB()//删除短信息
{
   uchar c;
   Send_Char('A');
   Send_Char('T');
   Send_Char('+');
   Send_Char('C');
   Send_Char('M');
   Send_Char('G');
   Send_Char('D');
   Send_Char('=');
   Send_Char(Message_No);
   Send_Char(Message_NoB);
   Send_Char(0x0d);
   while(1)
   {
     c=Recv_Data();
     if(Recv_bit==0)return(0);
     if(c=='O')
     {
       c=Recv_Data();
       if(Recv_bit==0)return(0);
       if(c=='K')break;
     }
   }
   return(1);
}
/**************************/
bit Send_Message()//发送短信息
{
   uint n;
   uchar c;
   L2=1;
   A0=0;
   A1=1;
   A2=0;
   A3=1;
   Send_Char('A');
   Send_Char('T');
   Send_Char('+');
   Send_Char('C');
   Send_Char('M');
   Send_Char('G');
   Send_Char('S');
   Send_Char('=');
   Send_Char(0x31);
   Send_Char(0x32);
   Send_Char(0x38);
   Send_Char(0x0d);
   c=Recv_Data();
   if(Recv_bit==0)return(0);
   c=Recv_Data();
   if(Recv_bit==0)return(0);
   while(1)
   {
    c=Recv_Data();
    if(Recv_bit==0)return(0);
    if(c=='>')
     c=Recv_Data();
     if(Recv_bit==0)return(0);
     if(c==' ')break;
   }
   Send_Char('0');
   Send_Char('8');
   Send_Char('9');
   Send_Char('1');

   Send_Char('6');
   Send_Char('8');
   Send_Char('3');
   Send_Char('1');

   c=Short_Center_Code[0];
   c=(c&0x0f)+0x30;
   Send_Char(c);
   c=Short_Center_Code[0];
   c=((c&0xf0)>>4)+0x30;
   Send_Char(c);
   c=Short_Center_Code[1];
   c=(c&0x0f)+0x30;
   Send_Char(c);
   c=Short_Center_Code[1];
   c=((c&0xf0)>>4)+0x30;
   Send_Char(c);
   c=Short_Center_Code[2];
   c=(c&0x0f)+0x30;
   Send_Char(c);
   c=Short_Center_Code[2];
   c=((c&0xf0)>>4)+0x30;
   Send_Char(c);
   c=Short_Center_Code[3];
   c=(c&0x0f)+0x30;
   Send_Char(c);
   c=Short_Center_Code[3];
   c=((c&0xf0)>>4)+0x30;
   Send_Char(c);
   c=Short_Center_Code[4];
   c=(c&0x0f)+0x30;
   Send_Char('f');
   c=Short_Center_Code[4];
   c=((c&0xf0)>>4)+0x30;
   Send_Char(c);

   Send_Char('1');
   Send_Char('1');
   Send_Char('F');
   Send_Char('F');
   Send_Char('0');
   Send_Char('B');

   Send_Char('8');
   Send_Char('1');

   Send_Char('3');
   Send_Char('1');
   c=Contral_Center_Code[0];
   c=(c&0x0f)+0x30;
   Send_Char(c);
   c=Contral_Center_Code[0];
   c=((c&0xf0)>>4)+0x30;
   Send_Char(c);
   c=Contral_Center_Code[1];
   c=(c&0x0f)+0x30;
   Send_Char(c);
   c=Contral_Center_Code[1];
   c=((c&0xf0)>>4)+0x30;
   Send_Char(c);
   c=Contral_Center_Code[2];
   c=(c&0x0f)+0x30;
   Send_Char(c);
   c=Contral_Center_Code[2];
   c=((c&0xf0)>>4)+0x30;
   Send_Char(c);
   c=Contral_Center_Code[3];
   c=(c&0x0f)+0x30;
   Send_Char(c);
   c=Contral_Center_Code[3];
   c=((c&0xf0)>>4)+0x30;
   Send_Char(c);
   c=Contral_Center_Code[4];
   c=(c&0x0f)+0x30;
   Send_Char('f');
   c=Contral_Center_Code[4];
   c=((c&0xf0)>>4)+0x30;
   Send_Char(c);

⌨️ 快捷键说明

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