如何从串行端口读取数据而不耗尽其资源?

如何从串行端口读取数据而不耗尽其资源?

我的老板需要为他们正在使用的程序制作一个监控应用程序。由于他们的业务需要,我可以不是使用任何类型的虚拟串行端口。数据进出/dev/ttyUSB0,应用程序必须连接到 /dev/ttyUSB0。

我已经讨论过一种利用 socat 创建的虚拟串行端口的设计,这样我就可以获取串行端口进出的内容,而无需中断数据传输。但这个设计被拒绝了。他建议我通过称为“端口镜像”或“读取信息”的方式来实现这一点,而不会像 Putty 在 Windows 中那样消耗资源。

我非常不知道该做什么,或者如何解决这个问题。

答案1

最简单的可能是在硬件中进行监控。但是,在软件中,我认为您可以将 tty 重命名为 pty! /dev文件名并不神奇——它们是按编号引用驱动程序的友好方式。创建一个 Pty(或 Unix 域套接字),将真实 tty (/dev/ttyUSB0) 重命名为/dev/magicserial,并将新端点重命名为真实 tty 的名称。那么你就完全掌控了!编写一个守护进程,运行一个select循环来复制 magicserial 和端点之间的所有数据,并且您可以监视您想要的任何内容。虽然不简单,但应该可以正常工作。

这是Pty 教程示例

相关内容