MicroPythonで使うWio Terminal - machine.UART
MicroPythonで使うWio Terminal - 目次
machine.UART の使用例
# Wio Terminal machine.UARTのサンプル# This code is provided under a CC0 Public Domain License.# http://creativecommons.org/publicdomain/zero/1.0/# 2022年6月20日 佐藤恭一 https://kyoutan.jpn.org
import timefrom machine import UART, Pin, Map
# UART1とUART2があるけど、40ピンコネクタに接続されているのはUART1# TXD(pin 8)とRXD(pin 10)をジャンパー線で接続して通信テストした(ループバック)uart = UART(Map.UART1, 115200, UART.config.SERIAL_8N1) # 初期化uart = UART(Map.UART1, 115200) # これでもよい
print("write test")uart.write('hello world!') # 書き込む。戻り値は書き込んだ数
txdata = bytearray(b"0123456789") # メモ:bytearray 値の変更可能 / bytes 値の変更不可能uart.write(txdata, 3) # バッファの先頭から3バイト書き込む。戻り値は書き込んだ数uart.write(txdata, 5, 4) # バッファの5番目から4バイト書き込む。戻り値は書き込んだ数time.sleep(1) # UARTの送信が完了するまで待つ
print("rxdata {}".format(uart.any())) # 受信バッファにあるデータ数print(uart.read()) # バッファのデータをタイムアウトするまで全て読んで表示する# 受信バッファは 255バイト# タイムアウトは 1~2秒くらい? 変更方法がわからない
print()print("read test")txdata = bytearray(range(ord("0"), ord("z")))rxdata = bytearray(127)uart.write(txdata) # バッファにデータを貯めるuart.write(txdata)uart.write(txdata)uart.write(txdata)time.sleep(1)print("rxdata {}".format(uart.any()))
# 読み込みは指定したバイト数に満たなくてもタイムアウトで終了する場合があるprint("10 byte : {}".format(uart.read(10))) # 10byte読み込む
uart.readinto(rxdata,20) # 20byte読み込んでバッファに格納print("20 byte : {}".format(rxdata))print()uart.readinto(rxdata) # 受信バッファをrxdataのサイズ分読み込んでバッファに格納print(rxdata)
print()print(uart.read(uart.any())) # 受信バッファを全部読むprint("empty") # サイズを指定すればタイムアウトしないので素早く終了する
uart.write("line 1\r\nline 2\r\nline 3\r\n") # 3行書き込むtime.sleep(1)
print()print("1 line : {}".format(uart.readline())) # 1行読むprint()print(uart.read(uart.any())) # 受信バッファを全部読む
UARTも簡単に使えました。
送信はDMAか割り込みで処理されているようで、書き込みを行うと送信が完了する前にすぐ処理が戻ってきます。
受信バッファは 255バイトありました。バッファにデータが何バイトあるのかを調べる関数もあって便利に使えます。受信タイムアウトが 1~2秒くらいに設定されているようなのですが、変更の方法がわかりませんでした。
動作テストで、TXD (pin8) と RXD (pin10) をジャンパー線で接続して Wio Terminalで送信したデータを Wio Terminal自身で受信させました。
UARTで使うピンは TXD (pin8) と RXD (pin10) です。
関数と通信フォーマット一覧
>>> help(UART)object <class 'UART'> is of type type deinit -- <function> __enter__ -- <function> __exit__ -- <function> any -- <function> read -- <function> readline -- <function> readinto -- <function> write -- <function> config -- <class 'config'>
>>> help(uart.config)object <class 'config'> is of type type SERIAL_5N1 -- 275 SERIAL_6N1 -- 531 SERIAL_7N1 -- 787 SERIAL_8N1 -- 1043 SERIAL_5N2 -- 307 SERIAL_5N1 -- 563 SERIAL_7N2 -- 819 SERIAL_8N2 -- 1075 SERIAL_5E1 -- 273 SERIAL_6E1 -- 529 SERIAL_7E1 -- 785 SERIAL_8E1 -- 1041 SERIAL_5E2 -- 305 SERIAL_6E2 -- 561 SERIAL_7E2 -- 817 SERIAL_8E2 -- 1073 SERIAL_5O1 -- 275 SERIAL_6O1 -- 530 SERIAL_7O1 -- 786 SERIAL_8O1 -- 1042 SERIAL_5O2 -- 306 SERIAL_6O2 -- 562 SERIAL_7O2 -- 818 SERIAL_8O2 -- 1074