Python 为什么pySerial套接字协议不支持fileno()?
我的目标是能够在uart串行接口上使用python expect模块 我正在尝试将pySerial(Python 为什么pySerial套接字协议不支持fileno()?,python,sockets,pyserial,uart,pexpect,Python,Sockets,Pyserial,Uart,Pexpect,我的目标是能够在uart串行接口上使用python expect模块 我正在尝试将pySerial(serial)python模块连接到pexpect模块。但是,我正在使用套接字协议,使用serial.serial\u for_url()函数通过套接字远程访问串行端口 执行此操作时失败,因为select()需要在串行对象中定义fileno()。我得到以下错误: io.UnsupportedOperation:fileno 为什么套接字协议可以使用socket.fileno()? 我试过了,它似乎
serial
)python模块连接到pexpect
模块。但是,我正在使用套接字协议,使用serial.serial\u for_url()
函数通过套接字远程访问串行端口
执行此操作时失败,因为select()
需要在串行对象中定义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到网桥的硬件。我在那个特定的测试中使用了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
我想知道我是否遗漏了什么?有关信息,fileno()在几年前已添加到pyserial中,现在工作正常。您应该显示一些代码,最好是一个可以剪切并粘贴到文件中的小型独立程序,并在执行时演示问题。另外,fileno()根据文档,只有UNIX平台才支持串行对象上的
。你在什么平台上?你的pySerial版本是什么?我使用的是pySerial版本2.7和pexpect版本3.3,只是没有实现。您已经知道如何自己实现它了。
def fileno(self):
return self._socket.fileno()