![是否有允许过滤消息的串行终端程序?](https://linux22.com/image/1403195/%E6%98%AF%E5%90%A6%E6%9C%89%E5%85%81%E8%AE%B8%E8%BF%87%E6%BB%A4%E6%B6%88%E6%81%AF%E7%9A%84%E4%B8%B2%E8%A1%8C%E7%BB%88%E7%AB%AF%E7%A8%8B%E5%BA%8F%EF%BC%9F%20.png)
对于串行终端程序的选择,我们在 Windows 上有 hyperterminal 和 putty;在 Linux/Mac 上有 minicom 和 screen。但据我所知,这些程序都没有如下所述的消息过滤功能:
我需要的是一些消息过滤功能。我拥有的黑匣子设备输出了大量冗长的消息,但只有一小部分是我感兴趣的。我想过滤掉这些噪音,但仍保持终端交互,以便我可以输入命令。
有什么建议么?
答案1
Python 中有miniterm
过滤器,但是您必须将 Python 类编码为过滤器;请参阅源代码pyserial
作为示例:
例如,它有:
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 输出。