【Python】シリアルモジュール、シリアルポートデータの読み書き!

シリアル通信とは、データ信号線、グランド線、制御線などを介して、周辺機器とコンピュータ間でデータを1ビットずつ伝送する通信方式のことです。この通信方式は使用するデータ線が少なく、長距離通信において通信コストを節約できますが、伝送速度はパラレル伝送に比べて遅くなります。シリアル ポートは、コンピュータ上の非常に一般的なデバイス通信プロトコルです。pyserial モジュールは、シリアル ポートへの Python のアクセスをカプセル化し、複数のプラットフォームで使用するための統一インターフェイスを提供します。

1. 環境構築

私のPython環境はバージョン3.7.8で、ダウンロードパスは次のとおりです。

1.python 3.7.8  

公式 Web サイトに直接アクセスしてダウンロードしてインストールできます: Download Python | Python.org

2.シリアルライブラリのインストール

pip インターフェースを使用してインストールする


pip install serial

pip install pyserial

pip インターフェースの詳細な説明については、「【Python】Python パッケージ管理ツール pip を詳しく解説!」を参照してください。_Python パッケージ管理ツール pip_==PP のブログ - CSDN ブログ

2. シリアルライブラリの基本機能の使い方

1. シリアルポート初期化関数serial.Serial():


ser = serial.Serial('COM3',115200,timeout=5)

上記の関数の 3 つのパラメーターの機能について説明します。

パラメータ 1: com3 は、シリアル ポートの読み取りおよび書き込み用のポート番号です。

パラメータ 2: 115200 はシリアル ポートのボー レートです。

パラメータ 3: timeout はシリアルポートのタイムアウト設定です。

上記 3 つのパラメータはよく使われるパラメータなのでここでは主に説明しますが、その他のパラメータはあまり使われないのでここでは紹介しませんので、興味があれば公式ドキュメントや他のブログエリアを検索してみてください。

2.書き込み機能シリアルポートはデータを書き込みます


Write = ser.write(b'bsp\n') 

シリアルポートにデータを送信する

b: このパラメータはバイト型を表します。文字列を直接送信するとエラーが報告されます。

\n: 改行の意味

bsp: 送信するコンテンツ

注:先頭に b を追加する必要があります。これは、シリアル ポートのようにデータをバイト単位で書き込むことを意味します。

3.read()関数シリアルポートがデータを読み取る


ser.read()  ####从端口读字节数据,默认1个字节

ser.read_all()  ####从端口接收全部数据

ser.readline()   ###读一行数据

ser.readlines()   ###读多行数据

ここでは、シリアル ポートのデータ読み取り操作が次のように統一された方法で紹介されます。

(1) ser.read(): ポートからバイトデータを読み取ります。デフォルトは 1 バイトです

(2) ser.read_all(): ポートから全データを受信

(3) ser.readline(): データ行を読み取ります。

(4) ser.readlines(): 複数行のデータを読み込む

いくつかの基本的な関数の使用法を紹介した後、実際の例を通してシリアル ライブラリの使用法について学びましょう。

3. デモンストレーション例

コードに直接移動します。


import serial
import time

if __name__ == '__main__':
    ser = serial.Serial('COM3',115200,timeout=5)  ##连接串口,打开
    time.sleep(0.5)

    Write = ser.write(b'Hello\n')  ##发送数据
    Read = ser.read()  ###接收1个字节数据
    print(Read)
    
    Write = ser.write(b'Hello\n')  ##发送数据
    Read = ser.readline()  ##接收一行数据
    print(Read)

    Write = ser.write(b'Hello\n')  ##发送数据
    Read = ser.read_all()  ###接收所有数据
    print(Read)

    Write = ser.write(b'Hello\n')  ##发送数据
    Read = ser.readlines()   ###读多行数据
    print(Read)

    ser.close()  ###关闭串口连接

出力:

ここでは、上の図に示すように、「Hello」文字もシリアル ポートに送信され、ser.read() を使用してそれを読み取ります。
ここでは、上の図に示すように、「Hello」文字もシリアル ポートに送信され、ser.readline() を使用して読み取られます。
ここでは、上の図に示すように、「Hello」文字もシリアル ポートに送信され、ser.read_all() を使用してそれを読み取ります。

ここでは、上の図に示すように、「Hello」文字もシリアル ポートに送信され、ser.readlines() を使用して読み取られます。

上記の機能の使用に加えて、次のような機能や機能もあります。

ser.isOpen()

ポートが開いているかどうかを確認する

ser.open()

ポートを開く

流す()

すべてのデータが書き込まれるまで待ちます

フラッシュ入力()

受信バッファ内のすべてのデータを破棄します

フラッシュ出力()

現在の書き込み操作を終了し、送信バッファ内のデータを破棄します。

4. まとめ

基本的なシリアル ポートの読み取りおよび書き込み操作は上に示したとおりです。シリアル ライブラリの使用方法について詳しく知りたい場合は、私の他の記事もお読みください。

【python】シリアルポートツールを作ってみよう(前編)!_Python書き込みシリアルポートツール_==PPのブログ-CSDNブログ

@ネン

おすすめ

転載: blog.csdn.net/pengneng123/article/details/129727811