命令行工具 xcmd(类ssh)"/>
2. ESP32 移植命令行工具 xcmd(类ssh)
1.简介
xcmd是一款单片机命令行工具,移植十分方便,并且对flash与ram占用很小,旨在为单片机提供一个能够快速搭建且占用资源很小的命令行工具,可以大大加快单片机程序调试工作,它有一下几个优点。
- 移植十分简单
- 资源占用很小
- 支持历史记录
- 支持命令自动补全
- 支持注册快捷键
- 支持 xcmd_cmd_register()/xcmd_key_register方法注册命令或按键
- 支持 XCMD_EXPORT_CMD()/XCMD_EXPORT_KEY()方法直接导出命令或按键,不需要额外运行注册函数
2. 效果展示
3.开源路径
xcmd 已经有在esp32上移植的例子
.git
4. 编译xcmd自带的esp32例程
cd xcmd/example/esp_idf
idf.py build
编译好后下载到我们的esp32板子中,连接串口我们可以到xcmd的信息
此时我们按下tab键或者输入help,会打印如下信息
图中都是xcmd自带的一些命令;
4. 移植
xcmd 已经有在esp32上移植的例子了,我们就来分析一下xcmd在esp32上如何移植;移植的代码主要时main.c中:
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include "xcmd.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "test.h"int cmd_get_char(unsigned char *ch) #给xcmd提供esp32的输出接口
{*ch = getc(stdin);return 1;
}int cmd_put_char(unsigned char ch) #给xcmd提供esp32的输出接口
{putchar(ch);return 1;
}void app_main(void)
{xcmd_init(cmd_get_char, cmd_put_char); #将输入、输出接口注册给xcmdtest_cmd_init(); #这个接口中提供了一些测试命令test_keys_init(); #这个接口中提供了部分键盘操作接口while(1){xcmd_task(); #xcmd执行接口vTaskDelay(pdMS_TO_TICKS(10));}
}
5. 注册我们自己命令
移植xcmd的目的就是增加我们命令,方便我们调试设备;接下来就看看如何添加命令:
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include "xcmd.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "test.h"int cmd_get_char(unsigned char *ch)
{*ch = getc(stdin);return 1;
}int cmd_put_char(unsigned char ch)
{putchar(ch);return 1;
}static int test1(int argc, char* argv[]) //增加测试命令test1 的处理函数
{xcmd_print(TX_GREEN "test1 txt_color = GREEN \r\n" TX_DEF); //打印绿色字体return 0;
}static int test2(int argc, char* argv[]) //增加测试命令test2 的处理函数
{xcmd_print(TX_RED "test2 txt_color = RED \r\n" TX_DEF); //打印红色字体return 0;
}static xcmd_t tcmds[] = //将命令 和 处理函数关联起来
{{"test1", test1, "print hello 1", NULL},{"test2", test2, "print hello 1", NULL},
};void app_main(void)
{xcmd_init(cmd_get_char, cmd_put_char);test_cmd_init();test_keys_init();xcmd_cmd_register(tcmds, sizeof(tcmds)/sizeof(xcmd_t)); //将命令注册到 xcmd 中while(1){xcmd_task();vTaskDelay(pdMS_TO_TICKS(10));}
}
编译下载到板子后的串口效果:
展示命令执行效果
更多推荐
2. ESP32 移植命令行工具 xcmd(类ssh)
发布评论