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

【Python】製造装置とのシリアル通信のポート番号自動検知

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

・シリアル通信に使用するPythonコードを知りたい方
・シリアル通信にのポート番号の調べ方がわからない方

232Cケーブルは、古い機器などで使用されるシリアル通信用の規格であり、ポート番号が設定されていることが一般的です。

しかし、ポート番号が分からない・複数のポートがある場合には、手動でポート番号を設定する必要があります。
また故障などでケーブルを変更した際もポート番号が変わったりしてしまいます。

そこで、Pythonを使用して232Cケーブルのポート番号を自動検知するPythonプログラムを作成しました。

Pythonライブラリ

まず、Pythonで232Cケーブルを扱うためには、/というライブラリを使用します。

pyserialは、シリアル通信を行うためのライブラリであり、Windows、Mac、Linuxなどの多くのプラットフォームで使用することができます。

インストール方法は過去のブログでも紹介させてもらいましたが、以下のコードをコマンドプロンプトやターミナルで実行すれば大丈夫です。

pip install pyserial
引用:https://pypi.org/project/pyserial/

Pythonコード

次に、ポート番号を自動検知するためには、COMポートの一覧を取得する必要があります。

pyserialでは、serial.tools.list_portsという関数を使用することで、現在接続されているCOMポートの一覧を取得することができます。

以下は、COMポートの一覧を取得するためのPythonコードです。
このコードを実行すると、現在接続されているすべてのCOMポートのポート番号が表示されます。

import serial.tools.list_ports

ports = serial.tools.list_ports.comports()

for port in ports:
    print(port.device)

次に、232Cケーブルが接続されているポート番号を自動検知するためには、232Cケーブルのデバイス名を調べる必要があります。

例えばデバイス名が’USB Serial Port’と分かっている場合以下のコードを使い、特定のデバイス名を探索します。

import serial.tools.list_ports

ports = list(serial.tools.list_ports.comports())

for port in ports:
    description=port.description
    if 'USB Serial Port' in description:
        print(port.device)

このコードではCOMポートの一覧を取得し、それぞれ各ポートに接続された232Cケーブルを検知しています

そしてデバイス名に’USB Serial Port’という文字列が含まれている場合に、そのポート番号をprintで返すコードになってます。

このプログラムは、232Cケーブルに限らず、シリアル通信を行うための多くの機器で使用することができます。

以前紹介と組み合わせると、装置からのデータ取得や並列処理とも組み合わせることができるので
是非参考にしてください。

おわりに

ここまで読んでいただき、ありがとうございます。

シリアル通信を調べる方は、私と同じように製造業の現場で頑張っている方が非常に多いのではと
最近は思っております。

これからも色々と調べたことを書いていきますので
参考にしていただければ幸いです。

COMMENT

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

CAPTCHA