CentOS
RS232C
trap
pyserial

pySerial 2.7 + CentOS 6.8 (+Python 2.6.6) > ループバックテストは成功 | readline()が遅い問題はある | ドライバのバージョンアップで動作しなくなるコード

More than 1 year has passed since last update.


動作環境

CentOS 6.8 (64bit)

Python 2.6.6 (r266:84292, Aug 18 2016, 15:13:37)
pySerial pyserial-2.7-py2.6.egg-info


関連

pySerialの3.*ではCentOSとUbuntuにおいてまともにシリアル通信ができない。

というのが2018年1月19日現在の認識である。

Raspberry Pi(Raspbian Jessie)でpySerial 2.*ではシリアル通信ができていた実績がある。


pySerial 2.7 + CentOS 6.8

CentOS 6.8にpySerial 2.7をインストールしてみた。

https://pypi.python.org/pypi/pyserial/2.7

からtar.gzファイルを取得。

$tar xvzf pyserial-2.7.tar.gz

$cd pyserial-2.7
$sudo python2 setup.py install


code > ループバックテスト


loop_test_180119.py

import serial

import time

def main():
print("Hello")
con1=serial.Serial('/dev/ttyUSB0', 9600, timeout=10)
con2=serial.Serial('/dev/ttyUSB1', 9600, timeout=10)

str1='from\r'
con1.write(str1);
str2=con2.readline()
print("str1=", str1)
print("str2=", str2)
con1.close()
con2.close()

if __name__ == '__main__':
main()



実行

USBシリアル変換ケーブル2本をクロス接続して、USBに挿した状態で以下を実行した。

(ケーブルのドライバはProlific)。

$ sudo python2 loop_test_180119.py 

Hello
('str1=', 'from\r')
('str2=', 'from\r')

この処理を繰り返したが正常に処理されている。

(readline()の問題はあり、こちらに記載の対応は必要となりそう)。


ドライバのバージョンアップで動作しなくなるコード

Unityのシリアル通信はUnity4からUnity5になった時点で動作しなくなった経験がある。

Gitのとあるクライアントソフトはv1.からv2.になった時点でバグだらけになった例も知っている。

pySerialは v3.*で調べた範囲ではいくつかのエラーが未解決のように見られる。

5年、10年のスパンで考えた場合、ドライバのバージョンアップで動作しなくなるコードがあると認識しておく必要があるかもしれない。