2. ESP32 移植命令行工具 xcmd(类ssh)

编程入门 行业动态 更新时间:2024-10-11 03:25:55

2. ESP32 移植<a href=https://www.elefans.com/category/jswz/34/1771327.html style=命令行工具 xcmd(类ssh)"/>

2. ESP32 移植命令行工具 xcmd(类ssh)

1.简介

xcmd是一款单片机命令行工具,移植十分方便,并且对flash与ram占用很小,旨在为单片机提供一个能够快速搭建且占用资源很小的命令行工具,可以大大加快单片机程序调试工作,它有一下几个优点。

  1. 移植十分简单
  2. 资源占用很小
  3. 支持历史记录
  4. 支持命令自动补全
  5. 支持注册快捷键
  6. 支持 xcmd_cmd_register()/xcmd_key_register方法注册命令或按键
  7. 支持 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)

本文发布于:2024-02-27 00:31:25,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1704556.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:命令行   工具   xcmd   ssh

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!