熊おふし五郎が行く

主にマイコンボードを動かした記録を書いています

受信データの仕様によるUARTの受信方法

概要

UARTの受信フローは、受信データの仕様によって変わることがあります。受信データは以下の2つに分けられます。

  • 固定長
  • 可変長

固定長と可変長の特長と受信フローを説明します。

基本的な接続

以下のようにMicro:bitとWin PCとを接続します。なお、WIn PCはRS232Cテストツールをあらかじめインストールします。

f:id:bear_9973:20210105172523p:plain:w350
基本的な接続

受信フロー

受信フローは、以下の3つを示します。

  • 固定長
    • あるバイト数のデータを受信したら、受信したデータをそのまま送信する
  • 可変長
    • データを受信したら、受信したデータをそのまま送信する
    • 改行までのデータを受信したら、受信したデータをそのまま送信する

固定長の受信データ

以下の順に説明します。

  • 固定長の受信フロー
  • コード
  • 動作結果

固定長の受信フロー

4バイトのデータを受信したら、受信したデータをそのまま送信します。

コード

コードを以下に示します。

from microbit import *

uart.init(baudrate=9600, bits=8, parity=None, stop=1)

while True:
    if uart.any():
        s = uart.read(4)
        uart.write(s)
    sleep(100)

動作結果

RS232Cテストツールの操作手順を以下に示します。

  1. RS232Cテストツールの[送信TEXT]に9バイトの電文を入力して、[TEXT送信]ボタンをクリック
  2. RS232Cテストツールの下の部分にMicro:bitからの電文が表示

UART送受信の結果を以下に示します。

f:id:bear_9973:20210105180016p:plain:w350
固定長データのUART送受信の結果

Micro:bitは4バイト分の電文を受信してそのまま送信したこと、受信バッファが空っぽになるまで送受信を繰り返していたことがわかります。

可変長(改行なし)の受信データ

以下の順に説明します。

  • 可変長(改行なし)の受信フロー
  • コード
  • 動作結果

可変長(改行なし)の受信フロー

データを受信したら、受信したデータをそのまま送信します。

コード

コードを以下に示します。

from microbit import *

uart.init(baudrate=9600, bits=8, parity=None, stop=1)

while True:
    if uart.any():
        s = uart.read()
        uart.write(s)
    sleep(100)

動作結果

RS232Cテストツールの操作手順を以下に示します。

  1. RS232Cテストツールの[送信TEXT]に9バイトの電文を入力して、[TEXT送信]ボタンをクリック
  2. RS232Cテストツールの下の部分にMicro:bitからの電文が表示

UART送受信の結果を以下に示します。

f:id:bear_9973:20210105180714p:plain:w350
改行なしの可変長データのUART送受信の結果

Micro:bitはすべての電文を受信してそのまま送信したことがわかります。

可変長(改行あり)の受信データ

以下の順に説明します。

  • 可変長(改行あり)の受信フロー
  • コード
  • 動作結果

可変長(改行あり)の受信フロー

データを受信したら、受信したデータをそのまま送信します。

コード

コードを以下に示します。

from microbit import *

uart.init(baudrate=9600, bits=8, parity=None, stop=1)

while True:
    if uart.any():
        s = uart.readline()
        uart.write(s)
    sleep(100)

動作結果

RS232Cテストツールの操作手順を以下に示します。

  1. RS232Cテストツールの[送信TEXT]に改行コードを入れた10バイトの電文を入力して、[TEXT送信]ボタンをクリック
  2. RS232Cテストツールの下の部分にMicro:bitからの電文が表示

UART送受信の結果を以下に示します。

f:id:bear_9973:20210105181445p:plain:w350
改行なしの可変長データのUART送受信の結果

Micro:bitは改行までの電文を受信してそのまま送信したこと、受信バッファが空っぽになるまで送受信を繰り返していたことがわかります。

※購入するときは、乾電池ボックス、USBケーブルが付いているか確認することをおすすめします。