lin*_*ida 6 python linux serial-port
我有一个程序,使用pyserial,我想测试它而不使用真正的串口设备.
在Windows中,我使用com0com,在linux中,我知道有一种方法可以创建虚拟串行端口对而无需使用其他程序.
所以我查阅了手册,找到了pts,/ dev/ptmx,但我不知道如何按照手册创建一对,有人能给我举个例子吗?
我试过(在python中):
f = open("/dev/ptmx", "r")
Run Code Online (Sandbox Code Playgroud)
并且它工作,/ dev/pts/4被创建.
我试过了:
f = open("/dev/4", "w")
Run Code Online (Sandbox Code Playgroud)
结果是:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: [Errno 5] Input/output error: '/dev/pts/4'
Run Code Online (Sandbox Code Playgroud)
编辑:我找到了一个使用socat的解决方案(workround).
socat PTY,link=COM8 PTY,link=COM9
Run Code Online (Sandbox Code Playgroud)
然后COM8 COM9创建为虚拟串行端口对.
小智 6
我试图创建一个使用虚拟串行端口的应用程序,以便使用TCP /串行转换与某些远程设备通信......我遇到了类似于你的问题.我的解决方案如下:
import os, pty, serial
master, slave = pty.openpty()
s_name = os.ttyname(slave)
ser = serial.Serial(s_name)
# To Write to the device
ser.write('Your text')
# To read from the device
os.read(master,1000)
Run Code Online (Sandbox Code Playgroud)
虽然如果你检查(/ dev/ptmx),主机端口的名称是相同的,如果你创建另一个主机,从机对,fd是不同的,所以从主机读取将获得发给他指定的从机的消息.我希望这可以帮助您或其他任何遇到类似问题的人.