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

📄 main.c

📁 使用SIM300Z做车载台的产品
💻 C
📖 第 1 页 / 共 2 页
字号:
/*************************************************
公司:西安华讯微电子
项目名称:追踪仪;
项目负责人:王刚(软件)
项目启动时间:2007/8/17
项目截至时间:
联系方式:15991613274
邮件:30001koko@163.com
*************************************************/
#include <msp430x14x.h>
#include <stdio.h>
#include "UART.h"
#include "MAIN.h"
#include "GSM.h"
/*************************************************
                 变量定
*************************************************/
char  GSM_RX_BUF[200];
char  CMGSM_sms[3];
char  Dected_phone[12];
char  Protocol_head[200];
int   gsm_Len_temp=0;
char  UART0_TX_BUF[50];
char  nTX1_Flag = 0;
int   nSend_TX1 = 0;
char  SMSnumber_flag=0;                           // 已收短信号码 标志位 '1':监控中心号码;'2':车主号码
char  PHONEnumber_flag=0;                         // 打入电话号码 标志位 '1':监控中心号码;'2':车主号码
char  Gps_begin=0;
char  Gps_end=0;
char  MasterInquire_flag=0;    
char  RMC_flag;
char  Time_flag=0;
char  pdu_number=0;
char  Time_pud=0;
char  Timing_count=0;
char  Timing_flag=0;
char  ControlCenter_flag=0;
char  OK_flag = 0;
char  center_function = 0;
char  UpSendGPS_flag =1;
int   Timing_minit = 0;
char  car_function = 0;
char  CarMaster_flag =0;
char  car_flag = 1;
//  上电后发送互动信号。
/*************************************************
                子程序定义
*************************************************/
void GSM_INI(void)
   {
         int i;
       
         Delay_ms(2000);
         P4SEL= 0;  //定义引角功能;
         P4DIR |= BIT0+BIT5;
         P4OUT |= BIT0;
         Delay_ms(200);
         P4OUT &= ~BIT0;         //sim300点火程序
         Delay_ms(2500);
         P4OUT |= BIT0;
         Delay_ms(1000);
        
         do
         {
             for(i=0;i<60;i++)GSM_RX_BUF[i]=0;
             for(i=0;i<200;i++)UART1_TX_BUF[i]=0;
             nTX1_Len = sim300_at(UART1_TX_BUF);
             IE2 |= UTXIE1;
             IFG2 &= ~UTXIFG1;
             LPM0;
             Delay_ms(100);
         }
         while(OK_flag != 1);
         OK_flag = 0;
      
        do
         {
             for(i=0;i<60;i++)GSM_RX_BUF[i]=0;
             for(i=0;i<200;i++)UART1_TX_BUF[i]=0;
             nTX1_Len = sim300_init(UART1_TX_BUF);
             IE2 |= UTXIE1;
             IFG2 &= ~UTXIFG1;
             LPM0;
             Delay_ms(100);
         }
         while(OK_flag != 1);
         OK_flag = 0;
       
         do
         {
             for(i=0;i<60;i++)GSM_RX_BUF[i]=0;
             for(i=0;i<200;i++)UART1_TX_BUF[i]=0;
             nTX1_Len=SetCnmi(UART1_TX_BUF); 
             IE2 |= UTXIE1;
             IFG2 &= ~UTXIFG1;
             LPM0;
             Delay_ms(100);
         }
         while(OK_flag != 1);
         OK_flag = 0;
      
        do
         {
             for(i=0;i<60;i++)GSM_RX_BUF[i]=0;
             for(i=0;i<200;i++)UART1_TX_BUF[i]=0;
             nTX1_Len = setCmgf_pdu(UART1_TX_BUF); 
             IE2 |= UTXIE1;
             IFG2 &= ~UTXIFG1;
             LPM0;
             Delay_ms(100);
         }
       while(OK_flag != 1);
       OK_flag = 0;
       
       do
       {
           for(i=0;i<200;i++)GSM_RX_BUF[i]=0;
           for(i=0;i<200;i++)UART1_TX_BUF[i]=0;
           Sms_pdu_send(CarMaster_pone,4);
           Delay_ms(2000);
       }
       while(OK_flag != 1);
       OK_flag = 0;
       
       
       do
       {
             for(i=0;i<60;i++)GSM_RX_BUF[i]=0;
             for(i=0;i<200;i++)UART1_TX_BUF[i]=0;
             nTX1_Len = setCmgf(UART1_TX_BUF);    // 转换为文本格式
             IE2 |= UTXIE1;
             IFG2 &= ~UTXIFG1;
             LPM0;
             Delay_ms(100);
       }
       while(OK_flag != 1);
       OK_flag = 0;
   }

void Gps_A(void)
   {
         P2OUT &= ~BIT2;
         P2OUT |= BIT1;
   } 


void Gps_V(void)
   {
         P2OUT &= ~BIT1;
         P2OUT |= BIT2;
   } 
/*************************************************
  函数(模块)名称:主函数
  功能:	
  本函数(模块)调用的函数(模块)清单:
  
  输入参数:无       		
  输出参数:  无     		
  函数返回值说明:  		
  使用的资源    		
  其它说明:       		
*************************************************/
void main( void )
   {
         int i;
         WDTCTL = WDTPW + WDTHOLD;   // 关闭看门狗  
         Init_CLK();
         Init_UART1();    
         Init_UART0();    
         P2SEL= 0;        // GPIO :p2。1 GREEN LED  P2。2 RED LED 定义为输出
         P2DIR |= 0xFF;   // 定义为输出
         P2OUT=0XFF;    
         _EINT();         // 打开中断
         Gps_V();         //GPS不定位
         GSM_INI();        // 初始化GSM
         while(1)
              { 
                     if(ControlCenter_flag==1)             //中心控制功能
                      {     
                          switch(center_function)
                                {
                                      case 1:
                                                 if (Protocol_head[7]=='C')
                                                 {
                                                    UpSendGPS_flag = 1;
                                                    for(i=0;i<200;i++) {Protocol_head[i]=0;}
                                                    center_function=0;
                                                    ControlCenter_flag=0;
                                                  }
                                                else if (Protocol_head[7]=='Y')
                                                  {
                                                     Timing_minit=(Protocol_head[9]-0x30)*1000+(Protocol_head[10]-0x30)*100+(Protocol_head[11]-0x30)*10+(GSM_RX_BUF[13]-0x30);
                                                     Timing_flag=1;
                                                     UpSendGPS_flag = 1;
                                                     for(i=0;i<200;i++) Protocol_head[i]=0;
                                                     center_function=0;
                                                     ControlCenter_flag=0;
                                                 }   
                                                    
                                                else if (Protocol_head[7]=='N')
                                                 {
                                                      Timing_flag = 0;               
                                                      for(i=0;i<200;i++) Protocol_head[i]=0;
                                                      center_function=0;        // 存储
                                                      ControlCenter_flag=0; 
                                                     
                                                  }    
                                                
                                                 
                                                 for(i=0;i<200;i++) Protocol_head[i]=0;
                                                 center_function=0;
                                                 ControlCenter_flag=0;
                                                 break;          
                                      case 2:
                                                  
                                                  for(i=0;i<200;i++) Protocol_head[i]=0;
                                                  center_function=0;
                                                  ControlCenter_flag=0;
                                                  break;
                                      case 3:
                                                  for(i=0;i<200;i++) Protocol_head[i]=0;
                                                  center_function=0;
                                                  ControlCenter_flag=0;
                                                  break;
                                      case 4:
                                                
                                                  for(i=0;i<200;i++) Protocol_head[i]=0;
                                                  center_function=0;
                                                  ControlCenter_flag=0;
                                                  break;
                                      case 5:
                                                 
                                                  for(i=0;i<200;i++) Protocol_head[i]=0;
                                                  center_function=0;
                                                  ControlCenter_flag=0;
                                                  break;   
                                       case 6:
                                                   if (('6'>=Protocol_head[7])&&(Protocol_head[7]>='1')) 
                                                      { 
                                                         for(i=0;i<11;i++){ControlCenter_pone[i]=Protocol_head[i+9];}
                                                         for(i=0;i<11;i++){CarMaster_pone[i]=Protocol_head[i+21];}
                                                         for(i=0;i<200;i++){Protocol_head[i]=0;}
                                                         center_function=0;
                                                         ControlCenter_flag=0;
                                                      }
                                                  for(i=0;i<200;i++) Protocol_head[i]=0;
                                                  center_function=0;
                                                  ControlCenter_flag=0;
                                                  break;
                                       case 7:  
                                                 
                                                  for(i=0;i<200;i++){Protocol_head[i]=0;}
                                                  center_function=0;
                                                  ControlCenter_flag=0;
                                                  break;
                                       case 8:   
                                                
                                                  for(i=0;i<200;i++){Protocol_head[i]=0;}
                                                  center_function=0;
                                                  ControlCenter_flag=0;
                                      default:
                                                  for(i=0;i<200;i++){Protocol_head[i]=0;}
                                                  center_function=0;
                                                  ControlCenter_flag=0;
                                                  break;
                                }
                      }
    


    
                        else if(CarMaster_flag==1)                        //车主控制功能
                               {
                                       switch(car_function)
                                             {
                                                   case 1:
                                                              CarMaster_flag=0;
                                                              car_function=0;
                                                              break;
                                                   case 2:         
                  
                                                              CarMaster_flag=0;
                                                              car_function=0;
                                                              break;
                                                   case 3:
                              
                                                              CarMaster_flag=0;
                                                              car_function=0;
                                                              break;
                                                   case 4:
                                      
                                                              car_flag = 0;
                                                              pdu_number=6;             
                                                              MasterInquire_flag=1;
                                                              CarMaster_flag=0;
                                                              car_function=0;
                                                              break;
                                                   case 5: 
                                    
                                                              car_flag = 1;
                                                              pdu_number=7;             
                                                              MasterInquire_flag=1;
                                                              CarMaster_flag=0;
                                                              car_function=0;
                                                              break;
                                                   default:
                                                              CarMaster_flag=0;
                                                              car_function=0;
                                                              break;
                                             }
                               }
      
                               
         //功能模块
                               if(car_flag == 1)
                                 {
                                      if (UpSendGPS_flag==1)
                                         { 
                                              Gps_end=0;
                                              while(Gps_end !=1 );
                                              Gps_end=0;
                      // 发送GPS解析短信
                                              for(i=0;i<200;i++)UART1_TX_BUF[i]=0;
                                              nTX1_Len = setCmgs(UART1_TX_BUF); 
                                              IE2 |= UTXIE1;

⌨️ 快捷键说明

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