是否有允许过滤消息的串行终端程序?

是否有允许过滤消息的串行终端程序?

对于串行终端程序的选择,我们在 Windows 上有 hyperterminal 和 putty;在 Linux/Mac 上有 minicom 和 screen。但据我所知,这些程序都没有如下所述的消息过滤功能:

我需要的是一些消息过滤功能。我拥有的黑匣子设备输出了大量冗长的消息,但只有一小部分是我感兴趣的。我想过滤掉这些噪音,但仍保持终端交互,以便我可以输入命令。

有什么建议么?

答案1

Python 中有miniterm过滤器,但是您必须将 Python 类编码为过滤器;请参阅源代码pyserial作为示例:

https://github.com/pyserial/pyserial/blob/3a6ae5a630589a29af8d8bd45616d7aadb2fb3db/serial/tools/miniterm.py#L179

例如,它有:

class CRLF(Transform):
    """ENTER sends CR+LF"""

    def tx(self, text):
        return text.replace('\n', '\r\n')

您可以使用此过滤器调用 miniterm:

python3 -m serial.tools.miniterm  --parity N --xonxoff --echo --eol CRLF /dev/ttyUSB1 9600

... 由于这些是“行尾”特定过滤器 - 请注意,通过--filter(请参阅https://pyserial.readthedocs.io/en/latest/tools.html

答案2

如果您不需要通过串行线路推送任何输出,据我所知,您可以只从串行设备读取并使用 grep 等工具进行过滤。不过,我还没有尝试过。您还可以查看所用工具的文档,看看它们是否能够将所有输入记录到文件中。然后,理论上您可以 grep 文件,但实际上,您将使用命名管道,以便实时 grep 输出。

相关内容