如何在FreeRTOS-Plus-CLI中添加一个自己的命令行

根据上一篇添加完成后,下面就是添加一个自己的命令行。其实添加一个命令行格式很简单,就是按照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 );

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-08 02:15:16

如何在FreeRTOS-Plus-CLI中添加一个自己的命令行的相关文章

如何在Microsoft Edge浏览器中添加一个Hello World插件

注:本文提到的代码示例下载地址> How to add a Hello World extension to Microsoft Edge Microsoft Edge 随着Win 10一起推出,是微软现在主推的浏览器.Edge 相比较于IE, 有更强的交互性,安全性,提供了更好的用户体验.而且这次Edge浏览器也开始支持浏览器插件喽. Edge 上的插件跟其他Chrome, FireFox等浏览器上的插件类似.但其API还在开发当中,截止到目前,已经可以支持大部分的API了.如果想要看具体的A

CAD技巧,如何在CAD中添加一个多行文本?

CAD技巧,如何在CAD中添加一个多行文本?在编辑CAD图纸的过程能够为了更加方便快捷建筑设计师们都会借助CAD编辑器来绘制图形,但是一张CAD图纸中的内容太多,在有的地方需要给CAD图纸进行一些标注,以便更好的查看,但是如何在CAD中添加一个多行文本?小伙伴们知道要怎么来操作吗?下面小编就利用迅捷CAD编辑器标准版来教教大家如何在CAD中添加一个多行文本?想要了解的朋友就一起来看看吧! 使用第一步:在电脑桌面中没有下载安装迅捷CAD编辑器的小伙伴们,在电脑中任意的打开一个浏览器,在浏览器的搜索

如何在RCP程序中添加一个banner栏

前言:这段时间还算比较空闲,我准备把过去做过的有些形形色色,甚至有些奇怪的研究总结一下,也许刚好有人用的着也不一定,不枉为之抓耳挠腮的时光和浪费的电力.以前有个客户提出要在RCP程序中添加一个banner栏,研究了很久才搞定.代码是基于eclipse4.3.2的. 先看一下效果预览: 为了添加一个banner栏,我们必须重写RCP程序最外层的layout类,即TrimmedPartLayout.java.这个layout类是用来控制menu,toolbar等最基本的layout布局的.我们写一个

如何在ASP.NET Core中实现一个基础的身份认证

注:本文提到的代码示例下载地址> How to achieve a basic authorization in ASP.NET Core 如何在ASP.NET Core中实现一个基础的身份认证 ASP.NET终于可以跨平台了,但是不是我们常用的ASP.NET, 而是叫一个ASP.NET Core的新平台,他可以跨Windows, Linux, OS X等平台来部署你的web应用程序,你可以理解为,这个框架就是ASP.NET的下一个版本,相对于传统ASP.NET程序,它还是有一些不同的地方的,比

如何在ppt或word中添加高亮代码?

如何在ppt或word中添加高亮代码? 问题: 如何ppt中添加带有语法高亮的程序代码,就如同下面的形式(在ppt嵌入高亮代码,且可以编辑,带有行号) 详细的要求如下: 1.代码带有语法高亮. 2.结果是矢量图,也就是说可以随便缩小放大的,因此别拿直接对代码截图来忽悠我. 3.最好带有行号. 方法一: 下载软件SciTE,下载地址:http://www.fauskes.net/nb/syntaxms/ 这个软件是我从网上搜到的,外国人写的.效果如下: 不过要把带有语法高亮的格式拷贝到ppt里有点

Android系统中添加一个产品----图文详解

本文本着开源的精神介绍如何向一个Android系统中添加一个产品的整个过程,按照以下过程笔者有理由相信每个将要从事本行业的人都可以完成,其实添加一个产品并不难,难的是对其相关硬件的修改,好了废话不多说. 首先我们要创建一个属于自己产品的目录,这里以WY_device为例,以WY作为产品的名字. 首先从已经存在的产品中拷贝一个以产品的名字为名的.mk文件,修改为自己的.mk文件,在这里为WY.mk 对其进行如下的修改: 然后添加AndroidProducts.mk  这是添加产品的配置文件名路径,

101在检索框中添加一个书签按钮(扩展知识:在检索框中添加一个范围条)

效果如下: ViewController.h 1 #import <UIKit/UIKit.h> 2 3 @interface ViewController : UITableViewController<UISearchBarDelegate> 4 @property (strong, nonatomic) UISearchBar *searchBar; 5 @property (strong, nonatomic) NSMutableArray *mArrDataSourceO

动态数组,数组初始化,数组内存释放,向数组中添加一个元素,向数组中添加多个元素,数组打印,顺序查找,二分查找,查找数组并返回地址,冒泡排序,改变数组中某个元素的值,删除一个数值,删除所有,查找含有

 1定义接口: Num.h #ifndef_NUM_H_ #define_NUM_H_ #include<stdio.h> #include<stdlib.h> /************************************************************************/ /*数组的结构体类型                                                    */ /*******************

对类HelloWorld程序中添加一个MessageBox弹窗

对类HelloWorld程序中添加一个MessageBox弹窗 分析: 任一程序运行的时候都会加载kernel32.dll的,但MessageBoxA()这个API却是在user32.dll中的.所以在HelloWorld.exe中是没办法直接添加MessageBoxA()的调用. 不过好在有kernel32.dll,其中有两个API可以解决user32.dll没加载的问题,分别是LoadLibraryA(filename)和GetProcAddress(hModule, 函数名). 操作: 清