我需要在微控制器上编写一个非常基本的命令解释器,它将通过虚拟串行端口进行通信。在我继续编写我自己的版本之前,我想知道是否有人知道任何用于非常简单的、类似shell的文本处理的库。我喜欢shell中的标准功能,比如只有在用户键入新行后才能接收到的文本,按backspace会删除队列中的最后一个字符,而不是在队列中添加另一个字符,诸如此类。
有什么想法吗?
谢谢
发布于 2011-06-20 08:52:14
为了在微控制器中实现真正简单的行缓冲"shell“(行缓冲意味着只在"enter”或“\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++;
}那么,秘诀就是process_input()函数,您可以在其中解析命令及其参数,以便可以调用适当的函数来处理它们。
这只是一个远未完成的想法,您需要在'\n'之前限制接收的字符数,以防止溢出。
发布于 2011-06-07 05:28:13
ECMD是Ethersex平台的一部分。
ECMD Reference。
https://stackoverflow.com/questions/6256193
复制相似问题