📄 macmove.c
字号:
/**********************************************************************
**
** Copyright (c) 2008 -- Michael.All right received.
**
** PROJECT: Tangtang's Graduation Design
**
** PURPOSE: Motor drive wrapper.
**
** DATE : 05/18/2008
**
** AUTHOR: Michael
**
** SCHOOL: CUIT
**
** FILENAME: macmove.c
**
**********************************************************************/
/* Include files. */
#include "macmove.h"
/* Macro constant definitions. */
/* Type definitions. */
/* Local function declarations. */
/* Macro API definitions. */
/* Global variable definitions. */
/**********************************************************************
** Function Name: MacMoveStop()
** Purpose:
** Machine operat wraper -- Machine stop move.
** Parameters:
** None
** Return:
** OS_RET_SUCCESS - operat sucessful.
** OS_RET_FAILED - operat failed.
** OS_RET_INVALID_ARG - invalid argument.
** Notes:
** None.
**********************************************************************/
eOsReturn
MacMoveStop()
{
eMotor moterL, moterR;
eMotorOptType optType;
int32 arg;
eOsReturn retL,retR;
ENTRY_FUN();
moterL = E_MOTOR_LEFT;
moterR = E_MOTOR_RIGHT;
optType = E_MOTOR_OPT_TYPE_DISTANCE;
arg = MOVE_FOREVER;
retL = OS_RET_SUCCESS;
retR = OS_RET_SUCCESS;
/* Make left and right motor move forward forever. */
retL = MotorStop(moterL, optType, arg);
retR = MotorStop(moterR, optType, arg);
if(retL != OS_RET_SUCCESS)
{
TRACE_LOG("Call MotorStop() Failed return: %d \n",retL);
return(retL);
}
if(retR != OS_RET_SUCCESS)
{
TRACE_LOG("Call MotorStop() Failed return: %d \n",retR);
return(retR);
}
EXIT_FUN();
return(OS_RET_SUCCESS);
} /* End of MacMoveStop */
/**********************************************************************
** Function Name: MacMoveForward()
** Purpose:
** Machine operat wraper -- Machine move forward.
** Parameters:
** None
** Return:
** OS_RET_SUCCESS - operat sucessful.
** OS_RET_FAILED - operat failed.
** OS_RET_INVALID_ARG - invalid argument.
** Notes:
** None.
**********************************************************************/
eOsReturn
MacMoveForward()
{
eMotor moterL, moterR;
eMotorOptType optType;
eMotorRunType runType;
int32 arg;
eOsReturn retL,retR;
ENTRY_FUN();
moterL = E_MOTOR_LEFT;
moterR = E_MOTOR_RIGHT;
optType = E_MOTOR_OPT_TYPE_DISTANCE;
runType = E_MOTOR_RUN_TYPE_MOVE_FORWARD;
arg = MOVE_FOREVER;
retL = OS_RET_SUCCESS;
retR = OS_RET_SUCCESS;
/* Make left and right motor move forward forever. */
retL = MotorRun(moterL, optType, runType, arg);
retR = MotorRun(moterR, optType, runType, arg);
if(retL != OS_RET_SUCCESS)
{
TRACE_LOG("Call MotorRun() Failed return: %d \n",retL);
return(retL);
}
if(retR != OS_RET_SUCCESS)
{
TRACE_LOG("Call MotorRun() Failed return: %d \n",retR);
return(retR);
}
EXIT_FUN();
return(OS_RET_SUCCESS);
} /* End of MacMoveForward */
/**********************************************************************
** Function Name: MacMoveBackward()
** Purpose:
** Machine operat wraper -- Machine move backward.
** Parameters:
** None
** Return:
** OS_RET_SUCCESS - operat sucessful.
** OS_RET_FAILED - operat failed.
** OS_RET_INVALID_ARG - invalid argument.
** Notes:
** None.
**********************************************************************/
eOsReturn
MacMoveBackward()
{
eMotor moterL, moterR;
eMotorOptType optType;
eMotorRunType runType;
int32 arg;
eOsReturn retL,retR;
ENTRY_FUN();
moterL = E_MOTOR_LEFT;
moterR = E_MOTOR_RIGHT;
optType = E_MOTOR_OPT_TYPE_DISTANCE;
runType = E_MOTOR_RUN_TYPE_MOVE_BACKWARD;
arg = MOVE_FOREVER;
retL = OS_RET_SUCCESS;
retR = OS_RET_SUCCESS;
/* Make left and right motor move backward forever. */
retL = MotorRun(moterL, optType, runType, arg);
retR = MotorRun(moterR, optType, runType, arg);
if(retL != OS_RET_SUCCESS)
{
TRACE_LOG("Call MotorRun() Failed return: %d \n",retL);
return(retL);
}
if(retR != OS_RET_SUCCESS)
{
TRACE_LOG("Call MotorRun() Failed return: %d \n",retR);
return(retR);
}
EXIT_FUN();
return(OS_RET_SUCCESS);
} /* End of MacMoveBackward */
/**********************************************************************
** Function Name: MacMoveTurnLeft()
** Purpose:
** Machine operat wraper -- Machine turn left "angle".
** Parameters:
** uint32 angle - the angle of turn left.
** Return:
** OS_RET_SUCCESS - operat sucessful.
** OS_RET_FAILED - operat failed.
** OS_RET_INVALID_ARG - invalid argument.
** Notes:
** None.
**********************************************************************/
eOsReturn
MacMoveTurnLeft(double angle)
{
eMotor moterL;
eMotorOptType optType;
eMotorRunType runTypeL1, runTypeL2;
int32 arg1, arg2;
eOsReturn retL,retR;
ENTRY_FUN();
moterL = E_MOTOR_LEFT;
optType = E_MOTOR_OPT_TYPE_DISTANCE;
runTypeL1 = E_MOTOR_RUN_TYPE_MOVE_BACKWARD;
runTypeL2 = E_MOTOR_RUN_TYPE_MOVE_FORWARD;
retL = OS_RET_SUCCESS;
retR = OS_RET_SUCCESS;
arg1 = Angle2Distance(angle);
arg2 = MOVE_FOREVER;
/* Make left motor move backward "arg" distance after that It move forward at once. */
retL = MotorRun(moterL, optType, runTypeL1, arg1);
if(retL != OS_RET_SUCCESS)
{
TRACE_LOG("Call MotorRun() Failed return: %d \n",retL);
return(retL);
}
retL = MotorRun(moterL, optType, runTypeL2, arg2);
if(retL != OS_RET_SUCCESS)
{
TRACE_LOG("Call MotorRun() Failed return: %d \n",retL);
return(retL);
}
EXIT_FUN();
return(OS_RET_SUCCESS);
} /* End of MacMoveTurnLeft */
/**********************************************************************
** Function Name: MacMoveTurnRight()
** Purpose:
** Machine operat wraper -- Machine turn right "angle".
** Parameters:
** uint32 angle - the angle of turn right.
** Return:
** OS_RET_SUCCESS - operat sucessful.
** OS_RET_FAILED - operat failed.
** OS_RET_INVALID_ARG - invalid argument.
** Notes:
** None.
**********************************************************************/
eOsReturn
MacMoveTurnRight(double angle)
{
eMotor moterL;
eMotorOptType optType;
eMotorRunType runTypeL1, runTypeL2;
int32 arg1, arg2;
eOsReturn retL,retR;
ENTRY_FUN();
moterL = E_MOTOR_RIGHT;
optType = E_MOTOR_OPT_TYPE_DISTANCE;
runTypeL1 = E_MOTOR_RUN_TYPE_MOVE_BACKWARD;
runTypeL2 = E_MOTOR_RUN_TYPE_MOVE_FORWARD;
retL = OS_RET_SUCCESS;
retR = OS_RET_SUCCESS;
arg1 = Angle2Distance(angle);
arg2 = MOVE_FOREVER;
/* Make right motor move backward "arg" distance after that It move forward at once. */
retL = MotorRun(moterL, optType, runTypeL1, arg1);
if(retL != OS_RET_SUCCESS)
{
TRACE_LOG("Call MotorRun() Failed return: %d \n",retL);
return(retL);
}
retL = MotorRun(moterL, optType, runTypeL2, arg2);
if(retL != OS_RET_SUCCESS)
{
TRACE_LOG("Call MotorRun() Failed return: %d \n",retL);
return(retL);
}
EXIT_FUN();
return(OS_RET_SUCCESS);
} /* End of MacMoveTurnRight */
/**********************************************************************
** Function Name: Angle2Distance()
** Purpose:
** convert angle to distance.
** Parameters:
** double angle - the angle of turn left.
** Return:
** uint32 distance - the distance that wheel need to move.
** Notes:
** None.
**********************************************************************/
uint32
Angle2Distance(double angle)
{
uint32 distance;
distance = (angle * PI * (WHEEL_DISTANCE / 2)) / 180;
return(distance);
} /* End of Angle2Distance() */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -