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

📄 do_reset.c

📁 车载GPS监控终端的完整代码,与监控中心的通讯采用GPRS.
💻 C
📖 第 1 页 / 共 2 页
字号:
/********************************************************\
*	文件名:  Do_Reset.h
*	创建时间:2004年10月20日
*	创建人:  
*	版本号:  1.00
*	功能:
*
*	修改历史:(每条详述)
\********************************************************/
#include <msp430x14x.h>
#include "General.h"
#include "Other_Define.h"
#include "Main_Init.h"
#include "Do_Reset.h"
#include "M22_AT.h"
#include "Check_GSM.h"
#include "Sub_C.h"
#include "Define_Bit.h"
#include "Uart01.h"
#include "SPI45DB041.h"
#include "D_Buffer.h"
#include "W_Protocol.h"
#include "Do_SRAM.h"
/*
#include "Disp_Protocol.h"
*/
//#define Debug_GSM_COM1
void Wait_Return_M22(unsigned char Next_Step);
/********************************************************\
*	函数名:Do_OFF_Power
	作用域:外部文件调用
*	功能:  进行GPS和GSM模块掉电重启的操作。
*	参数:
*	返回值:需要对一些相关的全局变量进行附值
*	创建人:
*
*	修改历史:(每条详述)
\********************************************************/
void Do_OFF_Power(void)
{
	//设置高电平,以关断2576输出
	Clear_Exter_WatchDog();
	gM22_GSM_ECHO_Timer=0;
	gGet_Driver_Info_Count=0;
	gRecord_Data_Timer=0;
	if(gOFF_Power_S==1)
	{
		P6OUT|=POWER_ON_OFF;
	    gTimer=0;
	    gOFF_Power_S=2;
	}
	//延长OFF_TIME时间后,则重新设置低电平,开启2576输出
	else if((gOFF_Power_S==2)&&(gTimer>OFF_TIME))
	{
		P6OUT&=~POWER_ON_OFF;
	    gOFF_Power_S=3;
	    gTimer=0;
	}
	else if((gOFF_Power_S==3)&&(gTimer>DELAY_TIME))
	{
	    gTimer=0;
	    gOFF_Power_S=0;
	    if(gGeneral_Flag&OFF_M22_F_1)
	    {
			Send_COM1_Byte('M');
	    }
	    else if(gGeneral_Flag&OFF_GPS_F_1)
	    {
			Send_COM1_Byte('G');
	    }
	    Send_COM1_String((unsigned char *)POWER_OFF,sizeof(POWER_OFF));
	    Reset_Variable();
	    gGeneral_Flag&=~OFF_M22_F_1;				//取消掉电M22的标志位
	    gGeneral_Flag&=~OFF_GPS_F_1;				//取消掉电GPS的标志位
	    gPhone_Status=READY;
	    gStatus1_Flag&=~PHONE_ONLINE_F_1;
	}
}
/********************************************************\
*	函数名:Do_Reset_GSM_On
	作用域:外部文件调用
*	功能:  针对G20模块在上电后的启动步骤的操作,进行一些AT指令的初始化
*	参数:
*	返回值:需要对一些相关的全局变量进行附值
*	创建人:
*
*	修改历史:(每条详述)
\********************************************************/
void Do_Reset_GSM_On(void)
{
	static unsigned char M22_ReturnER_Count=0;		//AT指令返回错误的记数
	unsigned int i=0,j=0;
	gVolume=TWO;
	gGeneral_Flag&=~LAND_TCP_F_1;
	Clear_Exter_WatchDog();
	gGet_Driver_Info_Count=0;
	gSet_Distance_Info_Count=0;
	//1,AT
	if(gReset_M22_On_Setp==1)
	{
		if(gTimer_GSM_AT>300)
		{
			Send_COM0_String((unsigned char *)AT,sizeof(AT));
			gTimer_GSM_AT=0;
			gReset_M22_On_Setp=2;
		}
		else	Check_GSM();
	}
	else if(gReset_M22_On_Setp==2)
	{
		if(Check_GSM()!=0)
		{
			gTimer_GSM_AT=0;
		    if(Compare_String(gGeneral_Buffer,(unsigned char *)String_OK,sizeof(String_OK))!=0)
		    {
		    	M22_ReturnER_Count=0;
		    	gReset_M22_On_Setp=3;
		    }
		    else if(Compare_String(gGeneral_Buffer,(unsigned char *)String_ER,sizeof(String_ER))!=0)
		    {
		    	M22_ReturnER_Count++;
				if(M22_ReturnER_Count>10)
				{
					M22_ReturnER_Count=0;
					gGeneral_Flag|=OFF_M22_F_1;
					gOFF_Power_S=1;
					gPhone_Status=READY;
					gStatus1_Flag&=~PHONE_ONLINE_F_1;
					return;
				}
				else	gReset_M22_On_Setp=1;
		    }
		}
		else if(gTimer_GSM_AT>3000)
		{
	    	M22_ReturnER_Count++;
			if(M22_ReturnER_Count>10)
			{
				M22_ReturnER_Count=0;
				gGeneral_Flag|=OFF_M22_F_1;
				gOFF_Power_S=1;
				gPhone_Status=READY;
				gStatus1_Flag&=~PHONE_ONLINE_F_1;
				return;
			}
			else	gReset_M22_On_Setp=1;
		}
	}
	//2,ATZ
	else if(gReset_M22_On_Setp==3)
	{
		if(gTimer_GSM_AT>300)
		{
			Send_COM0_String((unsigned char *)ATZ,sizeof(ATZ));
			gTimer_GSM_AT=0;
			gReset_M22_On_Setp=4;
		}
		else	Check_GSM();
	}
	else if(gReset_M22_On_Setp==4)
	{
		Wait_Return_M22(5);
		/*
		if(Check_GSM()!=0)
		{
			gTimer_GSM_AT=0;
		    if(Compare_String(gGeneral_Buffer,(unsigned char *)String_OK,sizeof(String_OK))!=0)
		    {
		    	gReset_M22_On_Setp=5;
		    }
		    else if(Compare_String(gGeneral_Buffer,(unsigned char *)String_ER,sizeof(String_ER))!=0)
		    {
		    	gReset_M22_On_Setp=1;
		    }
		}
		else if(gTimer_GSM_AT>3000)
		{
			gReset_M22_On_Setp=1;
		}
		*/
	}
	//3,AT+CGMM
	else if(gReset_M22_On_Setp==5)
	{
		if(gTimer_GSM_AT>1000)
		{
			Send_COM0_String((unsigned char *)AT_CGMM,sizeof(AT_CGMM));
			gTimer_GSM_AT=0;
			gReset_M22_On_Setp=6;
		}
		else	Check_GSM();
	}
	//4,AT+CGMR
	else if(gReset_M22_On_Setp==6)
	{
		if(gTimer_GSM_AT>1000)
		{
			Send_COM0_String((unsigned char *)AT_CGMR,sizeof(AT_CGMR));
			gTimer_GSM_AT=0;
			gReset_M22_On_Setp=7;
		}
		else	Check_GSM();
	}
	//5,AT+CGSN
	else if(gReset_M22_On_Setp==7)
	{
		if(gTimer_GSM_AT>1000)
		{
			Send_COM0_String((unsigned char *)AT_CGSN,sizeof(AT_CGSN));
			gTimer_GSM_AT=0;
			gReset_M22_On_Setp=8;
		}
		else	Check_GSM();
	}
	//6,AT+CMGF=0
	else if(gReset_M22_On_Setp==8)
	{
		if(gTimer_GSM_AT>1000)
		{
			Send_COM0_String((unsigned char *)AT_CMGF0,sizeof(AT_CMGF0));
			gTimer_GSM_AT=0;
			gReset_M22_On_Setp=9;
		}
		else	Check_GSM();
	}
	else if(gReset_M22_On_Setp==9)
	{
		Wait_Return_M22(10);
		/*
		if(Check_GSM()!=0)
		{
			gTimer_GSM_AT=0;
		    if(Compare_String(gGeneral_Buffer,(unsigned char *)String_OK,sizeof(String_OK))!=0)
		    {
		    	gReset_M22_On_Setp=10;
		    }
		    else if(Compare_String(gGeneral_Buffer,(unsigned char *)String_ER,sizeof(String_ER))!=0)
		    {
		    	gReset_M22_On_Setp=1;
		    }
		}
		else if(gTimer_GSM_AT>6000)
		{
			gReset_M22_On_Setp=1;
		}
		*/
	}
	//6-1,AT+CREG?
	else if(gReset_M22_On_Setp==10)
	{
		if(gTimer_GSM_AT>2000)
		{
			Send_COM0_String((unsigned char *)AT_CREG,sizeof(AT_CREG));
			gTimer_GSM_AT=0;
			gReset_M22_On_Setp=11;
		}
		else	Check_GSM();
	}
	else if(gReset_M22_On_Setp==11)
	{
		if(Check_GSM()!=0)
		{
			gTimer_GSM_AT=0;
		    if(Compare_String(gGeneral_Buffer,(unsigned char *)String_CREG,sizeof(String_CREG))!=0)
		    {
		    	if( (gGeneral_Buffer[8]==',')&&(gGeneral_Buffer[10]=='1') )
		    	{
		    		gReset_M22_On_Setp=12;
		    		gM22_ReturnER_SIM_Count=0;
		    	}
		    	else
		    	{
		    		gM22_ReturnER_SIM_Count++;
		    		if(gM22_ReturnER_SIM_Count>60)
		    		{
						gGeneral_Flag|=OFF_M22_F_1;
						gOFF_Power_S=1;
						gPhone_Status=READY;
						gM22_ReturnER_SIM_Count=0;
						return;
		    		}
		    		else
		    		{
		    			gReset_M22_On_Setp=10;
		    			gTimer_GSM_AT=0;
		    		}
		    	}
		    }
		}
		else if(gTimer_GSM_AT>6000)
		{
			gReset_M22_On_Setp=1;
		}
	}
	//7,AT+COPS?
	else if(gReset_M22_On_Setp==12)
	{
		if(gTimer_GSM_AT>2000)
		{
			Send_COM0_String((unsigned char *)AT_COPS_C,sizeof(AT_COPS_C));
			gTimer_GSM_AT=0;
			gReset_M22_On_Setp=13;
		}
		else	Check_GSM();
	}
	else if(gReset_M22_On_Setp==13)
	{
		if(Check_GSM()!=0)
		{
			gTimer_GSM_AT=0;
		    if(Compare_String(gGeneral_Buffer,(unsigned char *)String_COPS,sizeof(String_COPS))!=0)
		    {
		    	if( (gGeneral_Buffer[8]==',')&&(gGeneral_Buffer[9]=='0') )
		    	{
		    		//表示已经找到SIM卡的网络
		    		gReset_M22_On_Setp=14;
		    		gM22_ReturnER_SIM_Count=0;
		    	}
		    	else
		    	{
	    			gM22_ReturnER_SIM_Count++;
	    			if(gM22_ReturnER_SIM_Count>60)
	    			{
						gGeneral_Flag|=OFF_M22_F_1;
						gOFF_Power_S=1;
						gPhone_Status=READY;
						gM22_ReturnER_SIM_Count=0;
						gStatus1_Flag&=~PHONE_ONLINE_F_1;
						return;
	    			}
	    			else
	    			{
	    				gReset_M22_On_Setp=12;
	    			}
		    	}
		    }
		}
		else if(gTimer_GSM_AT>6000)
		{
			gReset_M22_On_Setp=1;
		}
	}
	//8,AT+CIMI
	else if(gReset_M22_On_Setp==14)
	{
		if(gTimer_GSM_AT>1000)
		{
			Send_COM0_String((unsigned char *)AT_CIMI,sizeof(AT_CIMI));
			gTimer_GSM_AT=0;
			gReset_M22_On_Setp=15;
		}
		else	Check_GSM();
	}
	//9,AT+CSCA?
	else if(gReset_M22_On_Setp==15)
	{
		if(gTimer_GSM_AT>1000)
		{
			Send_COM0_String((unsigned char *)AT_CSCA_C,sizeof(AT_CSCA_C));
			gTimer_GSM_AT=0;
			gReset_M22_On_Setp=16;
		}
		else	Check_GSM();
	}
	else if(gReset_M22_On_Setp==16)
	{
		if(Check_GSM()!=0)
		{
			gTimer_GSM_AT=0;
		    if(Compare_String(gGeneral_Buffer,(unsigned char *)String_CSCA,sizeof(String_CSCA))!=0)
		    {
		    	//具体将读出的短消息中心号码存储在buffer1相应的区域中(直接以ASCII形式存储)
		    	if(gGeneral_Buffer[7]=='"')
		    	{
		    		i=8;
					while(1)
					{
						if(gGeneral_Buffer[i]=='"') break;
						i++;if(i>8+20) {gReset_M22_On_Setp=1;return;}		//非法长度,则退出
					}
					if(i>8+1)
					{
						Load_SMS_CenterNum(i);
						gInternal_Flag|=CENTER_NUM_VAILD_F_1;
						gInternal_Flag&=~SET_CSCA_F_1;
					}
					else
					{
						gInternal_Flag&=~CENTER_NUM_VAILD_F_1;
						gInternal_Flag|=SET_CSCA_F_1;
					}
					gReset_M22_On_Setp=17;
				}
		    	else	gReset_M22_On_Setp=1;
		    }
		    else if(Compare_String(gGeneral_Buffer,(unsigned char *)String_ER,sizeof(String_ER))!=0)
		    {
		    	gReset_M22_On_Setp=1;
		    }
		}
	}
	//10,AT$NOSLEEP=1
	else if(gReset_M22_On_Setp==17)
	{
		if(gTimer_GSM_AT>1000)
		{
			Send_COM0_String((unsigned char *)AT_NOSLEEP1,sizeof(AT_NOSLEEP1));
			gTimer_GSM_AT=0;
			gReset_M22_On_Setp=18;
		}
		else	Check_GSM();
	}
	else if(gReset_M22_On_Setp==18)
	{
		Wait_Return_M22(19);
	}
	//11,AT+COLP=1
	else if(gReset_M22_On_Setp==19)
	{
		if(gTimer_GSM_AT>1000)
		{
			Send_COM0_String((unsigned char *)AT_COLP1,sizeof(AT_COLP1));
			gTimer_GSM_AT=0;
			gReset_M22_On_Setp=20;
		}
		else	Check_GSM();
	}
	else if(gReset_M22_On_Setp==20)
	{
		Wait_Return_M22(21);
	}
	//12,AT+CLIP=1
	else if(gReset_M22_On_Setp==21)
	{
		if(gTimer_GSM_AT>1000)
		{
			Send_COM0_String((unsigned char *)AT_CLIP1,sizeof(AT_CLIP1));
			gTimer_GSM_AT=0;
			gReset_M22_On_Setp=22;
		}
		else	Check_GSM();
	}
	else if(gReset_M22_On_Setp==22)
	{
		Wait_Return_M22(23);
	}
	//13,AT$AUPATH=3,1,选择差分的语音通道
	else if(gReset_M22_On_Setp==23)
	{
		if(gTimer_GSM_AT>1000)
		{
			Send_COM0_String((unsigned char *)AT_AUPATH,sizeof(AT_AUPATH));
			gTimer_GSM_AT=0;
			gReset_M22_On_Setp=24;
		}
		else	Check_GSM();
	}
	else if(gReset_M22_On_Setp==24)
	{
		Wait_Return_M22(25);
	}
	//14,AT$AUGAIN=(0-2),(1,9)
	else if(gReset_M22_On_Setp==25)
	{
		if(gTimer_GSM_AT>1000)
		{
			Send_COM0_String((unsigned char *)AT_AUGAIN,sizeof(AT_AUGAIN));
			Send_COM0_Byte('1');Send_COM0_Byte(',');
			Send_COM0_Byte('5');Send_COM0_Byte(0x0d);
			gTimer_GSM_AT=0;
			gReset_M22_On_Setp=26;
		}
		else	Check_GSM();
	}
	else if(gReset_M22_On_Setp==26)
	{
		Wait_Return_M22(27);
	}
	else if(gReset_M22_On_Setp==27)
	{
		if(gTimer_GSM_AT>1000)
		{
			//2,固定调节SPEKER的接收增益
			Send_COM0_String((unsigned char *)AT_AUGAIN,sizeof(AT_AUGAIN));
			Send_COM0_Byte('2');Send_COM0_Byte(',');Send_COM0_Byte(Handle_VOL[TWO]);Send_COM0_Byte(0x0d);
			gTimer_GSM_AT=0;
			gReset_M22_On_Setp=28;
		}
		else	Check_GSM();
	}
	else if(gReset_M22_On_Setp==28)
	{
		Wait_Return_M22(29);
	}
	else if(gReset_M22_On_Setp==29)
	{
		if(gTimer_GSM_AT>1000)
		{
			//3,调节AT$AUVOL的接收增益
			Send_COM0_String((unsigned char *)AT_AUVOL,sizeof(AT_AUVOL));
			Send_COM0_Byte('5');Send_COM0_Byte(0x0d);
			gTimer_GSM_AT=0;
			gReset_M22_On_Setp=30;
		}
		else	Check_GSM();
	}
	else if(gReset_M22_On_Setp==30)
	{
		Wait_Return_M22(31);
	}
	//15,AT+CNMI=2,2,0,0,0
	else if(gReset_M22_On_Setp==31)
	{
		if(gTimer_GSM_AT>1000)
		{
			Send_COM0_String((unsigned char *)AT_CNMI,sizeof(AT_CNMI));
			gTimer_GSM_AT=0;
			gReset_M22_On_Setp=32;
		}
		else	Check_GSM();
	}
	else if(gReset_M22_On_Setp==32)
	{
		Wait_Return_M22(33);
	}
	//16,AT$TIMEOUT=XX(XX表示100--5000毫秒)
	else if(gReset_M22_On_Setp==33)
	{
		if(gTimer_GSM_AT>1000)
		{
			Send_COM0_String((unsigned char *)AT_TIMEOUT,sizeof(AT_TIMEOUT));
			gTimer_GSM_AT=0;
			gReset_M22_On_Setp=34;
		}
		else	Check_GSM();
	}
	else if(gReset_M22_On_Setp==34)
	{
		Wait_Return_M22(35);
	}
	//17,AT+CMGD=1,4
	else if(gReset_M22_On_Setp==35)

⌨️ 快捷键说明

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