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

📄 main.c

📁 simcom100 GPRS 模块源程序
💻 C
📖 第 1 页 / 共 2 页
字号:
					cg_GprsConnectTime = 0;            //gprs重新建链时间清0
					if(cl_Buff == 0)
					{
						bg_Gprs = 1;
					}
					else
					{
						bg_Gprs = 0;
					}
				}
			}
		}
#ifdef W77E58
		if(bg_Gps)                                    //gps 处理
		{
			if((bg_GpsZdaRx) && (bg_GpsRmcRx))
			{
				bg_GpsZdaRx = 0;
				bg_GpsRmcRx = 0;
				GpsFormat();
				if(sg_GprsReport.GpsInfo.Flag == 'A')
				{
					if(!bg_GpsFirst)
					{
						gu_GpsIntervalTime = 0;
						bg_GpsFirst = 1;
						gl_PrevLongi = sg_GprsReport.GpsInfo.Longitude;
						gl_PrevLati = sg_GprsReport.GpsInfo.Latitude;
					}
					else
					{
						GpsDataSelect();
					}
				
				}
			
			}
		}
#endif
#if(1)

		if(cg_DispCycTime > 1)                //循环显示处理
		{
			
			cg_DispCycTime = 0;


			cg_DispPeopleCount ++;
			if(cg_DispPeopleCount > 10)
			{
				bg_PsmfNew = 0;
				bg_PsmhNew = 0;
				cg_DispPeopleCount = 0;
			}
			bg_Disp = 1;
			cg_DispStatus ++;
			cg_DispStatus &= 0x03;
			DispDeal(cg_DispStatus);
			bg_DispPeople = 1;
			/*
			if(!bg_DispPeople)
			{
				bg_Disp = 1;
				cg_DispStatus ++;
				cg_DispStatus &= 0x03;
				DispDeal(cg_DispStatus);
			}
			else
			{
				//显示接收的记录
				if(cg_DispPeopleCount < 12)
				{
					cg_DispPeopleCount ++;
					bg_Disp = 1;
					cg_DispStatus ++;
					cg_DispStatus &= 0x03;
					DispDeal(cg_DispStatus);
				}
				else
				{
					bg_DispPeople = 0;
					cg_DispPeopleCount = 0;
				}
			}
			*/
		}
#endif
		if(bg_Disp)
		{
			//显示标志有效,进行显示处理
			LedDisp(cg_LedBuff);
			bg_Disp = 0;  //清除显示标志
		}
		
	}
}
		

/*
******************************************************************************************************
*
*	定时器0
*
******************************************************************************************************
*/
void Timer0(void) interrupt 1 
{
	TH0 = TIME0H;
	TL0 = TIME0L;	

	gu_GpsIntervalTime ++;
	if(bg_GprsRxByteOver)
	{
		cg_GprsRxByteCount ++;
		if(cg_GprsRxByteCount > 4)  //gprs gprs两字节接收时间大于20ms时,接受计数器清零
		{
			bg_GprsRxByteOver = 0;
			cg_GprsRxByteCount = 0;
			cg_GprsRecDataBuff[0] = 0;
			bg_GprsRxHead = 0;
			bg_GprsCr = 0;
			bg_GprsRecSE = 0;
			bg_GprsDataHead = 0;
		}
	}
	                 				
	if(sg_CanOver.Flag == CAN_OVER_TIME_VALID)
	{
		//超时计数器增加
		if(sg_CanOver.Count < 250)
		{
			sg_CanOver.Count ++;
		}
	}
	
	cg_GprsFlashCount ++;
	if(bg_GprsRedFlash)
	{
		if(cg_GprsFlashCount > 5)
		{
			cg_ExtInter &= GPRS_RED_OFF;
			cg_GprsFlashCount = 0;
			if(bg_GprsRedStatus)
			{
				cg_ExtInter |= GPRS_GREEN_ON;
				
				EXT_INTER = cg_ExtInter;
				bg_GprsRedStatus =0;
			}
			else
			{
				cg_ExtInter &= GPRS_GREEN_OFF;
			
				EXT_INTER = cg_ExtInter;
				bg_GprsRedStatus =1;
			}
		}
	}
	else if(bg_GprsRst)
	{
		if(cg_GprsFlashCount > 5)
		{
			cg_GprsFlashCount = 0;
			if(bg_GprsRedStatus)
			{
				cg_ExtInter |= GPRS_RED_ON;
				cg_ExtInter |= GPRS_GREEN_ON;
				EXT_INTER = cg_ExtInter;
				bg_GprsRedStatus =0;
			}
			else
			{
				cg_ExtInter &= GPRS_RED_OFF;
				cg_ExtInter &= GPRS_GREEN_OFF;
				EXT_INTER = cg_ExtInter;
				bg_GprsRedStatus =1;
			}
		}
	}

	else if(!bg_Gprs)
	{
		cg_ExtInter |= GPRS_RED_ON;
		EXT_INTER = cg_ExtInter;
    }
	
	//软时钟
	cg_mSec ++;
	if(cg_mSec > 50)
	{
		if(bg_GprsOverFlag)
		{
			if(cg_GprsOverCount < 250)
			{
				cg_GprsOverCount ++;
			}
		}
		cg_CanCheckTime ++;          //can检测时间间隔加1
		TimeCount ++;
		cg_Sec ++;
		cg_mSec = 0;
		cg_CanTxTime ++;
		cg_DispCycTime ++;
		cg_CanRequireTime ++;	
		cg_GprsCheckTime ++;
		cg_GprsTxTimeCount ++;          ////////////////////
		cg_GprsGpsTxTime ++;
	}
	if(cg_Sec > 59)
	{
		cg_Min ++;
		cg_Sec = 0;
		cg_GprsConnectTime ++;
		
	}
	
	LightDeal();

}		
        
/*
*****************************************************************************************
*
*	显示错误号
*
*****************************************************************************************
*/
void DispError(uchar n)        
{
	LedClear();
	cg_LedBuff[0] = n;
	cg_LedBuff[4] = 23;
	cg_LedBuff[5] = 12;
	cg_LedBuff[6] = 12;
	LedDisp(cg_LedBuff);
}

/*
******************************************************************************************
*
*	清空LED显示区
*
******************************************************************************************
*/
void LedClear()
{
	uchar i;
	for(i=0; i<8; i++)
	{
		cg_LedBuff[i] = 48;
	}
}      

void DispDeal(uchar n)
{
	switch(n)
	{
		case 0x00:
				if(!bg_DispPeople)
				{
					//显示时间
					LedClear();
					cg_LedBuff[4] = 0x05;
					cg_LedBuff[5] = 17;       //sj
					cg_LedBuff[0] = sg_Time.Hour/10%10;
					cg_LedBuff[1] = sg_Time.Hour%10;
					cg_LedBuff[2] = sg_Time.Min/10%10;
					cg_LedBuff[3] = sg_Time.Min%10;
				}
				else
				{
					//显示前门记录
					LedClear();
					cg_LedBuff[4] = 10;
					cg_LedBuff[5] = 18;      //Fn
					
					cg_LedBuff[0] = sg_PsmfReport.In/10%10;
					cg_LedBuff[1] = sg_PsmfReport.In%10;
					cg_LedBuff[2] = sg_PsmfReport.Out/10%10;
					cg_LedBuff[3] = sg_PsmfReport.Out%10;

					if(sg_GprsReport.GpsInfo.Flag == 'A')
					{
						cg_LedBuff[7] = 1;
					}
					else if(sg_GprsReport.GpsInfo.Flag == 'V')
					{
						cg_LedBuff[7] = 0;
					}
					else if(sg_GprsReport.GpsInfo.Flag == 'E')
					{
						cg_LedBuff[7] = 2;
					}
					else
					{
						cg_LedBuff[7] = 3;
					}

					if(bg_PsmfNew)
					{
						cg_LedBuff[6] = 19;
					}
				}
				break;
		case 0x01:
				//显示速度
				if(!bg_DispPeople)
				{
					LedClear();
					cg_LedBuff[4] = 0x05;
					cg_LedBuff[5] = 51;       //sd
					
					cg_LedBuff[3] = sg_GprsReport.GpsInfo.Speed%10;
					cg_LedBuff[2] = sg_GprsReport.GpsInfo.Speed/10%10 + 24; //显示小数点
					cg_LedBuff[1] = sg_GprsReport.GpsInfo.Speed/100%10;
					cg_LedBuff[0] = sg_GprsReport.GpsInfo.Speed/1000%10;
				}
				else
				{
					//显示前门记录
					LedClear();
					cg_LedBuff[4] = 13;
					cg_LedBuff[5] = 18;      //Hn
					
					cg_LedBuff[0] = sg_PsmhReport.In/10%10;
					cg_LedBuff[1] = sg_PsmhReport.In%10;
					cg_LedBuff[2] = sg_PsmhReport.Out/10%10;
					cg_LedBuff[3] = sg_PsmhReport.Out%10;

					if(bg_Gprs)
					{
						cg_LedBuff[7] = 1;
					}
					else
					{
						cg_LedBuff[7] = 0;
					}
					if(bg_PsmhNew)
					{
						cg_LedBuff[6] = 19;
					}
				}	
				break;	
		case 0x02:
				if(!bg_DispPeople)
				{
					//显示车上人数
					LedClear();
					cg_LedBuff[5] = 11;
					cg_LedBuff[4] = 14;      //cp
					
					cg_TotalPeople = CAN_IER;
					cg_LedBuff[1] = cg_TotalPeople/100%10;
					cg_LedBuff[2] = cg_TotalPeople/10%10;
					cg_LedBuff[3] = cg_TotalPeople%10;
				}
				else
				{

					//显示前门记录
					LedClear();
					cg_LedBuff[4] = 10;
					cg_LedBuff[5] = 18;      //Fn
					
					cg_LedBuff[0] = sg_PsmfReport.In/10%10;
					cg_LedBuff[1] = sg_PsmfReport.In%10;
					cg_LedBuff[2] = sg_PsmfReport.Out/10%10;
					cg_LedBuff[3] = sg_PsmfReport.Out%10;

						if(sg_GprsReport.GpsInfo.Flag == 'A')
					{
						cg_LedBuff[7] = 1;
					}
					else if(sg_GprsReport.GpsInfo.Flag == 'V')
					{
						cg_LedBuff[7] = 0;
					}
					else if(sg_GprsReport.GpsInfo.Flag == 'E')
					{
						cg_LedBuff[7] = 2;
					}
					else
					{
						cg_LedBuff[7] = 3;
					}
					if(bg_PsmfNew)
					{
						cg_LedBuff[6] = 19;
					}

#if(0)
					cg_LedBuff[4] = 23;
					cg_LedBuff[5] = 12;
					cg_LedBuff[6] = 12;
					cg_LedBuff[3] = gl_GpsError%10;
					cg_LedBuff[2] = gl_GpsError/10%10;
					cg_LedBuff[1] = gl_GpsError/100%10;
					cg_LedBuff[0] = gl_GpsError/1000%10;
#endif
				}
				break;
		case 0x03:
				if(!bg_DispPeople)
				{
					LedClear();
					if(sg_GprsReport.GpsInfo.Flag == 'A')
					{
						cg_LedBuff[3] = 1;
					}
					else if(sg_GprsReport.GpsInfo.Flag == 'V')
					{
						cg_LedBuff[3] = 2;
					}
					else
					{
						cg_LedBuff[3] = 3;
					}
				}
				else
				{

					//显示前门记录
					LedClear();
					cg_LedBuff[4] = 13;
					cg_LedBuff[5] = 18;      //Hn
					
					cg_LedBuff[0] = sg_PsmhReport.In/10%10;
					cg_LedBuff[1] = sg_PsmhReport.In%10;
					cg_LedBuff[2] = sg_PsmhReport.Out/10%10;
					cg_LedBuff[3] = sg_PsmhReport.Out%10;

					if(bg_Gprs)
					{
						cg_LedBuff[7] = 1;
					}
					else
					{
						cg_LedBuff[7] = 0;
					}
					if(bg_PsmhNew)
					{
						cg_LedBuff[6] = 19;
					}

#if(0)
					cg_LedBuff[4] = 11;
					cg_LedBuff[5] = 11;
					cg_LedBuff[6] = 11;
					cg_LedBuff[3] = gl_GpsCorrect%10;
					cg_LedBuff[2] = gl_GpsCorrect/10%10;
					cg_LedBuff[1] = gl_GpsCorrect/100%10;
					cg_LedBuff[0] = gl_GpsCorrect/1000%10;
#endif

				}
					
				break;
		default:
				break;
	}
}

/*
****************************************************************************************************
*
*	指示灯处理
*
****************************************************************************************************
*/
void LightDeal(void)
{
		//can指示灯处理
	if( sg_CanLedBuff.GreenOn != 0 )
	{
		sg_CanLedBuff.GreenOn -- ;
		cg_ExtInter |= CAN_GREEN_ON;
	}
	else if( sg_CanLedBuff.GreenOff != 0 )
	{
		sg_CanLedBuff.GreenOff -- ;
		cg_ExtInter &= CAN_GREEN_OFF;
	}
	else
	{
		sg_CanLedBuff.GreenOn = sg_CanLed.GreenOn;
		sg_CanLedBuff.GreenOff = sg_CanLed.GreenOff;
	}
	//red
	if( sg_CanLedBuff.RedOn != 0 )
	{
		sg_CanLedBuff.RedOn -- ;
		cg_ExtInter |= CAN_RED_ON;
	}
	else if( sg_CanLedBuff.RedOff != 0 )
	{
		sg_CanLedBuff.RedOff -- ;
		cg_ExtInter &= CAN_RED_OFF;
	}
	else
	{
		sg_CanLedBuff.RedOn = sg_CanLed.RedOn;
		sg_CanLedBuff.RedOff = sg_CanLed.RedOff;
	}	
 
	EXT_INTER = cg_ExtInter;
}
/*
*********************************************************************************************
*
*	gprs 重新建莲
*
*********************************************************************************************
*/
uchar GprsRepeatConnect(void)
{
	uchar i;
	uchar cl_Buff;
	i = 0;                   //重新建立连接
	bg_GprsRedFlash = 1;
	do
	{
		cl_Buff = GprsConnect(&cg_IpAddr[0],&cg_Port[0]);
		
		if(cl_Buff != 0)
		{
			//连接不成功
			delay(2);
			i++;
		}
	}while((cl_Buff!=0) && (i<10));
	
	bg_GprsRedFlash = 0;

	if(cl_Buff != 0)
	{
		cl_Buff = GprsStartUp();    //gprs断线,重新启动
		return (cl_Buff);
	}
	else
	{
		//连接成功,
		cg_ExtInter &= GPRS_RED_OFF;
		EXT_INTER = cg_ExtInter;
		return 0x00;
	}
}



⌨️ 快捷键说明

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