Linux下的伪串行通信
我有一个想要模拟设备和“调制解调器”之间连接的应用程序。该设备将连接到串行端口,并通过该端口与软件调制解调器通信。
为了进行测试,我希望能够使用模拟软件设备来测试发送和接收数据。
示例Python代码
device = Device()
modem = Modem()
device.connect(modem)
device.write("Hello")
modem_reply = device.read()
现在,在我的最终应用程序中,我将仅传递/ dev / ttyS1或COM1或任何供应用程序使用的内容。但是,如何在软件中执行此操作?我正在运行
Linux ,应用程序是用 Python 编写的。
我曾尝试制作一个FIFO(mkfifo
~/my_fifo
),但确实可以,但是随后我将需要一个FIFO来进行写入,并需要一个FIFO来进行读取。我想要的是打开~/my_fake_serial_port
并对其进行读写。
我也对该pty
模块付了款,但是也不能使它正常工作。我可以从中获取主文件和从文件描述符,pty.openpty()
但是尝试读取或写入它们只会导致IOError
Bad File Descriptor
错误消息。
更新资料
注释将我引向SO问题,在Linux中是否有像COM0COM这样的程序?其使用socat
设置一个虚拟串行连接。我这样使用它:
socat PTY,link=$HOME/COM1 PTY,link=$HOME/COM2
对于其他人,谢谢您给我的宝贵信息。我选择接受 Vinay Sajips 的回答,因为这是在socat建议出现之前我一直寻求的解决方案。看来效果很好。