|
|
@ -61,7 +61,7 @@ static void Motor_ModuleHandler(const Msg_t *pstMsg) |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
static int iVehicleMove = 0; |
|
|
int iSpeed = 1; |
|
|
switch (pstMsg->m_uiMsgID) |
|
|
switch (pstMsg->m_uiMsgID) |
|
|
{ |
|
|
{ |
|
|
case MOTOR_SET_SPEED: |
|
|
case MOTOR_SET_SPEED: |
|
|
@ -75,18 +75,12 @@ static void Motor_ModuleHandler(const Msg_t *pstMsg) |
|
|
g_aiMotorSpeed[1] = MotorMgr_SpeedConvert(g_apstMotors[1], aiMotorSpeed[1]); |
|
|
g_aiMotorSpeed[1] = MotorMgr_SpeedConvert(g_apstMotors[1], aiMotorSpeed[1]); |
|
|
if (0 == g_aiMotorSpeed[0] && 0 == g_aiMotorSpeed[1]) |
|
|
if (0 == g_aiMotorSpeed[0] && 0 == g_aiMotorSpeed[1]) |
|
|
{ |
|
|
{ |
|
|
iVehicleMove = 0; |
|
|
g_iLastVehicleMove = 0; |
|
|
} |
|
|
} |
|
|
else |
|
|
else |
|
|
{ |
|
|
{ |
|
|
iVehicleMove = 1; |
|
|
g_iLastVehicleMove = 1; |
|
|
} |
|
|
} |
|
|
if (0 == iVehicleMove && 1 == g_iLastVehicleMove) |
|
|
|
|
|
{ |
|
|
|
|
|
MsgCenter_SendTo(MODULE_NAME_CUSTOM, CUSTOM_SET_STOP_OFF_PAINT, NULL, 0); |
|
|
|
|
|
MsgCenter_SendTo(MODULE_NAME_CUSTOM, COMMON_CMD_STOP_ALL, NULL, 0);//先关枪
|
|
|
|
|
|
} |
|
|
|
|
|
g_iLastVehicleMove = iVehicleMove; |
|
|
|
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
case MOTOR_POWER_ENABLE: |
|
|
case MOTOR_POWER_ENABLE: |
|
|
@ -99,18 +93,48 @@ static void Motor_ModuleHandler(const Msg_t *pstMsg) |
|
|
HAL_GPIO_WritePin(OUT_0_GPIO_Port, OUT_0_Pin, 1); |
|
|
HAL_GPIO_WritePin(OUT_0_GPIO_Port, OUT_0_Pin, 1); |
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
case COMMON_CMD_STOP_ALL: |
|
|
case MOTOR_GET_VEHICLE_SPEED: |
|
|
|
|
|
{ |
|
|
|
|
|
if (pstMsg->m_uiDataLen >= sizeof(int)) |
|
|
|
|
|
{ |
|
|
|
|
|
RD_MEMCPY(&iSpeed, pstMsg->m_aucData, sizeof(int)); |
|
|
|
|
|
} |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
case MOTOR_CMD_STOP_AFTER: |
|
|
{ |
|
|
{ |
|
|
memset(g_aiMotorSpeed, 0, sizeof(g_aiMotorSpeed)); |
|
|
static uint32_t uiLastTime = 0; |
|
|
iVehicleMove = 0; |
|
|
static int iIsDelayStop = 0; |
|
|
if (1 == g_iLastVehicleMove) |
|
|
|
|
|
|
|
|
if (1 == g_iLastVehicleMove) |
|
|
{ |
|
|
{ |
|
|
MsgCenter_SendTo(MODULE_NAME_CUSTOM, CUSTOM_SET_STOP_OFF_PAINT, NULL, 0); |
|
|
MsgCenter_SendTo(MODULE_NAME_CUSTOM, CUSTOM_SET_STOP_OFF_PAINT, NULL, 0); |
|
|
MsgCenter_SendTo(MODULE_NAME_CUSTOM, COMMON_CMD_STOP_ALL, NULL, 0);//先关枪
|
|
|
MsgCenter_SendTo(MODULE_NAME_CUSTOM, COMMON_CMD_STOP_ALL, NULL, 0);//先关枪
|
|
|
|
|
|
iIsDelayStop = 1; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
g_iLastVehicleMove = 0; |
|
|
g_iLastVehicleMove = 0; |
|
|
|
|
|
|
|
|
|
|
|
if (1 == iIsDelayStop) |
|
|
|
|
|
{ |
|
|
|
|
|
if (Rd_GetTime() - uiLastTime >= 600 * g_stCV.Paint_Gun_Shutdown_Distance / iSpeed) |
|
|
|
|
|
{ |
|
|
|
|
|
memset(g_aiMotorSpeed, 0, sizeof(g_aiMotorSpeed)); |
|
|
|
|
|
iIsDelayStop = 0; |
|
|
|
|
|
} |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
else |
|
|
|
|
|
{ |
|
|
|
|
|
uiLastTime = Rd_GetTime(); |
|
|
|
|
|
} |
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
|
|
|
case COMMON_CMD_STOP_ALL: |
|
|
|
|
|
{ |
|
|
|
|
|
memset(g_aiMotorSpeed, 0, sizeof(g_aiMotorSpeed)); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
default: |
|
|
default: |
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
|