本サイトは広告・プロモーションが含まれています
Python

Pythonでシリアル通信・装置から数値取得

この記事はこんな人におすすめ

・シリアル通信に使用するPythonコードを知りたい方
・シリアル通信に必要なケーブルについて知りたい方

どうもこんにちは。コンです。

就職してから知ったのですが
プログラマーをしていると、「装置から数値を取得したい」という内容の依頼がよくあります。

そこで使うことになったのがシリアル通信
データを1ビットずつ連続的に送受信する通信方式らしいです。

この記事では、シリアル通信の通信ケーブルとPythonプログラムについて解説していきたいと思います。

使用した物品

・Windows10 Proのパソコン
rs232c usb 変換ケーブル

多分ここで大事なのはケーブル選び

・オスかメスか
・PCと装置を繋ぐ場合の長さは十分か

の2点を注意して選べば、なんとかなります。

使うケーブルのメーカーなのですが
個人的によく使うのは、CableCreation社のケーブルは
公式HPからドライバーをインストールすれば使えるようになる安いケーブルってことで使わせてもらってます。

ポートの確認

購入した232CケーブルをPCに挿して、Windowsのデバイスマネージャを開らいて以下のように表示されていればまずOKです。

どのポートを使用しているかも重要なので、COM4を使っているなということを把握しておきます。

pySerialによる通信

Pythonでシリアル通信によるデータ取得を実現するためにはpySerialというライブラリを使用します。
インストールはpipで簡単にできます。

pip install pyserial

下に示すのは、ずっと通信しながら通信内容を出力するコードです。

import serial

ser=serial.Serial(
    port='COM4',
    baudrate =9600,
    timeout=None,
    parity=serial.PARITY_NONE
)

ser.close()
ser.open()

while True:
    data =  ser.read_all()
    print(data)

serial.Serial(‘COM4’, baudrate=9600, timeout=None,parity=serial.PARITY_NONE)でどういった設定でシリアル通信するのかを書いております。
この部分は装置の設定から確認して書きます。

今回はdataをprintしているのだけなのですが、実際は色々と処理をしてから扱います。

おわりに

ここまでマニアックな内容ですが、読んでいただきありがとうございました。

実際に機械操作ではデータを取得しながら、その内容から何かしら判断を下すといったプログラムが多い印象です。
例えば温度データをとっておいて、50℃以上の温度一定時間以上を検出したら、アラーム画面を表示する
みたいな。

そんな時はシリアル通信のプログラムと、温度の傾向を管理するプログラムを並列処理するようなプログラムが必要になってきます。
並列処理のプログラムもPythonなら簡単に書けるので、今後紹介させていただきます。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA