2
0

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 1 year has passed since last update.

仮想シリアルポートの作成および動作確認方法

Last updated at Posted at 2022-04-12

仮想シリアルポートを作成して動作確認する方法

はじめに

環境

bash
cat /etc/system-release
Amazon Linux release 2 (Karoo)

プログラムはpython

bash
bash-4.2# python3 --version
Python 3.7.10

port:9600を使用して通信します

仮想シリアルポート作成

socatという便利コマンド

socatとは

2つの双方向バイトストリームを確立し、それらの間でデータを転送するコマンドラインベースのユーティリティです。

socat install

yum install -y socat

コマンド

socat -d -d pty,raw,echo=0 pty,raw,echo=0

構文

socat [options] <address> <address>
オプション
[options]: -d -d: fatal/error/warning/info のメッセージを表示
<address>: pty,raw,echo=0: ptyの入力値をそのまま出力します
<address>: pty,raw,echo=0: ptyの入力値をそのまま出力します
ptyとは

擬似端末セッションの役割をソフトウェア(プロセス)が代用する

sshした際などに生成され、各コマンドプロンプトがこちらに該当します

  • ssh セッション1
bash-4.2# ps -a
  PID TTY          TIME CMD
  225 pts/1    00:00:00 ps
  • ssh セッション2
bash-4.2# ps -a
  PID TTY          TIME CMD
  225 pts/2    00:00:00 ps

TTYのところが異なっています

実行結果

bash-4.2# socat -d -d pty,raw,echo=0 pty,raw,echo=0
2022/04/12 10:52:53 socat[226] N PTY is /dev/pts/2
2022/04/12 10:52:53 socat[226] N PTY is /dev/pts/3
2022/04/12 10:52:53 socat[226] N starting data transfer loop with FDs [5,5] and [7,7]

※各環境にて/dev/pts/2/dev/pts/3の内容は異なります
※コマンドを終了するとバイトストリームも閉じられます

スクリプト

送受信ともにpyserialを利用します

pyserial install

pip3 install pyserial

送信スクリプト

Sender/main.py
import serial

if __name__ == "__main__":
    # /dev/pts/2 はsocatの実行結果に合わせて書き換える
    ser = serial.Serial('/dev/pts/2', 9600, timeout = None)

    message = 'test\n'

    ser.write(message.encode('ascii'))

    ser.close()

受信スクリプト

Reciver/main.py
import serial

if __name__ == "__main__":
    # /dev/pts/3 はsocatの実行結果に合わせて書き換える
    ser = serial.Serial('/dev/pts/3', 9600, timeout = None)

    while 1: 
        line = ser.readline()

        print(line.decode('utf-8'), end='')

実行結果

送信スクリプト

bash-4.2# python3 Sender/main.py

受信スクリプト

bash-4.2# python3 Reciver/main.py
test
test
test
test
test
test
test
test
test
test

送信した内容が受信されてプロンプトに表示されています

さいごに

割と簡単に仮想シリアルポートの作成・動作確認が実施できました

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?