UART

uart モジュールを使用すると、シリアルインタフェースを使用してボードに接続されたデバイスと通信できます。

関数

microbit.uart.init(baudrate=9600, bits=8, parity=None, stop=1, *, tx=None, rx=None)

指定の txrx 端子と指定のパラメータでシリアル通信を初期化します。正しい通信のためには、両方の通信デバイスでパラメータが同じでなければならないことに注意してください。

警告

外部端子で UART を初期化すると、同じハードウェアを使っている USB で Python のコンソールにアクセスできなくなります。コンソールを元に戻すには、tx または rx を渡すことなく(あるいはこれらの引数に None を渡して)UART を再初期化する必要があります。つまり、uart.init(115200) を呼び出すだけで、Python のコンソールを復元できます。

baudrate は通信速度を定義します。一般的なボーレートは次のとおりです:

  • 9600
  • 14400
  • 19200
  • 28800
  • 38400
  • 57600
  • 115200

bits は送信するバイト列のサイズを定義します。現在のところは bits=8 だけをサポートしています。parity パラメータはパリティのチェック方法を定義するもので、None, microbit.uart.ODD, microbit.uart.EVEN を指定できます。stop パラメータは、ストップビットの数を知らせるもので、このボードでは 1 にする必要があります。

txrx を指定しない場合、内部の USB-UART TX/RX 端子を使用して micro:bit" の USB シリアルコンバータに接続し、UART を PC に接続します。望みの端子オブジェクトを txrx パラメータに渡すことにより、他の端子を使うように指定できます。

注釈

デバイスを接続するときは、ワイヤを "交差させる" ことを確認してください。ボード上の TX 端子はデバイスの RX 端子と、RX 端子はデバイスの TX 端子と接続する必要があります。また、両方のデバイスのグランドピンが接続されていることを確認してください。

uart.any()

なにか待っているデータがあれば True を返し、さもなければ False を返します。

uart.read([nbytes])

バイト列を読み込みます。nbytes が指定されていれば、そのバイト数まで読み込みます。指定されていなければ、できるだけ多く読み込みます。

戻り値: バイト列オブジェクト、タイムアウトが起きれば None

bytes オブジェクトには一連のバイトが含まれます。ASCII 文字は1バイトに収めることができるので、このタイプのオブジェクトはしばしば単純なテキストを表現するために使われ、それをそのまま操作する方法を提供します。たちえば `` print()`` 関数を使ってテキストを表示できます。

このオブジェクトを文字列オブジェクトに変換することもできます。非 ASCII 文字が存在する場合は、エンコードを指定できます:

msg_bytes = uart.read()
msg_str = str(msg, 'UTF-8')

注釈

すべての UART 読込みのタイムアウトはボーレートに依存していて、Pythonからは変更できません。タイムアウト値は次の式でミリ秒単位で決まります: microbit_uart_timeout_char = 13000 / baudrate + 1

注釈

内部 UART RX バッファは 64 バイトなので、バッファがいっぱいになる前にデータを読み込んでください。さもないとデータが失われることになります。

警告

0x03 を受信すると、キーボード割り込みを起こしてプログラムを停止します。これを有効化/無効化するためには micropython.kbd_intr() を使います。

uart.readall()

バージョン 1.0 から削除されました。

代わりに uart.read() を引数なしで使えば、できるだけ多くのデータを読み込みます。

uart.readinto(buf[, nbytes])

buf にバイト列を読み込みます。nbytes が指定されていれば、そのバイト数まで読み込みます。さもなければ len(buf) のバイト数まで読み込みます。

戻り値: 読み込んで buf に格納したバイト数。タイムアウト時は None

uart.readline()

1行、すなわち改行文字まで読み込みます。

戻り値: 読み込んだ行。タイムアウト時は None 。返すバイト列に改行文字は含まれます。

uart.write(buf)

Write the buffer to the bus, it can be a bytes object or a string:

uart.write('hello world')
uart.write(b'hello world')
uart.write(bytes([1, 2, 3]))

戻り値: 書き出したバイト数。タイムアウト時は None