Class_UART - gfd-dennou-club/mrubyc-esp32 GitHub Wiki

シリアル通信 UART

UARTシリアルインターフェースを扱います。

コンストラクタ

UART.new( uart_num, baud_rate )

  • uart_num : txPin=17, rxPin=16 --> uart_num = 2
  • baud_rate : default 9600

uart1 = UART.new( 2 )	

出力

write( string )

指定された文字列を出力します。

uart1.write("Output string¥r¥n")

入力

read( n_bytes ) -> String, Nil

指定されたバイト数のデータを読み込みます。指定されたバイト数のデータが到着していない場合、nilを返します。

val = uart1.read( 10 )

(参考)通常、データが到着していなければブロックする方式が一般的ですが、mruby/cで作るアプリケーションの場合、あえてブロックしない方式としたほうがプログラミングしやすかったので、そのような仕様になっています。

read_nonblock( maxlen ) -> String

指定されたバイト数のデータを読み込みます。指定されたバイト数のデータが到着していない場合、到着している分のデータを返します。

val = uart1.read_nonblock( 1024 )

gets()

文字列を一行読み込みます。実際には受信キュー内の "\n" までのバイト列を返します。 受信キューに "\n" が無い場合、nilを返します。

val = uart1.gets()

(参考)受信キューより長い文字列を受信した場合、gets()では処理できません。その場合、受信キューを大きくしたファームウェアを用意する必要があります。

その他

clear_tx_buffer()

読み込みバッファをクリアします。

uart1.clear_tx_buffer()

clear_rx_buffer()

書き込みバッファをクリアします。

uart1.clear_rx_buffer()