python - Linux下伪串口通信

标签 python linux serial-port

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

出于测试目的,我希望能够使用模拟软件设备来测试发送和接收数据。

示例 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 用于写入,一个用于读取。我想要的是打开 ~/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

对于你们中的其他人,感谢你们为我提供了宝贵的信息。 我选择接受 Vinay Sajips 的回答,因为这是我在 socat 建议出现之前寻求的解决方案。它似乎工作得很好。

最佳答案

可能最好使用 pyserial与串行端口通信,您只需创建一个模拟版本的 serial.Serial 类,它实现了 readreadlinewrite 以及您需要的任何其他方法。

关于python - Linux下伪串口通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2500420/

相关文章:

python - 实例列表理解

python - 在 3d 空间中对 1d 曲线进行良好的插值/拟合——Python

linux - 系统 ("linux_command") 与 Perl 库函数

C++:与 Arduino 的串行接口(interface)

c# - C# 中串行端口的多端口异步 I/O

python - django 1.9 不为自定义用户模型创建表

python - 如何从 pandas DataFrame 绘制热图

python - 这是什么错误? linux 下的 python 脚本

linux - Linux 上的文件服务器

Python:发出哔哔声