#はじめに
ちょっとしたRS232c通信をする装置をpythonで制御したい。以前ちょっと書いたけど、今度はpythonを使うことにしてみた。
https://qiita.com/niikura/items/5e51d2d2fd995e3d65fe
#使い方
モジュールインストールはpipで。
$ pip install pyserial
ここで、気をつけないとならないのは、必要なモジュールはpyserialであってserialではないこと。同じハマり方していた人がいた。
接続方法はこんな感じで。
$ python3
>>> import serial
>>> ser = ser.Serial("/dev/USB0",9600,timeout=0.1)
これで/dev/USB0に繋いだ先に接続できる。
書き込みはwirte()を、読み込みはread()とかreadline()を使う。
例えばa一文字を書き込んでみる。
>>> ser.write("a")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 518, in write
d = to_bytes(data)
File "/usr/lib/python3/dist-packages/serial/serialutil.py", line 63, in to_bytes
raise TypeError('unicode strings are not supported, please encode to bytes: {!r}'.format(seq))
TypeError: unicode strings are not supported, please encode to bytes: 'a'
エラーが出た。エンコードがおかしいと言っている。なので、正しくは、
>>> ser.write(str.encode('a'))
1
とする。1というのは入力した文字数みたい。
改行したい場合は、\r\nを入力する。
>>> ser.write(str.encode('a\n\r'))
3
とりあえず今日はここまで。