我需要在将通过虚拟串行端口进行通信的微 Controller 上编写一个非常基本的命令解释器。在我继续编写我自己的版本之前,我想知道是否有人知道任何用于非常简单的、类似 shell 的文本处理的库。我想要 shell 中的标准功能,例如接收到的文本仅在用户输入新行后可用,按退格键删除队列中的最后一个字符而不是在队列中添加另一个字符,诸如此类.
有什么想法吗?
谢谢
最佳答案
为了在微 Controller 中实现一个真正简单的带有行缓冲的“shell”(行缓冲意味着仅在“输入”或“\n”之后处理),我会做这样的事情(在主循环的中间:
char * p = my_read_buffer; //this is in the initialization, rather than the main loop
if (byte_from_my_uart_avaliable()) {
*p = read_uart_byte();
if (*p == '\n') {
process_input(my_read_buffer);
p = my_read_buffer; //reset the linebuffer
}
else
p++;
}
那么 secret 就是 process_input()
函数,您可以在其中解析命令及其参数,这样您就可以调用适当的函数来处理它们。
这只是一个远未完成的想法,您需要限制在 '\n'
之前接收到的字符数以防止溢出。
关于c - Shell 文本处理库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6256193/