在Hyperterminal中,我能够连接到名为“X64-CL_iPro_1_Serial_0”的串口,在那里我可以向相机发送/接收ASCII文本。但是,当我尝试使用pySerial连接到同一个端口时,它会抛出异常:
SerialException: could not open port X64-CL_iPro_1_Serial_0: [Error 2] The system cannot find the file specified.
我不明白为什么Hyperterminal可以检测端口并与之通信,但Python不能。我从pySerial网站下载了this script,显示了一个串口列表,它提供的唯一端口是COM1和COM2,我都无法连接。
我的代码很简单,看起来像这样:
import serial
port = "X64-CL_iPro_1_Serial_0"
ser = serial.Serial(port)
我做错了吗?有办法解决这个问题吗?提前谢谢。
编辑: 还应注意,此端口未显示在设备管理器中,COM1或COM2也未显示。
答案 0 :(得分:1)
问题在于您链接的枚举代码。这有两个方面是错误的:
答案 1 :(得分:0)
<强>预留强>
我不清楚问题是关于通过pyserial
使用非串行端口,还是枚举中不是COMX端口的串口。
这可能是一些OT或太硬的代码供您使用,但这里首先,使用pyserial
对象中的其他文件:
foo = serial.Serial()
peer = serial.Serial()
foo.fd, peer.fd = posix.openpty()
try: foo._isOpen = peer._isOpen = True # depending on pyserial version
except: pass
foo._reconfigurePort()
peer.setTimeout(timeout=0.1)
peer._reconfigurePort()
关于第二,请记住COM9
以外的端口使用奇怪的窗口表示法\\.\COM10
,这可能是Hyperterminal为您所做的。 pyserial
没有这样做,所以也许你需要打开这样的端口:
s = serial.Serial("\\\\.\\X64-CL_iPro_1_Serial_0") # also remember to escape backslash