Browse Source

副模式默认使用默认而不是空

master
Lizongdi 7 days ago
parent
commit
47e13ef015
  1. 25
      controller/include/msp_MK32.h
  2. 126
      project/paint_robot_new/paint_robot_new.c

25
controller/include/msp_MK32.h

@ -76,6 +76,7 @@ typedef enum {
typedef enum {
SUB_MODE_NULL = 0,
SUB_MODE_DEFAULT,
SUB_MODE_MAX
} E_BHBF_RBSubMode;
@ -160,21 +161,21 @@ static inline void SafeDispatch(const TKeyTree *table, int count, int mode, int
}
}
// for (int i = 0; i < count; i++)
// {
// if (table[i].m_iMode == mode && table[i].m_iSubMode == SUB_MODE_NULL)
// {
// if (table[i].m_ptFunc != NULL)
// {
// table[i].m_ptFunc();
// }
// return;
// }
// }
for (int i = 0; i < count; i++)
{
if (table[i].m_iMode == mode && table[i].m_iSubMode == SUB_MODE_DEFAULT)
{
if (table[i].m_ptFunc != NULL)
{
table[i].m_ptFunc();
}
return;
}
}
for (int i = 0; i < count; i++)
{
if (table[i].m_iMode == MODE_DEFAULT && table[i].m_iSubMode == SUB_MODE_NULL)
if (table[i].m_iMode == MODE_DEFAULT && table[i].m_iSubMode == SUB_MODE_DEFAULT)
{
if (table[i].m_ptFunc != NULL)
{

126
project/paint_robot_new/paint_robot_new.c

@ -332,129 +332,129 @@ static void Robot_Move_Right(void)
const ActionFunc g_ActionTable[KEY_MAX][MODE_MAX][SUB_MODE_MAX] = {
[E_STOP] = {
[MODE_DEFAULT] = {
[SUB_MODE_NULL] = E_Robot_Stop,
[SUB_MODE_DEFAULT] = E_Robot_Stop,
},
[MODE_VERTICAL_LEFT] = {
[SUB_MODE_NULL] = E_Robot_Stop,
[SUB_MODE_DEFAULT] = E_Robot_Stop,
},
[MODE_VERTICAL_RIGHT] = {
[SUB_MODE_NULL] = E_Robot_Stop,
[SUB_MODE_DEFAULT] = E_Robot_Stop,
},
},
[KEY_SA_UP] = {
[MODE_VERTICAL_LEFT] = {
[SUB_MODE_NULL] = Vertical_Lane_Change_From_Right_To_Left_UP_Control,
[SUB_MODE_DEFAULT] = Vertical_Lane_Change_From_Right_To_Left_UP_Control,
},
[MODE_VERTICAL_RIGHT] = {
[SUB_MODE_NULL] = Vertical_Lane_Change_From_Left_To_Right_UP_Control,
[SUB_MODE_DEFAULT] = Vertical_Lane_Change_From_Left_To_Right_UP_Control,
},
},
[KEY_SA_DOWN] = {
[MODE_VERTICAL_LEFT] = {
[SUB_MODE_NULL] = Vertical_Lane_Change_From_Right_To_Left_Down_Control,
[SUB_MODE_DEFAULT] = Vertical_Lane_Change_From_Right_To_Left_Down_Control,
},
[MODE_VERTICAL_RIGHT] = {
[SUB_MODE_NULL] = Vertical_Lane_Change_From_Left_To_Right_Down_Control,
[SUB_MODE_DEFAULT] = Vertical_Lane_Change_From_Left_To_Right_Down_Control,
},
},
[KEY_SA_DEFAULT] = {
[MODE_VERTICAL_LEFT] = {
[SUB_MODE_NULL] = Lane_Change_State_Reset,
[SUB_MODE_DEFAULT] = Lane_Change_State_Reset,
},
[MODE_VERTICAL_RIGHT] = {
[SUB_MODE_NULL] = Lane_Change_State_Reset,
[SUB_MODE_DEFAULT] = Lane_Change_State_Reset,
},
},
[KEY_SB_UP] = {
[MODE_DEFAULT] = {
[SUB_MODE_NULL] = Robot_Move_Forward,
[SUB_MODE_DEFAULT] = Robot_Move_Forward,
},
[MODE_VERTICAL_LEFT] = {
[SUB_MODE_NULL] = Robot_Move_Forward_PID,
[SUB_MODE_DEFAULT] = Robot_Move_Forward_PID,
},
[MODE_VERTICAL_RIGHT] = {
[SUB_MODE_NULL] = Robot_Move_Forward_PID,
[SUB_MODE_DEFAULT] = Robot_Move_Forward_PID,
}
},
[KEY_SB_DOWN] = {
[MODE_DEFAULT] = {
[SUB_MODE_NULL] = Robot_Move_Backward,
[SUB_MODE_DEFAULT] = Robot_Move_Backward,
},
[MODE_VERTICAL_LEFT] = {
[SUB_MODE_NULL] = Robot_Move_Backward_PID,
[SUB_MODE_DEFAULT] = Robot_Move_Backward_PID,
},
[MODE_VERTICAL_RIGHT] = {
[SUB_MODE_NULL] = Robot_Move_Backward_PID,
[SUB_MODE_DEFAULT] = Robot_Move_Backward_PID,
}
},
[KEY_SC_DOWN] = {
[MODE_DEFAULT] = {
[SUB_MODE_NULL] = Robot_Paint_OFF,
[SUB_MODE_DEFAULT] = Robot_Paint_OFF,
}
},
[KEY_SC_DEFAULT] = {
[MODE_DEFAULT] = {
[SUB_MODE_NULL] = Robot_Paint_OFF,
[SUB_MODE_DEFAULT] = Robot_Paint_OFF,
}
},
[KEY_SC_UP] = {
[MODE_DEFAULT] = {
[SUB_MODE_NULL] = Robot_Paint_ON,
[SUB_MODE_DEFAULT] = Robot_Paint_ON,
}
},
[JOY_DEFAULT] = {
[MODE_DEFAULT] = {
[SUB_MODE_NULL] = Robot_Stop,
[SUB_MODE_DEFAULT] = Robot_Stop,
},
[MODE_VERTICAL_LEFT] = {
[SUB_MODE_NULL] = Robot_Stop_After,
[SUB_MODE_DEFAULT] = Robot_Stop_After,
},
[MODE_VERTICAL_RIGHT] = {
[SUB_MODE_NULL] = Robot_Stop_After,
[SUB_MODE_DEFAULT] = Robot_Stop_After,
},
},
[JOY_LEFT_UP] = {
[MODE_DEFAULT] = {
[SUB_MODE_NULL] = Robot_Move_Forward,
[SUB_MODE_DEFAULT] = Robot_Move_Forward,
},
[MODE_VERTICAL_LEFT] = {
[SUB_MODE_NULL] = Robot_Move_Forward_PID,
[SUB_MODE_DEFAULT] = Robot_Move_Forward_PID,
},
[MODE_VERTICAL_RIGHT] = {
[SUB_MODE_NULL] = Robot_Move_Forward_PID,
[SUB_MODE_DEFAULT] = Robot_Move_Forward_PID,
},
},
[JOY_LEFT_DWON] = {
[MODE_DEFAULT] = {
[SUB_MODE_NULL] = Robot_Move_Backward,
[SUB_MODE_DEFAULT] = Robot_Move_Backward,
},
[MODE_VERTICAL_LEFT] = {
[SUB_MODE_NULL] = Robot_Move_Backward_PID,
[SUB_MODE_DEFAULT] = Robot_Move_Backward_PID,
},
[MODE_VERTICAL_RIGHT] = {
[SUB_MODE_NULL] = Robot_Move_Backward_PID,
[SUB_MODE_DEFAULT] = Robot_Move_Backward_PID,
},
},
[JOY_LEFT_LEFT] = {
[MODE_DEFAULT] = {
[SUB_MODE_NULL] = Robot_Move_Left,
[SUB_MODE_DEFAULT] = Robot_Move_Left,
},
[MODE_VERTICAL_LEFT] = {
[SUB_MODE_NULL] = Robot_Move_Left,
[SUB_MODE_DEFAULT] = Robot_Move_Left,
},
[MODE_VERTICAL_RIGHT] = {
[SUB_MODE_NULL] = Robot_Move_Left,
[SUB_MODE_DEFAULT] = Robot_Move_Left,
},
},
[JOY_LEFT_RIGHT] = {
[MODE_DEFAULT] = {
[SUB_MODE_NULL] = Robot_Move_Right,
[SUB_MODE_DEFAULT] = Robot_Move_Right,
},
[MODE_VERTICAL_LEFT] = {
[SUB_MODE_NULL] = Robot_Move_Right,
[SUB_MODE_DEFAULT] = Robot_Move_Right,
},
[MODE_VERTICAL_RIGHT] = {
[SUB_MODE_NULL] = Robot_Move_Right,
[SUB_MODE_DEFAULT] = Robot_Move_Right,
},
}
};
@ -462,61 +462,61 @@ const ActionFunc g_ActionTable[KEY_MAX][MODE_MAX][SUB_MODE_MAX] = {
const TKeyForest g_ActionTable = {
.E_Stop = {
{MODE_DEFAULT, SUB_MODE_NULL, E_Robot_Stop}
{MODE_DEFAULT, SUB_MODE_DEFAULT, E_Robot_Stop}
},
.SA_Up = {
{MODE_DEFAULT, SUB_MODE_NULL, NULL},
{MODE_VERTICAL_LEFT, SUB_MODE_NULL, Vertical_Lane_Change_From_Right_To_Left_UP_Control},
{MODE_VERTICAL_RIGHT, SUB_MODE_NULL, Vertical_Lane_Change_From_Left_To_Right_UP_Control}
{MODE_DEFAULT, SUB_MODE_DEFAULT, NULL},
{MODE_VERTICAL_LEFT, SUB_MODE_DEFAULT, Vertical_Lane_Change_From_Right_To_Left_UP_Control},
{MODE_VERTICAL_RIGHT, SUB_MODE_DEFAULT, Vertical_Lane_Change_From_Left_To_Right_UP_Control}
},
.SA_Down = {
{MODE_DEFAULT, SUB_MODE_NULL, NULL},
{MODE_VERTICAL_LEFT, SUB_MODE_NULL, Vertical_Lane_Change_From_Right_To_Left_Down_Control},
{MODE_VERTICAL_RIGHT, SUB_MODE_NULL, Vertical_Lane_Change_From_Left_To_Right_Down_Control}
{MODE_DEFAULT, SUB_MODE_DEFAULT, NULL},
{MODE_VERTICAL_LEFT, SUB_MODE_DEFAULT, Vertical_Lane_Change_From_Right_To_Left_Down_Control},
{MODE_VERTICAL_RIGHT, SUB_MODE_DEFAULT, Vertical_Lane_Change_From_Left_To_Right_Down_Control}
},
.SA_Default = {
{MODE_VERTICAL_LEFT, SUB_MODE_NULL, Lane_Change_State_Reset}
{MODE_VERTICAL_LEFT, SUB_MODE_DEFAULT, Lane_Change_State_Reset}
},
.SB_Up = {
{MODE_DEFAULT, SUB_MODE_NULL, Robot_Move_Forward},
{MODE_VERTICAL_LEFT, SUB_MODE_NULL, Robot_Move_Forward_PID}
{MODE_DEFAULT, SUB_MODE_DEFAULT, Robot_Move_Forward},
{MODE_VERTICAL_LEFT, SUB_MODE_DEFAULT, Robot_Move_Forward_PID}
},
.SB_Down = {
{MODE_DEFAULT, SUB_MODE_NULL, Robot_Move_Backward},
{MODE_VERTICAL_LEFT, SUB_MODE_NULL, Robot_Move_Backward_PID}
{MODE_DEFAULT, SUB_MODE_DEFAULT, Robot_Move_Backward},
{MODE_VERTICAL_LEFT, SUB_MODE_DEFAULT, Robot_Move_Backward_PID}
},
.SC_Up = {
{MODE_DEFAULT, SUB_MODE_NULL, Robot_Paint_ON},
{MODE_VERTICAL_LEFT, SUB_MODE_NULL, NULL},
{MODE_VERTICAL_RIGHT, SUB_MODE_NULL, NULL}
{MODE_DEFAULT, SUB_MODE_DEFAULT, Robot_Paint_ON},
{MODE_VERTICAL_LEFT, SUB_MODE_DEFAULT, NULL},
{MODE_VERTICAL_RIGHT, SUB_MODE_DEFAULT, NULL}
},
.SC_Down = {
{MODE_DEFAULT, SUB_MODE_NULL, Robot_Paint_OFF},
{MODE_VERTICAL_LEFT, SUB_MODE_NULL, NULL},
{MODE_VERTICAL_RIGHT, SUB_MODE_NULL, NULL}
{MODE_DEFAULT, SUB_MODE_DEFAULT, Robot_Paint_OFF},
{MODE_VERTICAL_LEFT, SUB_MODE_DEFAULT, NULL},
{MODE_VERTICAL_RIGHT, SUB_MODE_DEFAULT, NULL}
},
.SC_Default = {
{MODE_DEFAULT, SUB_MODE_NULL, Robot_Paint_OFF},
{MODE_VERTICAL_LEFT, SUB_MODE_NULL, NULL},
{MODE_VERTICAL_RIGHT, SUB_MODE_NULL, NULL}
{MODE_DEFAULT, SUB_MODE_DEFAULT, Robot_Paint_OFF},
{MODE_VERTICAL_LEFT, SUB_MODE_DEFAULT, NULL},
{MODE_VERTICAL_RIGHT, SUB_MODE_DEFAULT, NULL}
},
.Joy_Default = {
{MODE_DEFAULT, SUB_MODE_NULL, Robot_Stop},
{MODE_VERTICAL_LEFT, SUB_MODE_NULL, Robot_Stop_After}
{MODE_DEFAULT, SUB_MODE_DEFAULT, Robot_Stop},
{MODE_VERTICAL_LEFT, SUB_MODE_DEFAULT, Robot_Stop_After}
},
.Joy_Left_Up = {
{MODE_DEFAULT, SUB_MODE_NULL, Robot_Move_Forward},
{MODE_VERTICAL_LEFT, SUB_MODE_NULL, Robot_Move_Forward_PID}
{MODE_DEFAULT, SUB_MODE_DEFAULT, Robot_Move_Forward},
{MODE_VERTICAL_LEFT, SUB_MODE_DEFAULT, Robot_Move_Forward_PID}
},
.Joy_Left_Down = {
{MODE_DEFAULT, SUB_MODE_NULL, Robot_Move_Backward},
{MODE_VERTICAL_LEFT, SUB_MODE_NULL, Robot_Move_Backward_PID}
{MODE_DEFAULT, SUB_MODE_DEFAULT, Robot_Move_Backward},
{MODE_VERTICAL_LEFT, SUB_MODE_DEFAULT, Robot_Move_Backward_PID}
},
.Joy_Left_Left = {
{MODE_DEFAULT, SUB_MODE_NULL, Robot_Move_Left}
{MODE_DEFAULT, SUB_MODE_DEFAULT, Robot_Move_Left}
},
.Joy_Left_Right = {
{MODE_DEFAULT, SUB_MODE_NULL, Robot_Move_Right}
{MODE_DEFAULT, SUB_MODE_DEFAULT, Robot_Move_Right}
}
};
#endif
@ -961,7 +961,7 @@ static void Custom_ModuleHandler(const Msg_t *pstMsg)
Move_Halt_AngleError();
MK32_Key_Func(&g_stMK32, g_stPV.RunMode, SUB_MODE_NULL);
MK32_Key_Func(&g_stMK32, g_stPV.RunMode, SUB_MODE_DEFAULT);
break;
}
case CMD_SHOW_INFO:

Loading…
Cancel
Save