我的目标是能够在uart串行接口上使用python expect模块。
我试图将pySerial(serial
)python模块连接到pexpect
模块。但是,我使用套接字协议通过具有serial.serial_for_url()
功能的套接字远程访问串行端口。
执行此操作时,它会失败,因为select()
需要在Serial对象中定义fileno()
。我收到以下错误:
io.UnsupportedOperation: fileno
为什么套接字协议可以使用socket.fileno()
?
我尝试过它似乎在linux下正常工作。
有什么理由说明serial.urlhandlers.protocol_socket.py
默认不支持这种情况吗?
修改 :
我运行了以下内容:
>>> import serial
>>> import fdpexpect
>>> fd = serial.serial_for_url('socket://10.28.1.15:7002')
>>> px = fdpexpect.fdspawn(fd, logfile=open('test.log','w'))
请注意,您需要具有uart-to-network网桥的硬件。我在特定测试中使用Digi32CM,但它并不是真正相关。
当我运行fdspawn()
函数时,出现以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "python2.7/site-packages/pexpect/fdpexpect.py", line 45, in __init__
fd = fd.fileno()
io.UnsupportedOperation: fileno
pySerial Serial
对象没有定义fileno()
函数,即使它基于套接字并且可以使用套接字fileno。当我尝试添加它时,操作似乎工作正常:
def fileno(self):
return self._socket.fileno()
我想知道我是否遗漏了什么?
答案 0 :(得分:0)
有关信息,几年前已将fileno()添加到pyserial中,现在可以正常工作了。