私は64ビットのWindows 7マシンでPython 2.7.3を実行しており、同じPythonバージョン(2.7.3)を実行している64ビットのUbuntuマシンに(USB-> RS232ケーブル経由で)接続しています。
Windows 7 側で timeout=None が正しく機能していないようで、その理由がわかりません。
これが私が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 でセットアップする際の既知の注意事項はありますか? この問題が発生している理由を知っている人はいますか? この失敗を診断するために私が試みることができる他のことについてのアイデアはありますか?