c - Shell 文本处理库

标签 c shell serial-port microcontroller

我需要在将通过虚拟串行端口进行通信的微 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/

相关文章:

Java串行编程

c++ - 以编程方式在 .doc 中搜索 + 替换

bash - 关于 $SHLVL 的 Zsh 怪异

bash - docker exec 命令的结果

python - 在 python 脚本中仅使用从 Arduino 读取的最新值,而不是存储在缓冲区中的值?

java - 需要帮助在java中的杆显示器上显示消息

c - 我想保存 op=R 和 s=5,但我的代码显示垃圾输出

在 gtk+ 中编译单个测试

c - 这个星号是做什么用的?

php - 使用来自 PHP/CGI 的 shell 命令是不好的做法吗?