Python - pyserialメモ

まえがき

Raspberry Pi とか arduino が流行っており 通信することもあるだろうと思うので、 シリアル通信ライブラリ pysserial の使い方を知っておく

インストール

pip でインストール

$ pip3 install pyserial

使い方

通信設定して、オブジェクト生成する。
オープンして、送受信を繰り返す。用が済んだらクローズする。
ブロックが発生する可能性があるので、事前のバッファ確認をしたほうが良い。
ゴミデータが存在する可能性もあるが、初回以外はなるべくバッファクリアはしない。 受信は無限長のデータ解析みたいに考えるほうが取りこぼしなく、通信処理が安定するので 1 byte ずつreadすると良い。

サンプル

#!/usr/bin/env python3
# coding: utf-8
"""python script
"""

import serial


def main():
    """main
    """
    comport = serial.Serial('COM1', baudrate=115200, parity=serial.PARITY_NONE)
    # timeout=None, wait forever
    # timeout=0, non-blocking

    comport.open()
    # clear receive buffer
    comport.reset_input_buffer()
    # send data
    if comport.out_waiting > 0:
        comport.reset_output_buffer()
    # 送信データはbytes 型
    comport.write(b'123456')
    # recv data
    if comport.in_waiting > 0:
        # 受信データはbytes 型
        recv_data = comport.read(1)

    comport.close()


if __name__ == '__main__':
    main()

See also