1 Star 0 Fork 2

hife / uecli

forked from embedded-lib / uecli 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

特性

  • 命令补全:输入部分命令字符并按下TAB按键,将显示所有以输入开头的匹配命令列表。如果只有一项匹配,则自动完成输入命令。
  • 命令历史记录:任何时候按键盘UPDOWN按键可浏览输入的命令行历史记录。
  • 子菜单支持:定义命令表时可以定义菜单类型的条目,该条目的指针指向另外一个子菜单命令列表。输入菜单项名称即可进入该子菜单中,同时提示符也显示菜单的分层结构。
  • 长帮助信息支持:使用help + "指定命令"可以浏览显示该命令的更详细的长帮助信息。
  • 可配置和和裁剪:可在配置文件中指定是否打开以上功能支持
  • 增加命令行捕捉功能。捕捉后所有的输入的数据直接传入到捕捉的命令函数中,直到退出捕捉模式为止。

演示

  • 命令补全: 命令补全
  • 历史记录: 历史记录
  • 子菜单: 子菜单

移植

移植接口

移植uecli需要定义以下几个底层函数:

  • uecli_port_init:初始化时会调用该函数用以初始化底层端口
  • uecli_port_out:程序发送数据时会调用该函数将字符串数据发送出去
  • uecli_port_in:程序通过该函数获取输入数据

win_uart_port.c为win平台中的底层驱动示例

裁剪配置

uecli_cfg.h文件中可以对uecli进行配置和裁剪:

#define UECLI_01_COLOR          (0)     ///< 支持颜色扩展
#define UECLI_01_IN_HOOK        (1)     ///< 输入钩子支持
#define UECLI_01_LONG_HELP      (1)     ///< 长帮助信息支持
#define UECLI_01_SUBMENU        (1)     ///< 子菜单支持
#define UECLI_01_HISTORY        (1)     ///< 命令历史支持
#define UECLI_01_COMPLETE       (1)     ///< 自动补全支持

其他配置

uecli_cfg.h文件中可以对提示符最大字符数、命令行最大字符数、最大子菜单层数等进行配置:

#define UECLI_CFG_STR_MAXLEN     (32)    ///< 输入命令行字符串最大长度
#define UECLI_CFG_TEMP_MAXLEN    (64)    ///< 内部处理临时字符串最大长度
#define UECLI_CFG_MAX_ARGNUM     (6)     ///< 输入命令行中最大分割参数数量
#define UECLI_CFG_MAX_POMPTLINE  (32)    ///< 提示符字符串最大长度
#define UECLI_CFG_HISTORY_COUNT  (8)     ///< 输入命令行历史最大数量
#define UECLI_CFG_STACK_COUNT    (8)     ///< 子菜单堆栈最大数量
#define UECLI_CFG_AUTOCOMP_NUM   (16)    ///< 自动补全最大显示数量

不同平台的换行符

win平台和linux平台中换行符的定义是不同的:

  • win平台中换行符为\n
  • linux平台中换行符为\r\n 可在uecli_cfg.h文件中对换行符进行定义

使用

定义命令表

使用时首先需要定义一个命令表:

const uecli_Handle handtalbe[]=
{
    UECLI_DECLARE_COMMAND(testfun,"test", "一个测试函数"),
    UECLI_DECLARE_COMMAND(testfun,"testprint", "一个测试函数"),
    UECLI_DECLARE_COMMAND(testfun,"printtest1", "测试函数1"),
    UECLI_DECLARE_COMMAND(testfun,"printtest", "测试函数"),
    UECLI_DECLARE_SUBMENU(handtalbe,"submenu", "子菜单测试"),
    UECLI_DECLARE_END()
};
  • UECLI_DECLARE_COMMAND:该项目为一个功能命令项,输入该命令将会调用相应的函数并执行。

示例:UECLI_DECLARE_COMMAND(命令函数指针, 执行该命令输入的字符串, 描述信息, 可选的长帮助信息)

  • UECLI_DECLARE_SUBMENU:该项目为子菜单项,输入该命令将进入相应的子菜单。

示例:UECLI_DECLARE_SUBMENU(子菜单命令指针, 进入子菜单输入的字符串, 描述信息)

  • UECLI_ITEM_END:命令表定义结束

初始化

之后应调用uecli_Initialize来初始化命令表和其他内部数据,同时内部将会调用uecli_port_init函数来初始化底层接口。

处理接收的字符

对于接收到的每个字符,都调用uecli_ProcessRecChar函数来处理接收到的字符数据,当需要显示信息时,会调用uecli_port_out函数将打印数据传输出去。


uecli_Initialize(handtalbe); for (;;) { len = uecli_port_in(buff, 1024); /* 读取数据 */ uecli_ProcessRecChar(buff, len); }


空文件

简介

一个微型嵌入式命令行接口,支持包括命令完成提示、输入历史、子菜单支持等。使用C99特性编写。 展开 收起
C
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C
1
https://gitee.com/hife/uecli.git
git@gitee.com:hife/uecli.git
hife
uecli
uecli
master

搜索帮助