CentOS
error
RS232C
trap
pyserial

(未解決) pySerial 3.* + CentOS 6.8 > Python 2.6は対応しない (ValueError: zero length field name in format) | Python 2.7は対応してそう > Python 2.7と3.6ではConnection timed out

動作環境
CentOS 6.8 (64bit)
Python 2.6.6 (r266:84292, Aug 18 2016, 15:13:37) 

概要

USB<->RS-232C変換ケーブルを使用して、シリアル出力のツールを作ろうとしていた。

pipとpySerial関連をCentOS6.8用にセットアップした。

上記のループバック用コード(名前を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

エラーの理由

https://github.com/pyserial/pyserial/issues/185

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エラーが出る。

症状としては以下と同じようだ。

https://stackoverflow.com/questions/41123477/can-access-serial-port-with-python-2-6-but-not-with-2-7-or-3-5-using-same-code