2837|0

74

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请问一个AT指令的问题 [复制链接]

利用SIM300模块和430单片机做的设备,用手机短信控制设备,执行一条删除一条,如果前面短信未删除,后面指令就无法执行,现在的问题是加了回复(执行一条指令返回一条确认消息)后就只能执行第一条,现在问题就是短信无法删除,我只改了总闸分的,其他没改,注
:未改动前短信是可以删除的
请问怎样才能使短信删除
下面是程序
void Action_judge(void)
{
                        ulong ultemp1=0,ultemp2;        //号码认证
                  char i,temp1;//,temp2;
                 delay1S();
                  
                  for(i=0;i<13;i++)
                          {
                  //        test2=22;
                          receivnum=RX_action[i+2]-48;
                          }
                  
                  for(i=0;i<11;i=i+2)
                          {
                          //test2=33;
                          temp1=receivnum;
                        receivnum=receivnum[i+1];
                        receivnum[i+1]=temp1;
                         }
                    //4294967296
                  //13277929732

                        receivnum1=10*receivnum[0]+receivnum[1];//13
                        ultemp2=receivnum[2];
                     ultemp1+=ultemp2*100000000;
                     ultemp2=receivnum[3];
                     ultemp1+=ultemp2*10000000;
                     ultemp2=receivnum[4];
                     ultemp1+=ultemp2*1000000;
                     ultemp2=receivnum[5];
                     ultemp1+=ultemp2*100000;
                     ultemp2=receivnum[6];
                     ultemp1+=ultemp2*10000;
                     ultemp2=receivnum[7];
                     ultemp1+=ultemp2*1000;
                     ultemp2=receivnum[8];
                     ultemp1+=ultemp2*100;
                     ultemp2=receivnum[9];
                     ultemp1+=ultemp2*10;
                     ultemp2=receivnum[10];
                     ultemp1+=ultemp2;
                    receivnum2=ultemp1;
                               
                 for(i=0;(i<2*tablesize-1)&&pass==0;i=i+2)
                          {
                          if(receivnum1==Teletable&&receivnum2==Teletable[i+1])
                                        {
                                        pass=1;
                                //        num6=i;
                                        }
                          else
                                       pass=0;       
                                
                          }
                                  
                RX_bit=RX_temp;
                  flag_receiving=0;
                counter_action=0;
                if(pass)//如果通过认证
                        {
                          switch(RX_action[53])
                        {
                         case 65:
                        //设备自检
                             if(RX_action[45]==69)
                                             {
                                        flag_ensend=1;
                                        flag_allsend=1;
                                         }
                                  flag_measuring=1;
                                      flag_display=0;
                                          
                             break;
                       
                      case 56:
                         //总闸合
                         //重合闸以后所有状态是否需要恢复到初始状态?
                         
                               if(RX_action[45]==66)
                                       {
                                       P5OUT&=~BIT4;
                                                  
                                        flag_Tfault=0;
                                        Tstep2send=0;
                                         flag_Irmsfault=0;
                                         rmstep2send=0;
                                         flag_Iresfault=0;
                                         restep2send=0;
                                    flag_reclose=0;
                                          flag_Iresfault=0;
                                         
                                          flag_measuring=1;
                                         flag_display=0;
                                          flag_messfault=0;/*invalidate the message caused cut off flag*/
                                                //清除过流标志
                                         P4OUT&=~BIT0;
                                                //清除过热标志
                                        P4OUT&=~BIT1;
                                                //清除剩余电流过大标志
                                        P4OUT&=~BIT2;
                                        }
                               break;
                       
                     case 54:
                         //总闸分
                               if(RX_action[45]==66)
                                           {
                                         P5OUT|=BIT4;
                                          delay1S();
                                          delay1S();
                                          delay1S();
                                          diskeyint(); //禁止按键中断
                                         flag_ensend=0;//flag clearence
                                         flag_measuring=0;
                                         flag_messfault=1;/*validate the flag to cutt off the break*/
                                         send_commandall();
                                          send_ATorder(TX_ATEsc);
                                           send_ATorder(TX_ATD);//删除短信
                                          
                                       }
                                         enkeyint ();               //发送完毕,打开按键中断
                                          delay1S();
                                          delay1S();
                                    flag_measuring=1;    //恢复测量状态
                                        flag_display=0;//显示IRES
                                                                                              ATTReset();
                                         delay1S();
                                         ATT_Cali();
                              break;
                       
                     case 49://支路1操作
                        //支路1合/分
                               if(RX_action[57]==56)
                                       {
                                       P3OUT&=~BIT0;
                                        flag_messfault=0;
                                       }
                               else if(RX_action[57]==54)
                                        {
                                        P3OUT|=BIT0;
                                         flag_messfault=1;
                                        }
                                  
                                flag_measuring=1;
                                  flag_display=0;
                               break;
                       
                      case 50:
                        //支路2合/分
                               if(RX_action[57]==56)
                                       {
                                       P3OUT&=~BIT1;
                                           flag_messfault=0;
                                       }
                               else if(RX_action[57]==54)
                                        {
                                        P3OUT|=BIT1;
                                         flag_messfault=1;
                                       }
                                       flag_measuring=1;
                                       flag_display=0;
                               break;
                       
                      case 51:
                        //支路3合/分
                               if(RX_action[57]==56)
                                        {
                                        P3OUT&=~BIT2;
                                         flag_messfault=0;
                                        }
                               else if(RX_action[57]==54)
                                       {
                                       P3OUT|=BIT2;
                                        flag_messfault=1;
                                       }
                                  
                                     flag_measuring=1;
                                       flag_display=0;
                                break;
                       
                       default:
                                         flag_measuring=1;
                                        flag_display=0;
                                break;
                       
                           }
//           enRXint();                  
          send_ATorder(TX_ATD);//3//删除短信
       //   P4OUT&=~BIT1;
          //P4OUT&=~BIT2;
           enkeyint();
           flag_measuring=1;//3//恢复测量状态
           flag_display=0;
           pass=0;///

                }
                else
                        {
                         send_ATorder(TX_ATD);
                      // P4OUT&=~BIT1;
                       //P4OUT&=~BIT2;
                       enkeyint();
                         flag_measuring=1;
                        flag_display=0;
                        }
            
}
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表