Linux下的伪串行通信

发布于 2021-01-29 15:26:44

我有一个想要模拟设备和“调制解调器”之间连接的应用程序。该设备将连接到串行端口,并通过该端口与软件调制解调器通信。

为了进行测试,我希望能够使用模拟软件设备来测试发送和接收数据。

示例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建议出现之前我一直寻求的解决方案。看来效果很好。

关注者
0
被浏览
51
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    这也可能是最好使用pyserial与串行端口进行通信,并且你可以创建一个模拟版本,serial.Serial它实现了类readreadlinewrite你需要和任何其他方法。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看