📄 main.c
字号:
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 + -