1
0
mirror of https://github.com/NevermindZZT/letter-shell.git synced 2025-01-21 10:02:54 +08:00

Update README.md

增加函数定义说明
This commit is contained in:
Letter 2019-03-10 12:55:39 +08:00
parent 18dd296351
commit 3e021d0fd6

View File

@ -58,11 +58,76 @@ shellInit(&shell);
- 定义宏```SHELL_GET_TICK()```为获取系统tick函数使能tab双击操作用户长帮助补全
6. 配置宏
shell.h文件中包含几个用于配置shell的宏在使用前需要根据需要进行配置
| 宏 | 意义 |
| -------------------------- | ------------------------------ |
| SHELL_USING_TASK | 是否使用默认shell任务 |
| SHELL_USING_CMD_EXPORT | 是否使用命令导出方式 |
| SHELL_TASK_WHILE | 是否使用默认shell任务while循环 |
| SHELL_AUTO_PRASE | 是否使用shell参数自动解析 |
| SHELL_LONG_HELP | 是否使用shell长帮助 |
| SHELL_COMMAND_MAX_LENGTH | shell命令最大长度 |
| SHELL_PARAMETER_MAX_NUMBER | shell命令参数最大数量 |
| SHELL_HISTORY_MAX_NUMBER | 历史命令记录数量 |
| SHELL_DOUBLE_CLICK_TIME | 双击间隔(ms) |
| SHELL_GET_TICK() | 获取系统时间(ms) |
| SHELL_DEFAULT_COMMAND | shell默认提示符 |
## 使用方式
### 函数定义
letter shell 支持两种形式的函数定义方式形如main函数定义的```func(int argc, char *agrv[])```以及形如普通C函数的定义```func(int i, char *str, ...)```,这两种方式目前不可共存,只能选择其中的一种,通过宏```SHELL_AUTO_PRASE```选择
#### main函数形式
使用此方式,一个函数定义的例子如下:
```C
func(int argc, char *agrv[])
{
printf("%dparameter(s)\r\n", argc);
for (char i = 1; i < argc; i++)
{
printf("%s\r\n", argv[i]);
}
}
SHELL_EXPORT_CMD(func, func, test)
```
终端调用
```
letter>>func "hello world"
2 parameter(s)
hello world
```
#### 普通C函数形式
使用此方式shell会自动对参数进行转化处理目前支持二进制八进制十进制十六进制整形字符字符串的自动处理如果需要其他类型的参数请使用字符串的方式作为参数自行进行处理例子如下
```C
func(int i, char ch, char *str)
{
printf("input int: %d, char: %c, string: %s\r\n", i, ch, str);
}
SHELL_EXPORT_CMD(func, func, test)
```
终端调用
```
letter>>func 666 'A' "hello world"
input int: 666, char: A, string: hello world
```
### 命令定义
letter支持使用命令导出方式和命令表方式进行命令的添加定义通过宏```SHELL_USING_CMD_EXPORT```控制
letter shell 支持使用命令导出方式和命令表方式进行命令的添加,定义,通过宏```SHELL_USING_CMD_EXPORT```控制
命令导出方式支持keilIAR(未测试)以及GCC