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

📄 at.lst

📁 基于STC51通过GPS自主定位导航FAT文件系统程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
 657          
 658          //********************************************************************************************************
             -***************
 659          //函数作用:挂机
 660          //参数说明:
 661          //注意事项:
 662          //返回说明:如果等到 返回1
 663          //********************************************************************************************************
             -***************
 664          uchar ATHangup(void)
 665          {
 666   1              if(at_send_command_waitok(AT_CMD_HANGUP,""))
 667   1              {
 668   2                      ring=0;
 669   2                      calling=0;
 670   2                      str_copy(clip_no,"???????????");
 671   2                      return 1;
 672   2              }
 673   1              return 0;
 674   1      }
 675          
 676          //********************************************************************************************************
             -***************
 677          //函数作用:切换音频通道
 678          //参数说明:
 679          //注意事项:
 680          //返回说明:如果等到 返回1
 681          //********************************************************************************************************
             -***************
 682          uchar ATSetAC(uchar no)
 683          {
 684   1              uchar no_buf[2]="1";
 685   1              
 686   1              no_buf[0]=no;
 687   1              return at_send_command_waitok(AT_CMD_SWITCHAUDIO,no_buf);
 688   1      }
 689          
 690          //********************************************************************************************************
             -***************
 691          //函数作用:MIC增益
 692          //参数说明:no--MIC号  gain--增益数量字符串 0-15
 693          //注意事项:
 694          //返回说明:如果等到 返回1
 695          //********************************************************************************************************
             -***************
 696          uchar ATSetMic(uchar no, uchar *gain)
 697          {
 698   1              uchar buf[]="0,10";
 699   1              buf[0]=no;
 700   1              str_copy(&buf[2],gain);
 701   1              return at_send_command_waitok(AT_CMD_MIC,buf);
 702   1      }
 703          
 704          //********************************************************************************************************
             -***************
 705          //函数作用:初始化
 706          //参数说明:
C51 COMPILER V7.20   AT                                                                    11/03/2007 17:08:50 PAGE 13  

 707          //注意事项:
 708          //返回说明:返回是否有错误 如果有错误送复位标志
 709          //********************************************************************************************************
             -***************
 710          void ATInit(void)
 711          {
 712   1              uchar wait_time;
 713   1              
 714   1              //清标志
 715   1              at_reset=0;//需要复位
 716   1              simok=0;//sim卡
 717   1              loginok=0;//登陆成功
 718   1              smsin=0;//收到短消息
 719   1              ring=0;//来电
 720   1              calling=0;//是否通话状态
 721   1              str_copy(clip_no,"???????????");
 722   1              
 723   1              //1.上电并初始化端口
 724   1              print_line("AT重新上电");
 725   1              AT_POWER_CTRL=0;
 726   1              delay(2);//等待2秒
 727   1              AT_PORTINIT(AT_BAUDRATE);//端口初始化
 728   1              AT_FLUSH();
 729   1              AT_POWER_CTRL=1;
 730   1              
 731   1              //2.等待READY
 732   1              print_line("AT等待RDY");
 733   1              wait_time=20;//等待10秒
 734   1              while(!at_wait_ack(30,AT_ACK_OK))
 735   1              {
 736   2                      at_send_command("","");
 737   2                      if(--wait_time==0)goto error;
 738   2              }
 739   1              
 740   1              //3.等待SIM卡检测
 741   1              print_line("SIM卡检测");
 742   1              wait_time=100;//等待10秒
 743   1              while(!simok)
 744   1              {       
 745   2                      ATAnalyse();
 746   2                      mdelay(100);
 747   2                      LED_CTRL=!LED_CTRL;
 748   2                      if(--wait_time==0)goto error;
 749   2              }
 750   1              
 751   1              //4.等待登陆网络
 752   1              print_line("AT登录网络");
 753   1              if(!at_send_command_waitok(AT_CMD_DISECHO,""))goto error;//关闭命令回显
 754   1              if(!at_send_command_waitok(AT_CMD_CREG,""))goto error;//主动提供网络注册信息
 755   1              at_send_command("+COPS=","4,0,\"CHINA MOBILE\"");//手动注册中国移动 如果不成功再自动注册
 756   1              wait_time=120;//等待120秒
 757   1              while(!loginok)
 758   1              {
 759   2                      ATAnalyse();
 760   2                      delay(1);
 761   2                      LED_CTRL=!LED_CTRL;
 762   2                      if(--wait_time==0)goto error;
 763   2              }
 764   1                                                      
 765   1              //5.初始化AT命令
 766   1              print_line("AT设置命令");
 767   1              if(!at_send_command_waitok(AT_CMD_SMSPDU,""))goto error;//短消息PDU模式
C51 COMPILER V7.20   AT                                                                    11/03/2007 17:08:50 PAGE 14  

 768   1              if(!at_send_command_waitok(AT_CMD_SMSTOCOMM,""))goto error;//短消息直接从串口出
 769   1              if(!at_send_command_waitok(AT_CMD_GSMCHARSET,""))goto error;//设置GSM字符集
 770   1              if(!at_send_command_waitok(AT_CMD_TCPIPRECEIVEHINT,""))goto error;//设置TCP/IP数据包接收提示
 771   1              if(!at_send_command_waitok(AT_CMD_TCPIPSENDHINT,""))goto error;//关闭TCPIP数据发送时的 "> " 提示
 772   1              if(!at_send_command_waitok(AT_CMD_FIXLOCALPORT,""))goto error;//取消固定本地端口号
 773   1              if(!at_send_command_waitok("+CLIP=1",""))goto error;//开来电显示
 774   1              if(!ATSetAC('1'))goto error;//切换到免提通道 提供振铃
 775   1              if(!ATSetMic('0',"12"))goto error;//调节MIC增益
 776   1              if(!ATSetMic('1',"12"))goto error;//调节MIC增益
 777   1              
 778   1              //6.等待可以发送短消息了
 779   1              //print_line("短信初始化");
 780   1              //wait_time=120;//等待120秒
 781   1              //while(!at_wait_ack(100,AT_ACK_OK))
 782   1              //{
 783   1              //      at_send_command(AT_CMD_SMSCENTERNO,"?");
 784   1              //      if(--wait_time==0)goto error;
 785   1              //}
 786   1              //delay(5);
 787   1              
 788   1              //7.正确返回
 789   1              return;
 790   1              
 791   1              
 792   1      error:
 793   1              print_line("失败");
 794   1              at_reset=1;
 795   1      }
 796          
 797          
 798          
 799          //********************************************************************************************************
             -***************
 800          //函数作用:AT处理函数
 801          //参数说明:
 802          //注意事项:
 803          //返回说明:
 804          //********************************************************************************************************
             -***************
 805          void ATProcess(void)
 806          {
 807   1              //初始化
 808   1              if(at_reset)ATInit();
 809   1      
 810   1              //接收数据分析
 811   1              ATAnalyse();
 812   1              
 813   1              //短信处理
 814   1              if(smsin)
 815   1              {
 816   2                      smsin=0;
 817   2                      print_line("GET A SMS");
 818   2                      
 819   2                      //判断是否是自定义的有效命令
 820   2                      if(sms_coding==8 && str_compare(at_receive_buffer,"4F60572854EA91CC"))
 821   2                      {
 822   3                              print_line("位置查询短信");
 823   3                              if(!gis_search(at_receive_buffer,gps_longti(),gps_lati()))//查找地图
 824   3                              {
 825   4                                      ATSendSMS(sms_no,at_receive_buffer,8);//发送应答
 826   4                                      print_line("查询成功"); 
 827   4                              }
C51 COMPILER V7.20   AT                                                                    11/03/2007 17:08:50 PAGE 15  

 828   3                              else
 829   3                              {
 830   4                                      print_line("查询失败"); 
 831   4                              }
 832   3                      }
 833   2                      
 834   2              }
 835   1              //来电处理
 836   1              if(ring)
 837   1              {
 838   2                      print_line("GET A CALL");
 839   2                      
 840   2                      //判断是否是家人和朋友的号码
 841   2                      if(str_comprise(clip_no,"13389937509"))
 842   2                      {
 843   3                              ATAnswer();
 844   3                              print_line("接听监听电话");
 845   3                      }
 846   2                      else if(str_comprise(clip_no,"13332020931"))
 847   2                      {
 848   3                              ATAnswer();
 849   3                              print_line("接听监听电话");
 850   3                      }
 851   2                      else
 852   2                      {
 853   3                              ATHangup();mdelay(100);ATHangup();
 854   3                              print_line("拒绝接听");
 855   3                      }
 856   2              }
 857   1      }
 858          
 859          
 860          
 861          
 862          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   3878    ----
   CONSTANT SIZE    =    491    ----
   XDATA SIZE       =    409      97
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      6    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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