⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 简单双马达玩具车驱动 包装~
💻 C
字号:
/**********************************************************************
**
**          Copyright (c) 2008 -- Michael.All right received.
**
**          PROJECT: Tangtang's Graduation Design
**
**          PURPOSE: Main function entry.
**
**          DATE : 05/18/2008
**
**          AUTHOR: Michael
**
**          SCHOOL: CUIT
**
**          FILENAME: main.c
**
**********************************************************************/


/* Include files. */

#include "main.h"

/* Macro constant definitions. */



/* Type definitions. */


/* Local function declarations. */

void Adjust();
void MacRun();
eMacMoveType ParseCoordinate();


/* Macro API definitions. */



/* Global variable definitions. */

eOsBool statFlag; /* Machine state flag. */
/* For avoid the angle between the vidicon  data and the fact. */
double angleDifference;
tMessage currentMessage; /* current message */


/**********************************************************************
**  Function Name: main
**  Purpose:
**    Main entry function.
**  Parameters:
**    argc - number of command line arguments.
**    argvPP - array of command line argument strings.
**  Return:
**    OS_RET_SUCCESS - run sucessful.
**  Notes:
**    None.
**********************************************************************/

eOsReturn
main(int argc, char* argv[])
{
    uint32 indexI;


    ENTRY_FUN();

    statFlag = OS_BOOL_TURE;
    runStatFlag = OS_BOOL_FAIL;

    /* Adjust the machine. */
    Adjust();
    while(statFlag)
    {
        MacRun();
    }

    EXIT_FUN();

    return(OS_RET_SUCCESS);

} /* End of main() */



/**********************************************************************
**  Function Name: Adjust
**  Purpose:
**    Ajust the machine.
**  Parameters:
**    None.
**  Return:
**    None.
**  Notes:
**    None.
**********************************************************************/

void
Adjust()
{

    ENTRY_FUN();

    EXIT_FUN();

} /* End of Adjust() */


/**********************************************************************
**  Function Name: MacRun
**  Purpose:
**    Run the machine.
**  Parameters:
**    None.
**  Return:
**    None.
**  Notes:
**    None.
**********************************************************************/

void
MacRun()
{

    eMotorOptType optType;
    eMotorRunType runType;
    uint32 optParameter;
    eMacMoveType macMoveType;
    eOsReturn ret;


    ENTRY_FUN();

    if(currentMessage.found)
    {
        /* Parse current coordinate of the message. */
        macMoveType = ParseCoordinate();

        switch(macMoveType)
        {
            case E_MAC_MOVE_TYPE_FORWARD:
                ret = MacMoveForward();
                if(OS_RET_SUCCESS != ret)
                {
                    TRACE_LOG("Call MacMoveForward() Faild ret %d\n",ret);
                }
                break;

            case E_MAC_MOVE_TYPE_BACKWARD:
                ret = MacMoveBackward();
                if(OS_RET_SUCCESS != ret)
                {
                    TRACE_LOG("Call MacMoveBackward() Faild ret %d\n",ret);
                }
                break;

            case E_MAC_MOVE_TYPE_TURN_LEFT:
                ret = MacMoveTurnLeft(currentMessage.coordinate.angle);
                if(OS_RET_SUCCESS != ret)
                {
                    TRACE_LOG("Call MacMoveTurnLeft() Faild ret %d\n",ret);
                }
                break;

            case E_MAC_MOVE_TYPE_TURN_RIGHT:
                ret = MacMoveTurnRight(currentMessage.coordinate.angle);
                if(OS_RET_SUCCESS != ret)
                {
                    TRACE_LOG("Call MacMoveTurnRight() Faild ret %d\n",ret);
                }
                break;

            default:
                TRACE_LOG("Call ParseCoordinate() return wront type %d\n",
                  macMoveType);
                break;
        }

    }
    else
    {
        ret = MacMoveStop();
        if(OS_RET_SUCCESS != ret)
        {
            TRACE_LOG("Call MacMoveStop() Faild ret %d\n",ret);
        }
        ret = MacMoveTurnLeft(90);
        if(OS_RET_SUCCESS != ret)
        {
            TRACE_LOG("Call MacMoveTurnLeft() Faild ret %d\n",ret);
        }
    }

    EXIT_FUN();

} /* End of MacRun() */


/**********************************************************************
**  Function Name: ParseCoordinate
**  Purpose:
**    Ajust the machine.
**  Parameters:
**    None.
**  Return:
**    eMacMoveType - machine move type(forward,backward,turn_left,turn_right).
**  Notes:
**    None.
**********************************************************************/

eMacMoveType
ParseCoordinate()
{

    eMacMoveType type = E_MAC_MOVE_TYPE_ERROR;
    double angle = 0;


    ENTRY_FUN();

    if(currentMessage.coordinate.distance <= SPECIFY_DISTANCE)
    {
        type = E_MAC_MOVE_TYPE_BACKWARD;
    }
    else
    {
        /* Fact angle */
        angle = currentMessage.coordinate.angle - angleDifference;
        currentMessage.coordinate.angle = angle;
        if (angle > 0)
        {
            type = E_MAC_MOVE_TYPE_TURN_LEFT;
        }
        else if (angle < 0)
        {
            type = E_MAC_MOVE_TYPE_TURN_RIGHT;
        }
        else
        {
            type = E_MAC_MOVE_TYPE_FORWARD;
        }
    }

    EXIT_FUN();

    return(type);

} /* End of ParseCoordinate() */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -