当前位置:网站首页>RT-Thread 添加 msh 命令

RT-Thread 添加 msh 命令

2022-06-23 09:41:00 小辉_Super

本文参考《RT-Thread编程手册》https://www.bookstack.cn/read/rtthread-manual-doc/10.6.md

如何添加命令

在使用 FinSH 时,系统提供了一些很实用的命令,比如:

在这里插入图片描述

其实我们也可以自己添加一些命令到 msh 中,方法如下:

MSH_CMD_EXPORT(command, desc);

command 是需要添加的命令(函数名),desc 是命令的描述。

简单测试

下面用一个简单的 my_hello 命令来做测试,在工程中添加如下代码:

void my_hello(void)
{
    
	rt_kprintf("hello world\n");
}

MSH_CMD_EXPORT(my_hello, msh cmd test);

在 msh 命令行上输入 help 命令,可以看到我们的 my_hello 命令已经添加到了命令列表之中:

在这里插入图片描述
输入 my_hello 命令,成功运行了 my_hello() 函数:

在这里插入图片描述

可变参数的命令

函数一般都是可以带参数的,msh 命令也可以带参数,并且 msh 还支持添加可变参数的命令,定义的格式为:

void my_cmd(int argc, char **argv)

同样,我们写一个简单的测试例子:(记得打开 MicroLIB)

#include <string.h>
#include <stdio.h>

void led_ctrl(int argc, char **argv)
{
    
	if(argc != 3)
	{
    
		rt_kprintf("正确格式:led_ctrl LEDx ON/OFF\n");
		return;
	}
	
	if(!strcmp(argv[1] , "LED0"))
	{
    
		if(!strcmp(argv[2] , "ON"))
		{
    
			rt_kprintf("led0 on!\n");
		}
		else if(!strcmp(argv[2] , "OFF"))
		{
    
			rt_kprintf("led0 off!\n");
		}
	}
	else if(!strcmp(argv[1] , "LED1"))
	{
    
		if(!strcmp(argv[2] , "ON"))
		{
    
			rt_kprintf("led1 on!\n");
		}
		else if(!strcmp(argv[2] , "OFF"))
		{
    
			rt_kprintf("led1 off!\n");
		}
	}
}

MSH_CMD_EXPORT(led_ctrl, "LEDx ON/OFF"); // 不加双引号,ON/OFF 会显示为1/0

测试结果:(参数不同,运行的内容也不同)

在这里插入图片描述

原网站

版权声明
本文为[小辉_Super]所创,转载请带上原文链接,感谢
https://xiaohuisuper.blog.csdn.net/article/details/125273058