ブログ

Armadillo-640:pyserialでシリアル通信

at_kazutaka.bito
2018年11月20日 9時33分

Armadillo-640:pythonを動かす で構築した環境で、pyserialでシリアル通信してみました。

1.pipコマンドのインストール

Armadillo-640をインターネットに接続できるネットワークに有線LANで接続します。
以下、Armadillo-640のコンソール上での操作になります。

Pythonパッケージを追加するためのpipをインストールします。
Python2の場合

root@armadillo:~# apt-get install python-pip

Python3の場合

root@armadillo:~# apt-get install python3-pip

 

2.pyserialの追加

pipでシリアル通信のパッケージ(pyserial)を追加します。
Python2の場合

root@armadillo:~# python2 -m pip install pyserial

Python3の場合

root@armadillo:~# python3 -m pip install pyserial

 

3.pyserialでシリアル通信(送信)

pyserialを使った簡単なプログラムで確認します。
Armadillo-640のRS232C(/dev/ttymxc2)で、文字列"hello"を送信します。
ボーレートは、115200の場合です。
(後述の説明上、このファイル名を"seriwrite.py"とします。)
Python2の場合

import serial

ser = serial.Serial('/dev/ttymxc2', 115200)
ser.write("hello")
ser.close()

Python3の場合

import serial

ser = serial.Serial('/dev/ttymxc2', 115200)
data = "hello"
ser.write(bytes(data, 'UTF-8'))
ser.close()

上記で作成した"seriwrite.py"を
Python2の場合

root@armadillo:~# python seriwrite.py

Python3の場合

root@armadillo:~# python3 seriwrite.py

のようにpythonで実行すると、Armadillo-640のRS232C(/dev/ttymxc2)に"hello"という文字が送信されます。

4.pyserialでシリアル通信(受信)

pyserialを使った簡単なプログラムで確認します。
Armadillo-640のRS232C(/dev/ttymxc2)で、受信した文字列をコンソールに出力します。
ボーレートは、115200の場合です。
(後述の説明上、このファイル名を"seriread.py"とします。)
Python2/Python3共通

import serial

ser = serial.Serial('/dev/ttymxc2', 115200, timeout=None)
line = ser.readline()
print(line)
ser.close()

上記で作成した"seriread.py"を
Python2の場合

root@armadillo:~# python seriread.py

Python3の場合

root@armadillo:~# python3 seriread.py

のようにpythonで実行すると、Armadillo-640のRS232C(/dev/ttymxc2)で受信した文字列が表示されます。
注)readlineで読み込む場合、送信側の改行コードは'\n'である必要があります。

例えば、文字列"goodbye"を受信した場合、下記のように表示されます。
Python2の場合

goodbye

Python3の場合

b'goodbye\n'