📄 do_other.c
字号:
gCircle_Buffer[gCircle_Buffer_Point]=gKind;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gGroup;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gVID/0x100;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gVID%0x100;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gLongitude/0x1000000;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gLongitude%0x1000000/0x10000;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gLongitude%0x10000/0x100;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gLongitude%0x100;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gLatitude/0x1000000;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gLatitude%0x1000000/0x10000;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gLatitude%0x10000/0x100;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gLatitude%0x100;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gSpeed;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gAzimuth;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
if(gGeneral_Flag&GPS_VALID_F_1) nFlag|=FLAG_GPSVAILD_1;
else nFlag&=~FLAG_GPSVAILD_1;
gCircle_Buffer[gCircle_Buffer_Point]=nFlag;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gYear;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gMonth;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gDate;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gHour;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gMinute;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gSecond;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
//增加4个状态量的发送
gCircle_Buffer[gCircle_Buffer_Point]=0;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gStatus3_Flag;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gStatus2_Flag;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gStatus1_Flag;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
//增加long int型的里程数据
/*
gCircle_Buffer[gCircle_Buffer_Point]=gALL_Distance/0x1000000;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gALL_Distance%0x1000000/0x10000;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gALL_Distance%0x10000/0x100;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gALL_Distance%0x100;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
*/
//==================================================
gCircle_Buffer[gCircle_Buffer_Point]=iCheckOut/0x100;
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=iCheckOut%0x100;
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=EOT;
gCircle_Buffer_Point++;
//gCircle_Buffer_Point的值是数据区的长度
}
/********************************************************\
* 函数名:Circle_Data_GSM
作用域:本地文件调用
* 功能: 在GSM的工作方式下,如果是报警,或者行车轨迹,或者监控数据,
组织到gCircle_Buffer[]缓冲中
* 参数:
* 返回值:
* 创建人:
*
* 修改历史:(每条详述)
AT+CMGS=045
> 001100|0D 91683196818735F4 000400 1D FF43BC19010101001018739A9A04D63C2200008003093010164306460D
\********************************************************/
unsigned int Circle_Data_GSM( unsigned char nCount,unsigned char nCommand,unsigned char nACK,unsigned int iCheckOutTemp )
{
unsigned char nInput;
unsigned int iCheckOut;
unsigned int i;
iCheckOut=iCheckOutTemp;
nInput=12+4+17*2;
if(nCount==1)
{
gCircle_Buffer_Point=0;
gCircle_Buffer[gCircle_Buffer_Point]=SOH;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=nCommand;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=(char)(~nCommand);
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=nInput-4;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=nACK;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gKind;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gGroup;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gVID/0x100;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gVID%0x100;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
i=Circle_Data_GSM_Sub(iCheckOut);
return(i);
}
else if(nCount==2)
{
i=Circle_Data_GSM_Sub(iCheckOut);
return(i);
}
/*
else if(nCount==3)
{
i=Circle_Data_GSM_Sub(iCheckOut);
return(i);
}
else if(nCount==4)
{
i=Circle_Data_GSM_Sub(iCheckOut);
return(i);
}
*/
else if(nCount==3)
{
i=Circle_Data_GSM_Sub(iCheckOut);
return(i);
}
else if(nCount==4)
{
/////////////////////////////////////////////////
i=Circle_Data_GSM_Sub(iCheckOut);
//增加4个车载终端的状态量
gCircle_Buffer[gCircle_Buffer_Point]=0;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gStatus3_Flag;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gStatus2_Flag;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gStatus1_Flag;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
//增加long int型的里程数据
/*
gCircle_Buffer[gCircle_Buffer_Point]=gALL_Distance/0x1000000;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gALL_Distance%0x1000000/0x10000;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gALL_Distance%0x10000/0x100;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gALL_Distance%0x100;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
*/
//////////////////////////////////////////////
gCircle_Buffer[gCircle_Buffer_Point]=i/0x100;
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=i%0x100;
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=EOT;
gCircle_Buffer_Point++;
return(0);
}
else
{
return(0);
}
}
/********************************************************\
* 函数名:Circle_Data_GSM_Sub
作用域:本地文件调用
* 功能: 在GSM的工作方式下,如果是报警,或者行车轨迹,或者监控数据,
组织到gCircle_Buffer[]缓冲中
* 参数:
* 返回值:
* 创建人:
* 修改历史:(每条详述)
\********************************************************/
unsigned int Circle_Data_GSM_Sub(unsigned int iCheckOutTemp)
{
unsigned int iCheckOut;
unsigned char nFlag;
nFlag=gAlarm_Type;
iCheckOut=iCheckOutTemp;
gCircle_Buffer[gCircle_Buffer_Point]=gLongitude/0x1000000;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gLongitude%0x1000000/0x10000;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gLongitude%0x10000/0x100;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gLongitude%0x100;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gLatitude/0x1000000;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gLatitude%0x1000000/0x10000;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gLatitude%0x10000/0x100;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gLatitude%0x100;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gSpeed;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gAzimuth;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
if(gGeneral_Flag&GPS_VALID_F_1) nFlag|=FLAG_GPSVAILD_1;
else nFlag&=~FLAG_GPSVAILD_1;
gCircle_Buffer[gCircle_Buffer_Point]=nFlag;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gYear;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gMonth;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gDate;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gHour;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gMinute;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
gCircle_Buffer[gCircle_Buffer_Point]=gSecond;
iCheckOut += gCircle_Buffer[gCircle_Buffer_Point];
gCircle_Buffer_Point++;
return(iCheckOut);
}
/********************************************************\
* 函数名:Dichotomy_PassData_First
作用域:本地文件调用
* 功能: 二分法寻找历史轨迹的第一个满足条件的扇区
* 参数:
* 返回值:
* 创建人:
*
* 修改历史:(每条详述)
\********************************************************/
unsigned int Dichotomy_PassData_First(unsigned int iFirst_Page,unsigned int iEnd_Page)
{
unsigned int iMiddle_Page;
iMiddle_Page=(iFirst_Page+iEnd_Page)/2;
return(iMiddle_Page);
}
/********************************************************\
* 函数名:GSM_WORK_Data
作用域:
* 功能:
* 参数:
* 返回值:
* 创建人:
*
* 修改历史:(每条详述)
\********************************************************/
void GSM_WORK_Data(void)
{
if(gCircle_Timer>0)
{
if( (gGeneral_Flag&GPS_VALID_F_1)&&( (gInternal_Flag&LOAD_ONEVALID_F_1)==0) )
{
gInternal_Flag|=LOAD_ONEVALID_F_1;
//在0--gCycle_GSM内判断到一个有效的数据
gGSM_Work_Count++;
gCheck_Data += Circle_Data_GSM(gGSM_Work_Count,VEHICLE_RUNDATA_UP,0,gCheck_Data);
if(gGSM_Work_Count>=4)
{
gInternal_Flag|=SEND_CIRCLE_F_1;gGSM_Work_Count=0;gCheck_Data=0;
Judge_SMS_Way();
}
}
else if( gCircle_Timer>gCycle_GSM )
{
if( gInternal_Flag&LOAD_ONEVALID_F_1 )
{
gCircle_Timer=0;
gInternal_Flag&=~LOAD_ONEVALID_F_1;
}
else
{
gCircle_Timer=0;
gInternal_Flag&=~LOAD_ONEVALID_F_1;
//在0--gCycle_GSM内仍然未判断到一个有效的数据,则将这个作为一个点存储
gGSM_Work_Count++;
gCheck_Data += Circle_Data_GSM(gGSM_Work_Count,VEHICLE_RUNDATA_UP,0,gCheck_Data);
if(gGSM_Work_Count>=4)
{
gInternal_Flag|=SEND_CIRCLE_F_1;gGSM_Work_Count=0;gCheck_Data=0;
Judge_SMS_Way();
}
}
}
}
}
/********************************************************\
* 函数名:TCP_WORK_Data
作用域:
* 功能:
* 参数:
* 返回值:
* 创建人:
*
* 修改历史:(每条详述)
\********************************************************/
void TCP_WORK_Data(unsigned int Timer,unsigned char nCommand)
{
if(gCircle_Timer>0)
{
if( (gGeneral_Flag&GPS_VALID_F_1)&&( (gInternal_Flag&LOAD_ONEVALID_F_1)==0) )
{
gInternal_Flag|=LOAD_ONEVALID_F_1;
//在0--gCycle_TCP内判断到一个有效的数据
Circle_Data_TCP(nCommand,0);
gInternal_Flag|=SEND_CIRCLE_F_1;
Judge_SMS_Way();
}
else if( gCircle_Timer>Timer )
{
if( gInternal_Flag&LOAD_ONEVALID_F_1 )
{
gCircle_Timer=0;
gInternal_Flag&=~LOAD_ONEVALID_F_1;
}
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -