Commit ed3b874a authored by 梁百峰's avatar 梁百峰

feat:增加上电仪表里程获取并提示是否为0,修改零件号、第9步第13步暂停5s后再允许打点

parent b7e9e4af
......@@ -793,7 +793,61 @@ void Get_HW_msg(void);
void Get_PN_msg(void);
extern uint8_t getmsgfinish;
extern uint32_t send0x714time;
uint32_t GenerateKey(uint8_t *Seed)
{
const uint8_t Xor[4] = {0x34, 0x66, 0x2E, 0x8D};
uint8_t key_array[4], Cal[4];
uint32_t key_value;
for (size_t i = 0; i < 4; i++)
{
Cal[i] = Seed[i] ^ Xor[i];
}
key_array[0] = ((Cal[2] & 0xF0) << 4) | (Cal[3] & 0xF0);
key_array[1] = ((Cal[3] & 0x2F) << 2) | (Cal[1] & 0x03);
key_array[2] = ((Cal[1] & 0xFC) >> 2) | (Cal[0] & 0xC0);
key_array[3] = ((Cal[0] & 0x0F) << 4) | (Cal[2] & 0x0F);
key_value = ((uint32_t)key_array[0] << 24U);
key_value = key_value | ((uint32_t)key_array[1] << 16U);
key_value = key_value | ((uint32_t)key_array[2] << 8U);
key_value = key_value | (uint32_t)key_array[3];
return (key_value);
}
uint8_t u8_seedresult[4];
uint8_t u8_seednum[4] = {0};
uint32_t u8_finalseed = 0;
uint8_t u8_get_seed_msg(void)
{
static u8_GetSeedResult = 0;
if(u8_GetSeedResult == 1)
{
return 1;
}
u8get714msg[0] = Get_CAN_CH0_ID_794_byte0_Sig();
u8get714msg[1] = Get_CAN_CH0_ID_794_byte1_Sig();
u8get714msg[2] = Get_CAN_CH0_ID_794_byte2_Sig();
u8get714msg[3] = Get_CAN_CH0_ID_794_byte3_Sig();
u8get714msg[4] = Get_CAN_CH0_ID_794_byte4_Sig();
u8get714msg[5] = Get_CAN_CH0_ID_794_byte5_Sig();
u8get714msg[6] = Get_CAN_CH0_ID_794_byte6_Sig();
u8get714msg[7] = Get_CAN_CH0_ID_794_byte7_Sig();
if(u8get714msg[1] == 0x67 && u8get714msg[2] == 0x01)
{
memcpy(u8_seednum,&u8get714msg[3],4);
u8_finalseed = GenerateKey(u8_seednum);
u8_seedresult[0] = (uint8_t)(u8_finalseed >> 24);
u8_seedresult[1] = (uint8_t)(u8_finalseed >> 16);
u8_seedresult[2] = (uint8_t)(u8_finalseed >> 8);
u8_seedresult[3] = (uint8_t)u8_finalseed ;
u8_GetSeedResult = 1;
}
return u8_GetSeedResult;
// getseedresult = 1;
}
void send_0x714_fuc()
{
......@@ -809,6 +863,104 @@ void send_0x714_fuc()
switch (zhenduanstep)
{
case 0:
data7[0] = 0x02;
data7[1] = 0x10;
data7[2] = 0x03;
data7[3] = 0xAA;
data7[4] = 0xAA;
data7[5] = 0xAA;
data7[6] = 0xAA;
data7[7] = 0xAA;
init_CAN_Frame(&m_msg7, 0x714, 8, 1, data7);
can_mid(m_msg7);
zhenduanstep++;
break;
case 1:
data7[0] = 0x02;
data7[1] = 0x27;
data7[2] = 0x01;
data7[3] = 0xAA;
data7[4] = 0xAA;
data7[5] = 0xAA;
data7[6] = 0xAA;
data7[7] = 0xAA;
init_CAN_Frame(&m_msg7, 0x714, 8, 1, data7);
can_mid(m_msg7);
zhenduanstep++;
break;
case 2:
if(u8_get_seed_msg() == 1)
{
zhenduanstep++;
}
break;
case 3:
data7[0] = 0x06;
data7[1] = 0x27;
data7[2] = 0x02;
data7[3] = u8_seedresult[0];
data7[4] = u8_seedresult[1];
data7[5] = u8_seedresult[2];
data7[6] = u8_seedresult[3];
data7[7] = 0xAA;
init_CAN_Frame(&m_msg7, 0x714, 8, 1, data7);
can_mid(m_msg7);
zhenduanstep++;
break;
case 4:
data7[0] = 0x10;
data7[1] = 0x17;
data7[2] = 0x2E;
data7[3] = 0xF1;
data7[4] = 0x87;
data7[5] = 0x39;
data7[6] = 0x44;
data7[7] = 0x52;
init_CAN_Frame(&m_msg7, 0x714, 8, 1, data7);
can_mid(m_msg7);
zhenduanstep++;
break;
case 5:
data7[0] = 0x21;
data7[1] = 0x56;
data7[2] = 0x2D;
data7[3] = 0x31;
data7[4] = 0x37;
data7[5] = 0x31;
data7[6] = 0x30;
data7[7] = 0x30;
init_CAN_Frame(&m_msg7, 0x714, 8, 1, data7);
can_mid(m_msg7);
zhenduanstep++;
break;
case 6:
data7[0] = 0x22;
data7[1] = 0x30;
data7[2] = 0x2D;
data7[3] = 0x31;
data7[4] = 0x34;
data7[5] = 0x30;
data7[6] = 0x30;
data7[7] = 0x30;
init_CAN_Frame(&m_msg7, 0x714, 8, 1, data7);
can_mid(m_msg7);
zhenduanstep++;
break;
case 7:
data7[0] = 0x23;
data7[1] = 0x20;
data7[2] = 0x20;
data7[3] = 0x20;
data7[4] = 0xAA;
data7[5] = 0xAA;
data7[6] = 0xAA;
data7[7] = 0xAA;
init_CAN_Frame(&m_msg7, 0x714, 8, 1, data7);
can_mid(m_msg7);
zhenduanstep++;
break;
case 8:
data7[0] = 0x03;
data7[1] = 0x22;
data7[2] = 0xF1;
......@@ -821,7 +973,7 @@ void send_0x714_fuc()
can_mid(m_msg7);
zhenduanstep++;
break;
case 1:
case 9:
data7[0] = 0x30;
data7[1] = 0x00;
data7[2] = 0x00;
......@@ -835,11 +987,11 @@ void send_0x714_fuc()
zhenduanstep++;
Get_SW_msg();
break;
case 2:
case 10:
Get_SW_msg();
zhenduanstep++;
break;
case 3:
case 11:
data7[0] = 0x03;
data7[1] = 0x22;
data7[2] = 0xF1;
......@@ -852,7 +1004,7 @@ void send_0x714_fuc()
can_mid(m_msg7);
zhenduanstep++;
break;
case 4:
case 12:
data7[0] = 0x30;
data7[1] = 0x00;
data7[2] = 0x00;
......@@ -865,11 +1017,11 @@ void send_0x714_fuc()
can_mid(m_msg7);
zhenduanstep++;
break;
case 5:
case 13:
Get_HW_msg();
zhenduanstep++;
break;
case 6:
case 14:
data7[0] = 0x03;
data7[1] = 0x22;
data7[2] = 0xF1;
......@@ -882,7 +1034,7 @@ void send_0x714_fuc()
can_mid(m_msg7);
zhenduanstep++;
break;
case 7:
case 15:
Get_PN_msg();
data7[0] = 0x30;
data7[1] = 0x00;
......@@ -897,7 +1049,7 @@ void send_0x714_fuc()
zhenduanstep++;
Get_PN_msg();
break;
case 8:
case 16:
Get_PN_msg();
zhenduanstep++;
break;
......@@ -922,7 +1074,7 @@ void Get_SW_msg(void)
{
return ;
}
if(zhenduanstep == 2)
if(zhenduanstep == 9 || zhenduanstep == 10)
{
u8getSWmsg[0] = Get_CAN_CH0_ID_794_byte0_Sig();
u8getSWmsg[1] = Get_CAN_CH0_ID_794_byte1_Sig();
......@@ -934,7 +1086,7 @@ void Get_SW_msg(void)
u8getSWmsg[7] = Get_CAN_CH0_ID_794_byte7_Sig();
}
if(u8getSWmsg[0] == 0x21 && zhenduanstep == 2)
if(u8getSWmsg[0] == 0x21 && (zhenduanstep == 9 || zhenduanstep == 10))
{
memcpy(ruanjianbanbenhao,&u8getSWmsg[1],7);
ruanjianbanbenhao[7] = 0xFF;
......@@ -958,7 +1110,7 @@ void Get_HW_msg(void)
u8get714msg[5] = Get_CAN_CH0_ID_794_byte5_Sig();
u8get714msg[6] = Get_CAN_CH0_ID_794_byte6_Sig();
u8get714msg[7] = Get_CAN_CH0_ID_794_byte7_Sig();
if(u8get714msg[0] == 0x21 && zhenduanstep == 5)
if(u8get714msg[0] == 0x21 && zhenduanstep == 13)
{
memcpy(yingjianbanbenhao,&u8get714msg[1],7);
yingjianbanbenhao[7] = 0xFF;
......@@ -1026,29 +1178,7 @@ void Get_PN_msg(void)
}
uint32_t GenerateKey(uint8_t *Seed)
{
const uint8_t Xor[4] = {0x34, 0x66, 0x2E, 0x8D};
uint8_t key_array[4], Cal[4];
uint32_t key_value;
for (size_t i = 0; i < 4; i++)
{
Cal[i] = Seed[i] ^ Xor[i];
}
key_array[0] = ((Cal[2] & 0xF0) << 4) | (Cal[3] & 0xF0);
key_array[1] = ((Cal[3] & 0x2F) << 2) | (Cal[1] & 0x03);
key_array[2] = ((Cal[1] & 0xFC) >> 2) | (Cal[0] & 0xC0);
key_array[3] = ((Cal[0] & 0x0F) << 4) | (Cal[2] & 0x0F);
key_value = ((uint32_t)key_array[0] << 24U);
key_value = key_value | ((uint32_t)key_array[1] << 16U);
key_value = key_value | ((uint32_t)key_array[2] << 8U);
key_value = key_value | (uint32_t)key_array[3];
return (key_value);
}
uint8_t chaengUDSstep = 0;
uint8_t getseedresult = 0;
......@@ -1149,6 +1279,10 @@ void resetchangeUDSfuc(void)
}
uint8_t vspeedpeizhi = 0;
uint8_t trackmode = 0;
uint32_t Get_ODO_Value(void)
{
return (uint32_t)((Get_Can_Ch0_ID_151_ODOH_Sig()<<16) | (Get_Can_Ch0_ID_151_ODOM_Sig() << 8) | Get_Can_Ch0_ID_151_ODOL_Sig());
}
void change_UDS_DID(void)
{
if(MENU_CHECK_STEP != 0)
......
......@@ -53,4 +53,5 @@ void Get_PN_msg(void);
void change_UDS_DID(void);
void resetchangeUDSfuc(void);
void resetpowerfuel(void);
uint32_t Get_ODO_Value(void);
#endif
......@@ -249,7 +249,20 @@ uint8_t Get_CAN_CH0_ID_794_byte7_Sig(void)
return (((uint8_t)((uint8_t)CAN_MSG_Read(CAN_CH0_ID_0x794_Msg_Count, 7u) >> 0u) & 0xFFu));
}
uint8_t Get_Can_Ch0_ID_151_ODOH_Sig(void)
{
return (((uint8_t)((uint8_t)CAN_MSG_Read(CAM_CH0_ID_0x151_Msg_Count,3u) >> 0u) & 0xFFu));
}
uint8_t Get_Can_Ch0_ID_151_ODOM_Sig(void)
{
return (((uint8_t)((uint8_t)CAN_MSG_Read(CAM_CH0_ID_0x151_Msg_Count,4u) >> 0u) & 0xFFu));
}
uint8_t Get_Can_Ch0_ID_151_ODOL_Sig(void)
{
return (((uint8_t)((uint8_t)CAN_MSG_Read(CAM_CH0_ID_0x151_Msg_Count,5u) >> 0u) & 0xFFu));
}
......@@ -285,6 +298,9 @@ uint8_t Co_Can_ConvertSubID(uint32_t MsgID)
case CAN_CH0_ID_Send0x794_Msg:
u8Result = CAN_CH0_ID_0x794_Msg_Count;
break;
case CAN_CH0_ID_Send0x151_Msg:
u8Result = CAM_CH0_ID_0x151_Msg_Count;
break;
default :
u8Result = CAN_CH0_ID_TOTAL_MAX;
break;
......
......@@ -13,6 +13,7 @@ typedef enum
CAN_CH0_ID_Send0CFE6CEE_Msg_Count,
CAN_CH0_ID_Send18FEFC17_Msg_Count,
CAN_CH0_ID_0x794_Msg_Count,
CAM_CH0_ID_0x151_Msg_Count,
CAN_CH0_ID_TOTAL_MAX,
} CAN_MSG_ID_t;
......@@ -34,6 +35,7 @@ extern const st_CAN_SendAttribute st_CANSendAttr[ID_SEND_TOTAL] ;
#define CAN_CH0_ID_Send0CFE6CEE_Msg 0x0CFE6CEEul
#define CAN_CH0_ID_Send18FEFC17_Msg 0x18FEFC17ul
#define CAN_CH0_ID_Send0x794_Msg 0x794ul
#define CAN_CH0_ID_Send0x151_Msg 0x151ul
extern uint32_t Get_ID_ODO(void);
extern uint32_t Get_ID_FUEL(void);
......@@ -67,6 +69,9 @@ extern uint8_t Get_CAN_CH0_ID_794_byte5_Sig(void);
extern uint8_t Get_CAN_CH0_ID_794_byte6_Sig(void);
extern uint8_t Get_CAN_CH0_ID_794_byte7_Sig(void);
extern uint8_t Get_Can_Ch0_ID_151_ODOH_Sig(void);
extern uint8_t Get_Can_Ch0_ID_151_ODOM_Sig(void);
extern uint8_t Get_Can_Ch0_ID_151_ODOL_Sig(void);
......
......@@ -66,9 +66,13 @@ uint32_t loc_Step;
void Function_Check_Ctrl(uint32_t cmd);
extern uint32_t restrict_vspeed_time;
void MENU_CHECK_STEP_ADD(void)
{
if(MENU_CHECK_STEP == 8 || MENU_CHECK_STEP == 12)
{
restrict_vspeed_time = 0;
}
if(MENU_CHECK_STEP > 13)
{
MENU_CHECK_STEP = 0;
......
......@@ -4019,7 +4019,7 @@ void Display_Version_Info(uint32_t ON_OFF)
// TFT_LCD_Draw_Bmp(3, 160, ( uint8_t * )gImage_Alarm_12_WordX6_Y165); //24脚输出占空比
// TFT_LCD_Draw_Bmp(210, 160, ( uint8_t * )gImage_Alarm_13_ImageX222_Y166); //%
TFT_LCD_Draw_Bmp(3, 290, ( uint8_t * )gImage_gImage_checkVX6_Y165 ); //检测台版本号
uint8_t mbuff [5] = {0,0x2E,0,8,0xff};
uint8_t mbuff [5] = {0,0x2E,1,0,0xff};
General_Number_Disp(mbuff, 160, 290);
}
......
......@@ -68,8 +68,15 @@ extern uint8_t fuelreset1;
extern uint8_t fuelreset2;
extern uint8_t fuelreset3;
extern uint8_t fuelreset4;
uint8_t ODOclearflag = 0;
uint32_t restrict_vspeed_time = 35;
void Sys_Run_Mode_10ms_Tasks_Group(void)
{
uint32_t ODOvalue = Get_ODO_Value();
if(ODOvalue > 0 && MENU_CHECK_STEP == 0 && ODOclearflag == 0)
{
ODOclearflag = 1;
}
if(MENU_CHECK_STEP == 1 && fuelreset1 == 0)
{
fuelreset1 = 1;
......@@ -98,7 +105,12 @@ void Sys_Run_Mode_10ms_Tasks_Group(void)
resetpowerfuel();
}
BusOff_Service( );
Key_Service( );
//第9步以及第13步会无法触发按键5s
if(restrict_vspeed_time >= 50)
{
Key_Service( );
}
resetchangeUDSfuc();
if((MENU_CHECK_STEP != 14) || (MENU_CHECK_STEP != 13))
......@@ -214,6 +226,10 @@ uint8_t time300ms;
void Sys_Run_Mode_100ms_Tasks_Group(void)
{
static uint32_t loc_timer = 0;
if(restrict_vspeed_time < 50)
{
restrict_vspeed_time++;
}
loc_timer++;
if ( loc_timer >= 15 )
{
......@@ -236,7 +252,12 @@ void Sys_Run_Mode_100ms_Tasks_Group(void)
//硬线车速输出懒得改名了
Buzzer_Start();
Total_Check( );
if(ODOclearflag == 1 && MENU_CHECK_STEP == 0)
{
GUI_Display_Version_Code_Service(25, 200, "The mileage is not zero!!! ", Letter_Num_11, PCodeText_Space_size);
}
Total_Check( );
//u16LJSText = TFT_LCD_REQ_FIFO_MAX_DEPTH;
}
/*=================================================================*/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment