代码拉取完成,页面将自动刷新
同步操作将从 阿彪开源/通用命令行接口 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
-------------------------------------------------
[GM CLI] > help test
-------------------------------------------------
-------------------------------------------------
-------------------------------------------------
- 带有命令导出功能,修改添加命令无需修改命令行相关代码,只需要导出新的命令即可
- 支持命令重命名,可以使用英文符号作为命令名来精简指令
- 带有历史记录功能,用户可以配置记录条数
- 带有命令自动补全功能,输入时更加的方便快捷
- 代码占用少,执行效率高,无其他模块依赖
- 采用回调机制,用户只需要集中精力在命令的实现上,无需自己解析命令
- 带有系统默认命令,可以快速的查询和测试CLI系统
- 字符的发送采用注册机制,用户可以进行重定向和文件操作,完全自定义
- 字符的接收完全用户决定,可以进行文件操作或流读取,可以轻松实现脚本解释器的功能
- 支持静态命令注册功能,只需要用户定义一个全局数组即可
- 支持多种编译器自动识别生成相应的命令导出宏
- 添加参数的自动补全功能
- 添加模仿Linux命令的可选参数和复合参数等功能
- 添加函数执行指令,便于代码调试
gm_cli.c
文件到工程,具体添加方式不同编译器不同gm_cli.h
所在的目录到编译头文件包含目录,具体添加方式不同编译器不同/* 静态命令表 */
const gm_cli_cmd_t gm_cli_static_cmds[] =
{
{
.name = "help",
.usage = "help [cmd-name] -- list the command and usage",
.cb = gm_cli_internal_cmd_help,
.link = NULL,
},
{
.name = "?",
.usage = NULL,
.cb = NULL,
.link = &gm_cli_static_cmds[0],
},
{
.name = "history",
.usage = "history [num] -- list the history command",
.cb = gm_cli_internal_cmd_history,
.link = NULL,
},
{
.name = "test",
.usage = "test [args] -- test the cli",
.cb = gm_cli_internal_cmd_test,
.link = NULL,
},
/* 下面添加自己的命令 */
{
.name = "xxx",
.usage = "xxx",
.cb = xxx_cb,
.link = xxx,
},
......
/* 数组末尾一定要以下面的元素结束 */
{
.name = NULL,
.usage = NULL,
.cb = NULL,
.link = NULL,
},
};
/* 初始化CLI管理器 */
gm_cli_mgr_init();
/* 注册输出驱动 */
gm_cli_set_out_char_cb((gm_cli_out_char_cb_t*)your_out_char_cb);
/* 设置提示符 */
gm_cli_set_cmd_prompt("[your_prompt] > ");
/* 启动CLI */
gm_cli_start();
const char str[] = "test 1 2 3\n";
unsigned int len = (unsigned int)strlen(str);
unsigned int i;
for (i = 0; i < len; i++)
{
gm_cli_parse_char(str[i]);
}
如果输出如下表示CLI正常
cmd -> test
arg1 -> 1
arg2 -> 2
arg3 -> 3
/* 键盘检测或数据队列查询等 */
if (_kbhit())
{
/* 读取字符 */
ch = _getch();
/* 解析字符 */
gm_cli_parse_char((char)ch);
}
test
或help
指令检测CLI是否正常int command_callback(int argc, char* argv[]);
argc - 表示输入的命令行命令和参数的总个数,含有命令本身,所以此参数最小值为1
argv - 表示命令参数的内容,采用指针存放,类型都是char
型的指针即字符串地址
GM_CLI_CMD_EXPORT(command_name, "command_usage_string", command_callback);
如果需要给这个命令设置别名,可在上面的指令后再使用以下命令(可重复使用设置多个别名)
GM_CLI_CMD_ALIAS(command_name, "command_alias");
command_name - 命令的名字,这个名字就是命令的识别名,输入搜索的就是这个名字(不要加双引号,不能有空格等其它特殊字符)
command_usage_string - 命令的使用说明字符串,用于help
命令给用户提示使用说明(需要加双引号,可以包含特殊字符,控制字符注意转义)
command_callback - 命令回调函数
command_alias - 命令别名字符串(需要加双引号,可以包含特殊字符,但不能包含空格和控制字符,必须是可显示字符)
help command_name
查看,也可直接使用help
查看系统当前支持的所有命令命令名 | 别名 | 使用说明 | 作用 |
---|---|---|---|
help | ? | help | 列出全部已注册的命令 |
help [cmd] | 列出指定命令的详细说明 | ||
history | 无 | history | 查看全部存储的历史记录 |
history [num] | 查看指定数量的历史记录 | ||
test | 无 | test [...] | 测试CLI系统是否正常,后接可变长任意参数 |
分支 | 描述 |
---|---|
master |
初版命令行,支持VS/IAR/KEIL编译器,采用驼峰命名法,不支持静态命令注册,下一版会和develop 分支合并 |
develop |
开发中命令行,主线版本,采用linux的全小写命名法,支持更多的编译器,支持静态命令注册,支持和计划支持更多新特性 |
static-reg-cmd |
master 分支上添加静态命令注册方式,由于master 分支之后会被develop 分支合并取代,所以独立一个分支,提供给功能需求较少和容量有限的单片机使用 |
用户名 | 开源地址首页 | 贡献内容 |
---|---|---|
徐煜 | https://gitee.com/dog_who_loves_cat_mint |
static-reg-cmd 分支添加命令静态注册方式 |
大家有什么建议或疑问请邮件或直接在仓库进行留言,谢谢大家的参与和代码的共同维护,也希望大家将自己的优秀的计划加入代码中并发出pull request
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。