根据上一篇添加完成后,下面就是添加一个自己的命令行。其实添加一个命令行格式很简单,就是按照demo中的数据格式添加一个结构体,然后在注册函数中注册就可以使用了。
第一步:添加自己的结构体
/* The structure that defines command line commands. A command line command
should be defined by declaring a const structure of this type. */
typedef struct xCOMMAND_LINE_INPUT
{
const char * const pcCommand; /* The command that causes pxCommandInterpreter to be executed. For example "help". Must be all lower case. */
const char * const pcHelpString; /* String that describes how to use the command. Should start with the command itself, and end with "\r\n". For example "help: Returns a list of all the commands\r\n". */
const pdCOMMAND_LINE_CALLBACK pxCommandInterpreter;
/* A pointer to the callback function that will return the output generated by the command. */
int8_t cExpectedNumberOfParameters; /* Commands expect a fixed number of parameters, which may be zero. */
} CLI_Command_Definition_t;
参考实际格式:
/* Structure that defines the "task-stats" command line command. This generates
a table that gives information on each task in the system. */
static const CLI_Command_Definition_t xTaskStats =
{
"task-stats", /* The command string to type. */
"\r\ntask-stats:\r\n Displays a table showing the state of each FreeRTOS task\r\n",
prvTaskStatsCommand, /* The function to run. */
0 /* No parameters are expected. */
};
于是按葫芦画瓢自己写一个自己的命令“whatbook”吧!如下:
static const CLI_Command_Definition_t xWhatbook =
{
"whatbook",
"\r\nwhatbook:\r\n Displays a string "I Love ZML!"\r\n",
prvWhatbookCommand, /* The function to run. */
0 /* No parameters are expected. */
};
第二步:实现上面数据结构后,然后写数据结构中的回调函数。
static BaseType_t prvWhatbookCommand( char *pcWriteBuffer, size_t xWriteBufferLen, const char *pcCommandString )
{
BaseType_t xReturn;
/* Remove compile time warnings about unused parameters, and check the
write buffer is not NULL. NOTE - for simplicity, this example assumes the
write buffer length is adequate, so does not check for buffer overflows. */
( void ) pcCommandString;
( void ) xWriteBufferLen;
configASSERT( pcWriteBuffer );
/* The first time the function is called after the command has been
entered just a header string is returned. */
sprintf( pcWriteBuffer, "I Love ZML!!!\r\n" );
xReturn = pdFALSE;
return xReturn;
}
第三步:注册数据结构。
FreeRTOS_CLIRegisterCommand( &xWhatbook );
版权声明:本文为博主原创文章,未经博主允许不得转载。