UART
uart モジュールを使用すると、シリアルインタフェースを使用してボードに接続されたデバイスと通信できます。
関数
- microbit.uart.init(baudrate=9600, bits=8, parity=None, stop=1, \*, tx=None, rx=None)
指定の
txとrx端子と指定のパラメータでシリアル通信を初期化します。正しい通信のためには、両方の通信デバイスでパラメータが同じでなければならないことに注意してください。警告
外部端子で 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 にする必要があります。txとrxを指定しない場合、内部の USB-UART TX/RX 端子を使用して micro:bit" の USB シリアルコンバータに接続し、UART を PC に接続します。望みの端子オブジェクトをtxとrxパラメータに渡すことにより、他の端子を使うように指定できます。注釈
デバイスを接続するときは、ワイヤを "交差させる" ことを確認してください。ボード上の TX 端子はデバイスの RX 端子と、RX 端子はデバイスの TX 端子と接続する必要があります。また、両方のデバイスのグランドピンが接続されていることを確認してください。
- uart.any()
なにか待っているデータがあれば
Trueを返し、さもなければFalseを返します。
- uart.read([nbytes])
バイト列を読み込みます。
nbytesが指定されていれば、そのバイト数まで読み込みます。指定されていなければ、できるだけ多く読み込みます。戻り値: バイト列オブジェクト、タイムアウトが起きれば
None。バイト列オブジェクトにはバイトの並びが含まれます。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)
バッファをバスに書き出します。バッファはバイト列か文字列です:
uart.write('hello world') uart.write(b'hello world') uart.write(bytes([1, 2, 3]))
戻り値: 書き出したバイト数。タイムアウト時は
None。