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

📄 itm100.c

📁 一个单片机控制的SIMCOM的C语言处理程序
💻 C
📖 第 1 页 / 共 4 页
字号:
			case 'Y':
			        _RunWarnAck();    //自收到中心自动回应报警信息 
			        break;
			case 'Z':
			        _RunAuAck();	  //中心收到数据的自动回应[上行数据自动发送]
			       	break;
			case '@':                 //下载的运行记录的数据包;
				unloadbit=1;      //下载数据报
				break;	
 			default:
			        break;
		}
	}	
        else     //检测在线与掉线0D 0A 54 43 50 20 43 6C 6F 73 65 64 21 0D 0A
        GprsOnline();                   
}
/*=========================================================*/
/*功能说明:GPRS的TCP/UDP数据通讯“定位”功能                */
/*函数名:  GPRS_RunPos()                                  */
/*子程序编号:                                              */
/*撰写人: 梁辉                撰写时间:2003-8-6          */
/*=========================================================*/
extern bit warnbit;
extern unsigned char warntxnum;
extern bit warnackbit;
void GPRS_RunPos()
{
	Taxistatus=Taxistatusbc;
	statusValue=0x7f;
	GPRSnetTxdata('L',1);      //返回中心定位指令
	if(warnbit==1)
	{
		warnbit=0;
		warntxnum=100;
		warnackbit=1;
		stachgbit=1;
	}
}
/*=========================================================*/
/*功能说明:GPRS的TCP/UDP数据通讯”跟踪“功能                */
/*函数名:  GPRS_RunTrack()                                */
/*子程序编号:                                              */
/*撰写人: 梁辉                撰写时间:2003-8-6          */
/*=========================================================*/
extern unsigned char xdata TrackTime[2];//跟踪时间间隔
extern unsigned char xdata TrackTimebc[2];//时间间隔备份
extern unsigned char xdata TrackNum[2];//跟踪总次数 
extern bit trackbit;
extern bit NoLTtrackbit;             //不限时跟踪标志位[2004-01-09]
void GPRS_RunTrack()
{
	unsigned char Tracktemp[4];
	unsigned char trackii;
	for(trackii=0;trackii<4;trackii++)
	Tracktemp[trackii]=Uart1RxBUFF[5+trackii];
	TrackTime[0]=Unite_Word(Tracktemp[0],Tracktemp[1]);
	TrackTime[1]=Unite_Word(Tracktemp[2],Tracktemp[3]);
	for(trackii=0;trackii<2;trackii++) TrackTimebc[trackii]=TrackTime[trackii];     //备份时间间隔
	for(trackii=0;trackii<4;trackii++)
	Tracktemp[trackii]=Uart1RxBUFF[9+trackii];
	TrackNum[0]=Unite_Word(Tracktemp[0],Tracktemp[1]);
	TrackNum[1]=Unite_Word(Tracktemp[2],Tracktemp[3]);
	if(NoLTtrackbit) NoLTtrackbit=0;            //首先清除不限时跟踪的标志位
	trackbit=1;                                 //使能跟踪位
	if((TrackNum[0]==0x00)&&(TrackNum[1]==0x00))//如果是不限时跟踪[2004-01-09]
	{
		i2c_xmit_buf[0]=0xaa;	           //使能不限时跟踪的指令
		i2c_xmit_buf[1]=TrackTime[0];      //赋值不定时跟踪的时间间隔
		i2c_xmit_buf[2]=TrackTime[1];
		upsd_i2c_xmit(0xa2,0x00,0xa0,3);   //保存不限时跟踪的相关参数
		NoLTtrackbit=1;                    //使能不限时跟踪
		trackbit=0;
	}
	Taxistatus=Taxistatusbc;
	statusValue=0x7f;
	GPRSnetTxdata('T',1);      		   //返回中心跟踪指令
	CurrentTxMode=0xbb;
	stachgbit=1;	     
}
/*=========================================================*/
/*功能说明:GPRS的TCP/UDP数据通讯”停止跟踪“功能            */
/*函数名:  GPRS_RunSTrack()                               */
/*子程序编号:                                              */
/*撰写人: 梁辉                撰写时间:2003-8-6          */
/*=========================================================*/
void GPRS_RunSTrack()
{
	if(trackbit) trackbit=0;
	Taxistatus=Taxistatusbc;
	statusValue=0x7f;
	GPRSnetTxdata('S',1);              //返回中心停止跟踪指令
	stachgbit=1;
	//---------------------------------2004-01-09
	i2c_xmit_buf[0]=0xbb;	           //关闭不限时跟踪的指令
	i2c_xmit_buf[1]=0x00;              //清除不定时跟踪的时间间隔
	i2c_xmit_buf[2]=0x00;
	upsd_i2c_xmit(0xa2,0x00,0xa0,3);   //保存电子围栏数据
	if(NoLTtrackbit)NoLTtrackbit=0;
	//---------------------------------	     
}
/*=========================================================*/
/*功能说明:GPRS的TCP/UDP数据通讯”锁车“功能                */
/*函数名:  GPRS_RunLock()                                 */
/*子程序编号:                                              */
/*撰写人: 梁辉                撰写时间:2003-8-6          */
/*=========================================================*/
extern bit lockbit;
void GPRS_RunLock()
{
	Taxistatus=Taxistatusbc;
	GPRSnetTxdata('K',1);              //返回中心停止跟踪指令
	DATAOUT_B&=0xfe;
	delaynop(1000);
	DATAOUT_B&=0xfc;
	if(!lockbit) lockbit=1;
	stachgbit=1;
}
/*=========================================================*/
/*功能说明:GPRS的TCP/UDP数据通讯”解锁“功能                */
/*函数名:  GPRS_RunUnlock()                               */
/*子程序编号:                                              */
/*撰写人: 梁辉                撰写时间:2003-8-6          */
/*=========================================================*/
void GPRS_RunUnlock()
{
	Taxistatus=Taxistatusbc;
	GPRSnetTxdata('U',1);              //返回中心停止跟踪指令
	DATAOUT_B|=0x01;
        delaynop(1000);
	DATAOUT_B|=0x03;
	if(lockbit==1)
	{
		lockbit=0;
		stachgbit=1;
	}
}
/*=========================================================*/
/*功能说明:GPRS的TCP/UDP数据通讯”监听“功能                */
/*函数名:  GPRS_RunMonitor()                              */
/*子程序编号:                                              */
/*撰写人: 梁辉                撰写时间:2003-8-6          */
/*=========================================================*/
/*extern bit listenbit;
extern unsigned char xdata listentime;//时间长度	
void GPRS_RunMonitor()
{
	listentime=Uart1RxBUFF[5];
        Taxistatus=Taxistatusbc;
	GPRSnetTxdata('A',1);              //返回中心指令
	listenbit=1;
	monitor=1;
	stachgbit=1;
}*/
/*=========================================================*/
/*功能说明:GPRS的TCP/UDP数据通讯”枪毙“功能                */
/*函数名:  GPRS_RunKill()                                 */
/*子程序编号:                                              */
/*撰写人: 梁辉                撰写时间:2003-8-13         */
/*=========================================================*/
/*extern bit openumodebit;
extern bit karadbit;
void GPRS_RunKill()
{
	Taxistatus=Taxistatusbc;
	GPRSnetTxdata('B',1);              //返回中心指令
	mute=1;				//控制枪毙
	openumodebit=0;
	if(karadbit==0)
	{
		karadbit=1;                     //枪毙的标志位
		IndicateTone(4);
		stachgbit=1;
	}
}*/
/*=========================================================*/
/*功能说明:GPRS的TCP/UDP数据通讯”复活“功能                */
/*函数名:  GPRS_RunRelive()                               */
/*子程序编号:                                              */
/*撰写人: 梁辉                撰写时间:2003-8-13         */
/*=========================================================*/
/*void GPRS_RunRelive()
{
	Taxistatus=Taxistatusbc;
	GPRSnetTxdata('D',1);              //返回中心指令
	if(karadbit==1)
	{
		karadbit=0;
		stachgbit=1;
	}	
}*/
/*=========================================================*/
/*功能说明:GPRS的TCP/UDP数据通讯”电子围栏“功能            */
/*函数名:  GPRS_RunInPlace()                              */
/*子程序编号:                                              */
/*撰写人: 梁辉                撰写时间:2003-8-13         */
/*=========================================================*/
extern unsigned char xdata CheckGps_maxLat[4];//越界的最大纬度
extern unsigned char xdata CheckGps_maxLon[4];//越界的最大经度
extern unsigned char xdata CheckGps_minLat[4];//越界的最大纬度
extern unsigned char xdata CheckGps_minLon[4];//越界的最大经度
extern unsigned char xdata Outrangecnt;     //越界的计时计数	
extern bit  RunInPlacebit;		       //执行电子围栏标志位
void GPRS_RunInPlace()
{	
	unsigned char gprsii;
	for(gprsii=0;gprsii<4;gprsii++) CheckGps_minLon[gprsii]=Uart1RxBUFF[5+gprsii];
	for(gprsii=0;gprsii<4;gprsii++) CheckGps_minLat[gprsii]=Uart1RxBUFF[9+gprsii];
	for(gprsii=0;gprsii<4;gprsii++) CheckGps_maxLon[gprsii]=Uart1RxBUFF[13+gprsii];
	for(gprsii=0;gprsii<4;gprsii++) CheckGps_maxLat[gprsii]=Uart1RxBUFF[17+gprsii];
	if(statusValue!=0x8c)
	{
		Taxistatus=Taxistatusbc;
		GPRSnetTxdata('H',1);              //返回中心指令
	   	statusValue=0x7f;
	   	Outrangecnt=0;
	}
	else Outrangecnt=3;
	RunInPlacebit=1;
	i2c_xmit_buf[0]=0xaa;			      //使能电子围栏功能
	for(gprsii=0;gprsii<4;gprsii++) i2c_xmit_buf[1+gprsii]=Uart1RxBUFF[5+gprsii];
	for(gprsii=0;gprsii<4;gprsii++) i2c_xmit_buf[5+gprsii]=Uart1RxBUFF[9+gprsii];
	for(gprsii=0;gprsii<4;gprsii++) i2c_xmit_buf[9+gprsii]=Uart1RxBUFF[13+gprsii];
	for(gprsii=0;gprsii<4;gprsii++) i2c_xmit_buf[13+gprsii]=Uart1RxBUFF[17+gprsii];
	upsd_i2c_xmit(0xa2,0x1f,0x00,17);	      //保存电子围栏数据
}
/*=========================================================*/
/*功能说明:GPRS的TCP/UDP数据通讯”区域调度“功能            */
/*函数名:  GPRS_RunAtt()                                  */
/*子程序编号:                                              */
/*撰写人: 梁辉                撰写时间:2003-8-13         */
/*=========================================================*/
/*
extern unsigned char xdata CompareData1[4];
extern unsigned char xdata CompareData2[4];
extern unsigned char xdata NewMessPn0;
extern unsigned char xdata RandomTimeAtt;
extern bit RandomTxAttbit;
void GPRS_RunAtt()
{
	unsigned char atti;
	bit Attlat1=0; 
	bit Attlat2=0;
	bit Attlon1=0; 
	bit Attlon2=0;
	for(atti=0;atti<4;atti++) CompareData1[atti]=dgpsLon[atti];
	for(atti=0;atti<4;atti++) CompareData2[atti]=Uart1RxBUFF[5+atti];
	Attlon1=_Compare4bcdBB();
	for(atti=0;atti<4;atti++) CompareData1[atti]=dgpsLon[atti];
	for(atti=0;atti<4;atti++) CompareData2[atti]=Uart1RxBUFF[13+atti];
	Attlon2=_Compare4bcdBB();
        for(atti=0;atti<4;atti++) CompareData1[atti]=dgpsLat[atti];
	for(atti=0;atti<4;atti++) CompareData2[atti]=Uart1RxBUFF[9+atti];
	Attlat1=_Compare4bcdBB();
	for(atti=0;atti<4;atti++) CompareData1[atti]=dgpsLat[atti];
	for(atti=0;atti<4;atti++) CompareData2[atti]=Uart1RxBUFF[17+atti];
	Attlat2=_Compare4bcdBB();
	if((Attlon1==1)&&(Attlon2==0)&&(Attlat1==1)&&(Attlat2==0))	//在区域内
	if(Taxistatusbc==0x60)                   //当前为空车
	{
	  	RandomTimeAtt=NewMessPn0;
	  	RandomTimeAtt=RandomTimeAtt%5;
	  	RandomTxAttbit=1;
	 }
}*/
/*=========================================================*/
/*功能说明:GPRS的TCP/UDP数据通讯”短信“功能                */
/*函数名:  GPRS_RunMess()                                 */
/*子程序编号:                                              */
/*撰写人: 梁辉                撰写时间:2003-8-6          */
/*=========================================================*/
extern unsigned char xdata MessBUFF[128];
extern bit  NewMessbit;
extern unsigned char xdata MessLon;//短信的有效长度;
extern unsigned char xdata MessLen;//打包后有效长度
void GPRS_RunMess()
{
	unsigned char messii;
	MessLon=0;
	MessLen=0;
 	if(NewMessbit==0)
        {
		for(messii=0;messii<128;messii++)		//接收短信内容
		{
	     		if(Uart1RxBUFF[5+messii]!=0xff)
	     		{
	     			MessLon++;
	     			MessBUFF[13+messii]=Uart1RxBUFF[5+messii];
	     		}	     
	     		else break;
		}
		Taxistatus=Taxistatusbc;
		statusValue=0x7f;
		GPRSnetTxdata('M',1);              //返回中心指令
		for(messii=0;messii<2;messii++) MessBUFF[messii]=gpsTimeD[messii+2];
		MessBUFF[2]='/';
		for(messii=0;messii<2;messii++) MessBUFF[3+messii]=gpsTimeD[messii];
		MessBUFF[5]=0x00;
		for(messii=0;messii<2;messii++) MessBUFF[6+messii]=gpsTimeD[6+messii];
		MessBUFF[8]=':';
		for(messii=0;messii<2;messii++) MessBUFF[9+messii]=gpsTimeD[8+messii];
		MessBUFF[11]='/';
		MessBUFF[12]='G';
		for(messii=0;messii<2;messii++)
		MessBUFF[13+MessLon+messii]=0x20;
		MessLen=MessLon+15;
        	NewMessbit=1;      //短信标志位 
    	}      
}
/*=========================================================*/
/*功能说明:GPRS的TCP/UDP数据通讯”调度短信“功能            */
/*函数名:  GPRS_RunAttMess()                              */
/*子程序编号:                                              */
/*撰写人: 梁辉                撰写时间:2003-8-13         */
/*=========================================================*/
/*
extern bit RevAttMessbit;
extern bit NoChPicbit;
extern unsigned char xdata AttDTime;
void GPRS_RunAttMess()
{
	GPRS_RunMess();
	RevAttMessbit=1;   		//
	NoChPicbit=0;	   		//不接收画面切换
	AttDTime=20;
}*/
/*=========================================================*/
/*功能说明:接收到报警中心回应                             */
/*函数名: _RunWarnAck()                                   */
/*子程序编号:                                              */
/*撰写人:                 撰写时间:                      */
/*=========================================================*/			
void _RunWarnAck()
{
	if(warnbit==1)		//如果当前是报警:则停止
	{
		warnbit=0;
		warntxnum=100;

⌨️ 快捷键说明

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