|
|
|
@ -123,6 +123,15 @@ static void Custom_ModuleHandler(const Msg_t *pstMsg) |
|
|
|
RD_MEMCPY(&g_stMK32, pstMsg->m_aucData, sizeof(g_stMK32)); |
|
|
|
} |
|
|
|
|
|
|
|
// 急停
|
|
|
|
if (g_stMK32.CH8_SE == -1000 && g_stMK32.CH9_SF == -1000) |
|
|
|
{ |
|
|
|
MsgCenter_SendTo(MODULE_NAME_MOTOR, MOTOR_POWER_DISABLE, NULL, 0); |
|
|
|
MsgCenter_SendTo(MODULE_NAME_RBCORE, RBCORE_CMD_STOP_ALL, NULL, 0); |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
// 更新速度旋钮值
|
|
|
|
int iSpeedSelection = 3 * (g_stMK32.CH11_RD1 + 1000) / 200; |
|
|
|
int iVehicleSpeed = 1; |
|
|
|
if (iSpeedSelection > 0) |
|
|
|
@ -132,6 +141,7 @@ static void Custom_ModuleHandler(const Msg_t *pstMsg) |
|
|
|
g_stIV.RobotMoveSpeed = iVehicleSpeed; |
|
|
|
MsgCenter_SendTo(MODULE_NAME_RBCORE, RBCORE_GET_VEHICLE_SPEED, (void *)&iVehicleSpeed, sizeof(int)); |
|
|
|
|
|
|
|
// 开关喷枪
|
|
|
|
if (g_stMK32.CH6_SC == -1000) |
|
|
|
{ |
|
|
|
int paintstate = 0; |
|
|
|
@ -143,6 +153,22 @@ static void Custom_ModuleHandler(const Msg_t *pstMsg) |
|
|
|
MsgCenter_SendTo(MODULE_NAME_CUSTOM, CUSTOM_CMD_PAINTGUN, &paintstate, sizeof(int)); |
|
|
|
} |
|
|
|
|
|
|
|
// 根据模式判断换道(仅在竖直向左或向右生效)
|
|
|
|
if (g_stPV.RunMode == 2 || g_stPV.RunMode == 3) |
|
|
|
{ |
|
|
|
if (g_stMK32.CH4_SA == -1000) |
|
|
|
{ |
|
|
|
MsgCenter_SendTo(MODULE_NAME_RBCORE, RBCORE_CMD_MANUAL_TURNRIGHT, NULL, 0); |
|
|
|
break; |
|
|
|
} |
|
|
|
else if(g_stMK32.CH4_SA == 1000) |
|
|
|
{ |
|
|
|
MsgCenter_SendTo(MODULE_NAME_RBCORE, RBCORE_CMD_MANUAL_TURNLEFT, NULL, 0); |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 自动巡航
|
|
|
|
if (g_stMK32.CH5_SB == -1000) |
|
|
|
{ |
|
|
|
MsgCenter_SendTo(MODULE_NAME_RBCORE, RBCORE_CMD_MANUAL_FORWARD, NULL, 0); |
|
|
|
@ -154,22 +180,41 @@ static void Custom_ModuleHandler(const Msg_t *pstMsg) |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
// 【注意!!!】摇杆行程死区判断开始,除摇杆以外按键在上边都处理完,不然走不下去
|
|
|
|
if (abs(g_stMK32.CH2_LY_V) <= g_stCV.Joy_Sticker_Value_Allowance && abs(g_stMK32.CH3_LY_H) <= g_stCV.Joy_Sticker_Value_Allowance) |
|
|
|
{ |
|
|
|
MsgCenter_SendTo(MODULE_NAME_RBCORE, RBCORE_CMD_STOP_ALL, NULL, 0); |
|
|
|
break; |
|
|
|
} |
|
|
|
// 【注意!!!】摇杆行程死区判断结束,摇杆处理都放在这以后,否则行程死区可能不生效
|
|
|
|
|
|
|
|
// 摇杆角度死区判断
|
|
|
|
int angle = atan2(g_stMK32.CH2_LY_V, g_stMK32.CH3_LY_H) * 180 / M_PI; |
|
|
|
|
|
|
|
if (abs(angle - 90) <= g_stCV.Joy_Sticker_Angle_Allowance) |
|
|
|
{ |
|
|
|
if (g_stPV.RunMode == 1) |
|
|
|
{ |
|
|
|
MsgCenter_SendTo(MODULE_NAME_RBCORE, RBCORE_CMD_MANUAL_FORWARD, NULL, 0); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
int iMode[2] = {1, g_stCV.RobotUpAngleValue + g_stPV.Vertical_Calibration}; |
|
|
|
MsgCenter_SendTo(MODULE_NAME_RBCORE, RBCORE_CMD_VERTICAL, iMode, sizeof(iMode)); |
|
|
|
} |
|
|
|
} |
|
|
|
else if (abs(angle - (-90)) <= g_stCV.Joy_Sticker_Angle_Allowance) |
|
|
|
{ |
|
|
|
if (g_stPV.RunMode == 1) |
|
|
|
{ |
|
|
|
MsgCenter_SendTo(MODULE_NAME_RBCORE, RBCORE_CMD_MANUAL_BACKWARD, NULL, 0); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
int iMode[2] = {-1 , g_stCV.RobotUpAngleValue + g_stPV.Vertical_Calibration}; |
|
|
|
MsgCenter_SendTo(MODULE_NAME_RBCORE, RBCORE_CMD_VERTICAL, iMode, sizeof(iMode)); |
|
|
|
} |
|
|
|
} |
|
|
|
else if (abs(angle - 0) <= g_stCV.Joy_Sticker_Angle_Allowance) |
|
|
|
{ |
|
|
|
MsgCenter_SendTo(MODULE_NAME_RBCORE, RBCORE_CMD_MANUAL_TURNRIGHT, NULL, 0); |
|
|
|
|