如何在Linux上创建虚拟"pipe"伪串行设备?



>我需要编写一个使用串行端口与另一台设备通信的程序(C++(。另一个设备甚至还没有构建,所以我需要一个软件模拟器由于各种原因,这里没有必要,软件模拟器需要在不同的机器上运行。我想通过UDP将数据从软件模拟器发送到运行我的程序的机器,并让另一个以某种方式充当串行端口(串行tty设备(的串行接口类型程序接收数据。

我还想在 VM 中以自动方式测试我的程序。理想情况下,我的测试程序也将使用 UDP,并使用相同的 UDP 串行接口程序在我的测试程序和被测程序之间来回转发数据。

时间很紧。我真的没有时间学习编写和安装内核级设备驱动程序。

我将非常感谢有关如何创建某种"管道"或"环回"伪串行设备的任何指示。

我正在研究Linux。

感谢meuh的提示。

socat UDP:127.0.0.1:5001,bind=127.0.0.1:5000 
PTY,link=/dev/ttyS0,raw,echo=0,waitslave

这将侦听环路网络接口上的 UDP 端口 5000。收到的所有数据都发送到/dev/ttyS0 的虚拟串行设备。虚拟串行设备上接收的所有数据都将发送到UDP地址127.0.0.1:5001。

IP 地址可以是远程地址。

该命令必须以 root 身份运行,连接到串行端口的进程也必须以 root 身份运行。为避免这种情况,请使用不同的文件路径,例如/tmp/ttyS99。

显然,指定的文件路径必须不存在。然而,我的电脑有/dev/ttyS0 一直到/dev/ttyS31,尽管没有任何串行端口,并且使用/dev/ttyS0 工作正常。我想如果我真的有一个真正的串行端口,这将不起作用。

最新更新