8
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

pythonでシリアルポート通信

Last updated at Posted at 2019-10-18

#はじめに
ちょっとした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

とりあえず今日はここまで。

8
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?