我有一个应用程序,我想在其中模拟设备和“调制解调器”之间的连接。该设备将连接到串行端口,并通过该端口与软件调制解调器通信。
为了进行测试,我希望能够使用模拟软件设备来测试发送和接收数据。
示例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并对其进行读写。
mkfifo~/my_fifo
~/my_fake_serial_port
我也对该pty模块付了款,但是也不能使它正常工作。我可以从中获取主文件和从文件描述符,pty.openpty()但是尝试读取或写入它们只会导致IOErrorBad File Descriptor错误消息。
pty
pty.openpty()
IOErrorBad File Descriptor
注释将我引向SO问题,在Linux中是否有像COM0COM这样的程序?其使用socat设置一个虚拟串行连接。我这样使用它:
socat
socat PTY,link=$HOME/COM1 PTY,link=$HOME/COM2
对于其他人,谢谢您给我的宝贵信息。我选择接受 _VinaySajips_的回答,因为那是我在socat建议出现之前所寻求的解决方案。看来效果很好。
这也可能是最好使用pyserial与串行端口进行通信,并且你可以创建一个模拟版本,serial.Serial它实现了类read,readline,write你需要和任何其他方法。
serial.Serial
read
readline
write