ESP32 ESP-IDF console 组件
它包含了开发基于串口的交互式控制终端所需要的所有模块,主要支持以下功能:
行编辑,由 linenoise 库具体实现,它支持处理退格键和方向键,支持回看命令的历史记录,支持命令的自动补全和参数提示。
将命令行拆分为参数列表。
参数解析,由 argtable3 库具体实现,该库提供解析 GNU 样式的命令行参数的 API。
用于注册和调度命令的函数。
帮助创建 REPL (Read-Evaluate-Print-Loop) 环境的函数。
配置
Linenoise 库不需要显式地初始化,但是在调用行编辑函数之前,可能需要对某些配置的默认值稍作修改。
linenoiseClearScreen()
使用转义字符清除终端屏幕,并将光标定位在左上角。
linenoiseSetMultiLine()
在单行和多行编辑模式之间进行切换。单行模式下,如果命令的长度超过终端的宽度,会在行内滚动命令文本以显示文本的结尾,在这种情况下,文本的开头部分会被隐藏。单行模式在每次按下按键时发送给屏幕刷新的数据比较少,与多行模式相比更不容易发生故障。另一方面,在单行模式下编辑命令和复制命令将变得更加困难。默认情况下开启的是单行模式。
linenoiseAllowEmpty()
设置 linenoise 库收到空行的解析行为,设置为 true 时返回长度为零的字符串 ("") ,设置为 false 时返回 NULL。默认情况下,将返回长度为零的字符串。
linenoiseSetMaxLineLen()
设置 linenoise 库中每行的最大长度,默认长度为 4096 字节,可以通过更新该默认值来优化 RAM 内存的使用。
主循环
linenoise()
在大多数情况下,控制台应用程序都会具有相同的工作形式——在某个循环中不断读取输入的内容,然后解析再处理。 linenoise() 是专门用来获取用户按键输入的函数,当回车键被按下后会便返回完整的一行内容。因此可以用它来完成前面循环中的“读取”任务。
linenoiseFree()
必须调用此函数才能释放从 linenoise() 函数获取的命令行缓冲区。
提示和补全
line