動作環境
CentOS 6.8 (64bit)
Python 2.6.6 (r266:84292, Aug 18 2016, 15:13:37)
概要
USB<->RS-232C変換ケーブルを使用して、シリアル出力のツールを作ろうとしていた。
pipとpySerial関連をCentOS6.8用にセットアップした。
- Linux対応の変換ケーブル
- Prolific USB
- デバイスは/dev/ttyUSB0と/dev/ttyUSB1として認識
- ループバック用コード
- 自作のループバック用アダプタ
- DSUB9ピン同士でTXとRXをクロス接続
上記のループバック用コード(名前をloop_test_180119.py
とした)実行時に下記のエラーとなる。
$ sudo python loop_test_180119.py
Hello
Traceback (most recent call last):
File "loop_test_180119.py", line 16, in <module>
main()
File "loop_test_180119.py", line 6, in main
con1=serial.Serial('/dev/ttyUSB0', 9600, timeout=10)
File "/usr/lib/python2.6/site-packages/serial/serialutil.py", line 240, in __init__
self.open()
File "/usr/lib/python2.6/site-packages/serial/serialposix.py", line 272, in open
self._reconfigure_port(force_update=True)
File "/usr/lib/python2.6/site-packages/serial/serialposix.py", line 345, in _reconfigure_port
ispeed = ospeed = getattr(termios, 'B{}'.format(self._baudrate))
ValueError: zero length field name in format
エラーの理由
pyserial doesn't support Python 2.6 according to its classifiers and documentation.
Python 2.6は対応しない。
Python 2.7は対応していそう。
Software CollectionsによるPython 2.7 > 未解決
Cent OS 6で手軽にPython 2.7を使う方法
に記載の方法でPython 2.7.13を使用できるようにしてみました。
実行時にpySerialが見つからないとなり、pip install pyserialではPython2.6用にインストール済となりました。
Python3.6で対応
Python2.7に上げるよりもPython3.6を別途インストールして実行できるようにしました。
CentOS6.9にPython3を導入 @ EnjoITs
の記事にてコマンドを3.6用に適宜変更してセットアップしました。
Python 2.7と3.6ではConnection timed out
Python 3.6ではConnection timed outエラーが出る。
症状としては以下と同じようだ。