我有一个应用程序,想要模拟设备与“调制解调器”之间的连接。设备将连接到串行端口,并通过该端口与软件调制解调器通信。
为了测试目的,我希望能够使用模拟软件设备来测试发送和接收数据。
示例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问题Are there some program like COM0COM in linux?,它使用
socat
来设置虚拟串行连接。
我像这样使用它:socat PTY,link=$HOME/COM1 PTY,link=$HOME/COM2
对于你们中的其他人,感谢您提供宝贵的信息。 我选择接受的答案,因为这是我在socat建议出现之前采取的解决方案。它似乎足够好用。