📄 main.c
字号:
/*************************************************
公司:西安华讯微电子
项目名称:追踪仪;
项目负责人:王刚(软件)
项目启动时间: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 + -