RT-Thread API参考手册
3.1.1
嵌入式实时操作系统
|
FinSH控制台接口 更多...
宏定义 | |
#define | FINSH_FUNCTION_EXPORT(name, desc) FINSH_FUNCTION_EXPORT_CMD(name, name, desc) |
自定义msh 命令 更多... | |
#define | FINSH_FUNCTION_EXPORT_ALIAS(name, alias, desc) FINSH_FUNCTION_EXPORT_CMD(name, alias, desc) |
自定义命令重命名 更多... | |
#define | MSH_CMD_EXPORT(command, desc) |
自定义C-Style 命令和变量 更多... | |
函数 | |
void | finsh_syscall_append (const char *name, syscall_func func) |
添加调用函数 更多... | |
void | finsh_sysvar_append (const char *name, uint8_t type, void *addr) |
添加环境变量 更多... | |
rt_uint32_t | finsh_get_prompt_mode (void) |
void | finsh_set_prompt_mode (rt_uint32_t prompt_mode) |
void | finsh_set_device (const char *device_name) |
设置finsh shell的输入设备 更多... | |
const char * | finsh_get_device () |
获取finsh shell的输入设备 更多... | |
void | finsh_set_echo (rt_uint32_t echo) |
设置回显模式 更多... | |
rt_uint32_t | finsh_get_echo () |
获取回显模式 更多... | |
FinSH控制台接口
FinSH是RT-Thread的命令行外壳(shell),提供一套供用户在命令行的操作接口,主要用于调试或查看系统信息。FinSH支持两种模式:
C语言表达式解释模式下,FinSH能够解析执行大部分C语言的表达式,并使用类似C语言的函数调用方式访问系统中的函数及全局变量,此外它也能够通过命令行方式创建变量。
在msh模式下,FinSH运行方式类似于dos/bash等传统shell。
在本章的最后一节宏选项中介绍如何配置FinSH,读者可以根据自己的喜好配置FinSH。
#define FINSH_FUNCTION_EXPORT | ( | name, | |
desc | |||
) | FINSH_FUNCTION_EXPORT_CMD(name, name, desc) |
自定义msh 命令
自定义的msh 命令,可以在msh 模式下被运行,将一个命令导出到msh 模式可以使用如下宏该接口。
name | 要导出的命令 |
desc | 导出命令的描述 |
#define FINSH_FUNCTION_EXPORT_ALIAS | ( | name, | |
alias, | |||
desc | |||
) | FINSH_FUNCTION_EXPORT_CMD(name, alias, desc) |
自定义命令重命名
FinSH 的函数名字长度有一定限制,它由finsh.h 中的宏定义FinSH_NAME_MAX 控制,默认 是16 字节,这意味着FinSH 命令长度不会超过16 字节。这里有个潜在的问题。当一个函数名长 度超过FinSH_NAME_MAX 时,使用FinSH_FUNCTION_EXPORT 导出这个函数到命令表中后, 在FinSH 符号表中看到完整的函数名,但是完整输入执行会出现null node 错误。这是因为虽然显 示了完整的函数名,但是实际上FinSH 中却保存了前16 字节作为命令,过多的输入会导致无法正 确找到命令,这时就可以使用FinSH_FUNCTION_EXPORT_ALIAS 来对导出的命令进行重命名。
name | 要导出的命令 |
alias | 导出到FinSH 时显示的名字 |
desc | 导出命令的描述 |
#define MSH_CMD_EXPORT | ( | command, | |
desc | |||
) |
自定义C-Style 命令和变量
该接口可以将自定义命令导出到C-Style 模式。
command | 要导出的命令 |
desc | 导出命令的描述 |
void finsh_syscall_append | ( | const char * | name, |
syscall_func | func | ||
) |
添加调用函数
该函数将添加一个系统调用到FinSH的运行环境中去。
name | 系统调用的名称 |
func | 系统调用的函数指针 |
void finsh_sysvar_append | ( | const char * | name, |
uint8_t | type, | ||
void * | addr | ||
) |
添加环境变量
该函数将添加一个系统变量到FinSH的运行环境中去。
name | 系统变量的名称 |
type | 系统变量的数据类型 |
addr | 系统变量的地址 |
rt_uint32_t finsh_get_prompt_mode | ( | void | ) |
调用此函数可以获取finsh shell的提示模式。
void finsh_set_prompt_mode | ( | rt_uint32_t | prompt_mode | ) |
可以通过调用此函数设置finsh shell的提示模式。
参数0禁用提示模式,其他值启用提示模式。
prompt_mode | 提示模式 |
void finsh_set_device | ( | const char * | device_name | ) |
设置finsh shell的输入设备
device_name | 新的输入设备的名称 |
const char* finsh_get_device | ( | void | ) |
获取finsh shell的输入设备
该函数将返回当前finsh shell所使用的输入设备。
void finsh_set_echo | ( | rt_uint32_t | echo | ) |
设置回显模式
该函数可以设置finsh shell的回显模式。
FINSH_OPTION_ECHO=0x01 时为回显模式, 其他值为不回显模式。
echo | 回显模式 |
rt_uint32_t finsh_get_echo | ( | void | ) |
获取回显模式
该函数可以获取finsh shell是否工作在回显模式。