?? do_record.c
字號(hào):
{
gOver_Tire_Count++;
gStop_Tire_Count=0;
}
else
{
gOver_Tire_Count=0;
gStop_Tire_Count++;
}
//3-4,判斷BIT3,屬于打印機(jī)的工作狀態(tài)
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的工作狀態(tài)
if(gRecord_Status&J_USB_STATUS_F_1) gDisp_Status|=S_USB_STATUS_F_1;
else gDisp_Status&=~S_USB_STATUS_F_1;
//4,接收到記錄儀的數(shù)據(jù),則需要返回一個(gè)狀態(tài)包,包括經(jīng)度,緯度.
//------------------------------
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); //校驗(yàn)核
Send_COM1_Byte(0x0d);Send_COM1_Byte(0x0a); //包尾
}
/**************************************************************************************\
2,主控接收記錄儀的駕駛員信息的響應(yīng)(不管是主控主動(dòng)查詢的還是記錄儀主動(dòng)發(fā)送的,均為同一個(gè)命令字)
因?yàn)樾枰@示屏實(shí)時(shí)的顯示當(dāng)前記錄儀IC卡中的駕駛員信息。所以有一些特殊的處理方式
A,主控系統(tǒng)重新上電或者是系統(tǒng)程序重新啟動(dòng)的時(shí)候,則需要先進(jìn)行一次進(jìn)行采集記錄儀當(dāng)前駕駛員信息
的命令。
B,主控已經(jīng)開機(jī),正常運(yùn)行的過程中,如果此時(shí)記錄儀的駕駛員信息更新,則需要記錄儀主動(dòng)發(fā)送一個(gè)
當(dāng)前駕駛員信息的命令給主控。
不管是通過什么方式,主控系統(tǒng)只要得到一次當(dāng)前記錄儀的駕駛員信息,則需要將此駕駛員的信息
存儲(chǔ)在FLASH中。并設(shè)置需要發(fā)送駕駛員信息給顯示屏的標(biāo)志。
在系統(tǒng)程序運(yùn)行過程中,如果判斷顯示中斷處于開機(jī)的狀態(tài),并有發(fā)送駕駛員標(biāo)志給顯示屏。
\**************************************************************************************/
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,收到主控向記錄儀設(shè)置間隔記錄的記錄儀的響應(yīng)
\**************************************************************************************/
else if(nCmd==K_SET_INTERDISTANCE_ECHO)
{
gPublic_Flag|=SET_DISTANCE_OK_F_1;
gSet_Distance_Info_Count=0;
}
/**************************************************************************************\
4,收到主控向記錄儀設(shè)置時(shí)間的記錄儀的響應(yīng)
\**************************************************************************************/
else if(nCmd==G_SET_TIME_EHCO)
{
gPublic_Flag&=~SET_RECORD_TIME_F_1;
gPublic_Flag|=CHECK_TIME_F_1;
}
break;
}
/*
========================================================================
二,消息類型為1的消息包(轉(zhuǎn)移給中心的數(shù)據(jù))
如果記錄儀有數(shù)據(jù)發(fā)送給中心,則首先需要進(jìn)行TCP登陸操作
如果登陸操作失敗,則可以判斷是否允許SMS的形式發(fā)送
========================================================================
*/
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的消息包(轉(zhuǎn)移給顯示屏的數(shù)據(jù))
========================================================================
*/
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;
}
}
/********************************************************\
* 函數(shù)名:Deal_Record_Command()
作用域:本地文件調(diào)用
* 功能:
* 參數(shù):
* 返回值:
* 創(chuàng)建人:
*
* 修改歷史:(每條詳述)
\********************************************************/
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);
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -