📄 do_record.c
字号:
{
gOver_Tire_Count++;
gStop_Tire_Count=0;
}
else
{
gOver_Tire_Count=0;
gStop_Tire_Count++;
}
//3-4,判断BIT3,属于打印机的工作状态
if(gRecord_Status&J_PRINTER_STATUS_F_1) gDisp_Status|=S_PRINTER_STATUS_F_1;
else gDisp_Status&=~S_PRINTER_STATUS_F_1;
//3-5,判断BIT4,属于USB的工作状态
if(gRecord_Status&J_USB_STATUS_F_1) gDisp_Status|=S_USB_STATUS_F_1;
else gDisp_Status&=~S_USB_STATUS_F_1;
//4,接收到记录仪的数据,则需要返回一个状态包,包括经度,纬度.
//------------------------------
Send_COM1_Byte(gStatus);
Check_Record = gStatus;
Send_COM1_Byte(0xAA);
Check_Record ^= 0xAA;
Send_COM1_Byte(0x75);
Check_Record ^= 0x75;
Send_COM1_Byte(K_SEND_GPSDATA);
Check_Record ^= K_SEND_GPSDATA;
Send_COM1_Byte(0);
Check_Record ^= 0;
Send_COM1_Byte(10);
Check_Record ^= 10;
Send_COM1_Byte(0x00);
Check_Record ^= 0x00;
if(gGeneral_Flag&GPS_VALID_F_1)
{
Send_COM1_Byte(0x01);
Check_Record ^= 0x01;
}
else
{
Send_COM1_Byte(0x00);
Check_Record ^= 0x00;
}
Send_COM1_Byte(gLongitude/0x1000000);
Check_Record ^= gLongitude/0x1000000;
Send_COM1_Byte(gLongitude%0x1000000/0x10000);
Check_Record ^= gLongitude%0x1000000/0x10000;
Send_COM1_Byte(gLongitude%0x10000/0x100);
Check_Record ^= gLongitude%0x10000/0x100;
Send_COM1_Byte(gLongitude%0x100);
Check_Record ^= gLongitude%0x100;
Send_COM1_Byte(gLatitude/0x1000000);
Check_Record ^= gLatitude/0x1000000;
Send_COM1_Byte(gLatitude%0x1000000/0x10000);
Check_Record ^= gLatitude%0x1000000/0x10000;
Send_COM1_Byte(gLatitude%0x10000/0x100);
Check_Record ^= gLatitude%0x10000/0x100;
Send_COM1_Byte(gLatitude%0x100);
Check_Record ^= gLatitude%0x100;
Send_COM1_Byte(gRecord_Status);
Check_Record ^= gRecord_Status;
Send_COM1_Byte(0);
Check_Record ^= 0;
Send_COM1_Byte(Check_Record); //校验核
Send_COM1_Byte(0x0d);Send_COM1_Byte(0x0a); //包尾
}
/**************************************************************************************\
2,主控接收记录仪的驾驶员信息的响应(不管是主控主动查询的还是记录仪主动发送的,均为同一个命令字)
因为需要显示屏实时的显示当前记录仪IC卡中的驾驶员信息。所以有一些特殊的处理方式
A,主控系统重新上电或者是系统程序重新启动的时候,则需要先进行一次进行采集记录仪当前驾驶员信息
的命令。
B,主控已经开机,正常运行的过程中,如果此时记录仪的驾驶员信息更新,则需要记录仪主动发送一个
当前驾驶员信息的命令给主控。
不管是通过什么方式,主控系统只要得到一次当前记录仪的驾驶员信息,则需要将此驾驶员的信息
存储在FLASH中。并设置需要发送驾驶员信息给显示屏的标志。
在系统程序运行过程中,如果判断显示中断处于开机的状态,并有发送驾驶员标志给显示屏。
\**************************************************************************************/
else if(nCmd==K_GET_DRIVEDATA_E_ECHO)
{
gReceive_Record_Info_Timer=0;
SRAM_Init();
SRAM_Write(SRAM_DRIVER_INFO_VAILD,VAILD_2);
for(i=0;i<29;i++)
{
nTemp=SRAM_Read(SRAM_RECORD_S+7+i);
SRAM_Write(SRAM_DRIVER_INFO_CODE+i,nTemp);
}
///////////////////////////////
gDisp_Buffer_Point=0;
if(gDisp_Buffer_Point+37<=sizeof(gDisp_Buffer))
{
gDisp_Buffer[gDisp_Buffer_Point]=37;
gDisp_Buffer_Point++;
gDisp_Buffer[gDisp_Buffer_Point]=0;
gDisp_Buffer_Point++;
gDisp_Buffer[gDisp_Buffer_Point]='@';
gDisp_Buffer_Point++;
gDisp_Buffer[gDisp_Buffer_Point]='%';
gDisp_Buffer_Point++;
gDisp_Buffer[gDisp_Buffer_Point]=35;
gDisp_Buffer_Point++;
gDisp_Buffer[gDisp_Buffer_Point]=DISP_MAIN_IC_INFO_DOWN;
gDisp_Buffer_Point++;
SRAM_Init();
for(i=0;i<29;i++)
{
gDisp_Buffer[gDisp_Buffer_Point]=SRAM_Read(SRAM_DRIVER_INFO_CODE+i);
gDisp_Buffer_Point++;
}
gDisp_Buffer[gDisp_Buffer_Point]='$';
gDisp_Buffer_Point++;
gDisp_Buffer[gDisp_Buffer_Point]='&';
gDisp_Buffer_Point++;
gGet_Driver_Info_Count=0;
//gDriver_Info=WAIT_SEND_DRIVER_INFO;
}
/////////////////////////////////
}
/**************************************************************************************\
3,收到主控向记录仪设置间隔记录的记录仪的响应
\**************************************************************************************/
else if(nCmd==K_SET_INTERDISTANCE_ECHO)
{
gPublic_Flag|=SET_DISTANCE_OK_F_1;
gSet_Distance_Info_Count=0;
}
/**************************************************************************************\
4,收到主控向记录仪设置时间的记录仪的响应
\**************************************************************************************/
else if(nCmd==G_SET_TIME_EHCO)
{
gPublic_Flag&=~SET_RECORD_TIME_F_1;
gPublic_Flag|=CHECK_TIME_F_1;
}
break;
}
/*
========================================================================
二,消息类型为1的消息包(转移给中心的数据)
如果记录仪有数据发送给中心,则首先需要进行TCP登陆操作
如果登陆操作失败,则可以判断是否允许SMS的形式发送
========================================================================
*/
case CENTER_TYPE:
{
gRecord_Data_Timer=0;
gStatus2_Flag&=~RECORD_VAILD_F_1;
gReceive_Record_Info_Timer=0;
gStatus=CENTER_TYPE;
gOther_Flag|=RECORD_DATA_F_1;
gOther_Flag|=ALLOW_SEND_RECORD_F_1;
SRAM_Init();
SRAM_Write(SRAM_SEND_VAILD,VAILD_2);
SRAM_Write(SRAM_SEND_LENGTH_H,(iLength-3)/0x100);
SRAM_Write(SRAM_SEND_LENGTH_L,(iLength-3)%0x100);
for(i=0;i<iLength-3;i++)
{
nTemp=SRAM_Read(SRAM_RECORD_S+1+i);
SRAM_Write(SRAM_SEND_S+i,nTemp);
}
Judge_SMS_Way();
break;
}
/*
========================================================================
三,消息类型为2的消息包(转移给显示屏的数据)
========================================================================
*/
case DISP_TYPE:
{
gRecord_Data_Timer=0;
gStatus2_Flag&=~RECORD_VAILD_F_1;
gStatus=DISP_TYPE;
if(gDisp_Buffer_Point+iLength+8<=sizeof(gDisp_Buffer))
{
gDisp_Buffer[gDisp_Buffer_Point]=iLength+8;
gDisp_Buffer_Point++;
gDisp_Buffer[gDisp_Buffer_Point]=0;
gDisp_Buffer_Point++;
gDisp_Buffer[gDisp_Buffer_Point]='@';
gDisp_Buffer_Point++;
gDisp_Buffer[gDisp_Buffer_Point]='%';
gDisp_Buffer_Point++;
gDisp_Buffer[gDisp_Buffer_Point]=iLength+6;
gDisp_Buffer_Point++;
gDisp_Buffer[gDisp_Buffer_Point]=DISP_ASK_RECORD_INFO_ECHO_DOWM;
gDisp_Buffer_Point++;
for(i=0;i<iLength;i++)
{
gDisp_Buffer[gDisp_Buffer_Point] = SRAM_Read(SRAM_RECORD_S+i) ;
gDisp_Buffer_Point++;
}
gDisp_Buffer[gDisp_Buffer_Point]='$';
gDisp_Buffer_Point++;
gDisp_Buffer[gDisp_Buffer_Point]='&';
gDisp_Buffer_Point++;
}
break;
}
default:
break;
}
}
/********************************************************\
* 函数名:Deal_Record_Command()
作用域:本地文件调用
* 功能:
* 参数:
* 返回值:
* 创建人:
*
* 修改历史:(每条详述)
\********************************************************/
unsigned char Check_Record_Time(void)
{
SRAM_Init();
if( (gGeneral_Flag&GPS_VALID_F_1)
&&((gPublic_Flag&SET_RECORD_TIME_F_1)==0)
&&(gSecond>=55) )
{
if(gYear!=SRAM_Read(SRAM_RECORD_S+8) ) return(1);
else if(gMonth!=SRAM_Read(SRAM_RECORD_S+9)) return(1);
else if(gDate !=SRAM_Read(SRAM_RECORD_S+10)) return(1);
else if(gHour !=SRAM_Read(SRAM_RECORD_S+11)) return(1);
else if(gMinute!=SRAM_Read(SRAM_RECORD_S+12)) return(1);
else return(0);
}
else
{
return(0);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -