我在 64 位 Windows 7 机器上运行 Python 2.7.3,并且它(通过 USB->RS232 电缆)连接到运行相同 Python 版本(2.7.3)的 64 位 Ubuntu 机器。
我遇到了一个问题,timeout=None 在 Windows 7 端似乎无法正常工作,我不知道为什么。
这是我在 Win 方面所拥有的:
>>> import serial
>>> s = serial.Serial(3)
>>> s.baudrate = 9600
>>> s
Serial<id=0x203a320, open=True>(port='COM4', baudrate=9600, bytesize=8, parity='N',
stopbits=1, timeout=None, xonxoff=False, rtscts=False, dsrdtr=False)
>>> s.read(5)
'' <--- returns right away
>>> s.timeout = 0
>>> s.read(5)
'' <--- correctly returns right away
>>> s.timeout = 10
>>> s.read(5) <--- correctly waits 10s
现在我在这里阅读了文档,我知道如果我不给它超时None
它应该永远等待,并且0
超时它应该立即返回,但None
它是默认值并且它没有等待......我想知道是否发生了变化,但是当我在 Linux 端尝试代码时,它可以工作:
>>> import serial
>>> s = serial.Serial("/dev/ttyUSB0")
>>> s.baudrate = 9600
>>> s
Serial<id=0x7f325e002b50, open=True>(port='/dev/ttyUSB0', baudrate=9600, bytesize=8,
parity='N', stopbits=1, timeout=None, xonxoff=False, rtscts=False, dsrdtr=False)
>>> s.read(5)
'' <--- correctly waits forever
>>> s.timeout = 0
>>> s.read(5)
'' <--- correctly returns right away
>>> s.timeout = 10
>>> s.read(5) <--- correctly waits 10s
在 Windows 上进行设置时是否有任何已知的警告?有谁知道为什么我会看到这个问题?关于我可以尝试帮助诊断此故障的其他事情的任何想法?