- 非同期シリアル通信をサポートするクラス。
- id で示す物理ユニットを指定して、UART オブジェクトを生成する。
- パラメータデフォルト値は、可能であれば以下の設定に従う。
- ボーレート 9600
- データ8ビット
- ストップビット1ビット
- パリティー無し
- フロー制御無し
オプションパラメータ
| param | type | description |
|---|---|---|
| baudrate | Integer | ボーレート (default 9600) |
| baud | 同上 | |
| data_bits | Integer | データビット (default 8) |
| stop_bits | Integer | ストップビット (default 1) |
| parity | Const | パリティービット (default NONE) |
| flow_control | Const | フロー制御 (default NONE) |
| unit | --- | ユニットの指定(パラメータidと同じ) |
| txd_pin | --- | TxDピンの指定 |
| rxd_pin | --- | RxDピンの指定 |
| rts_pin | --- | RTSピンの指定 |
| cts_pin | --- | CTSピンの指定 |
パラメータ用定数
UART::NONE
UART::EVEN
UART::ODD
UART::RTSCTS実行例
# UART1を、全てデフォルトパラメータで使う。
uart1 = UART.new( 1 )
# 指定したデバイスノードを持つシリアルデバイスを、19200bps 偶数パリティーで使う。
uart2 = UART.new("/dev/cu.usbserial1", baud:19200, parity:UART::EVEN )機種依存
- 全てのパラメータがサポートされているとは限らない。
- UARTのモード(パラメータ)を変更する。
- パラメータの指定は、コンストラクタに準拠する。
実行例
uart1.setmode( baudrate:38400 )- read_bytes で指定されたバイト数のデータを読み込む。
- 指定されたバイト数のデータが到着していない場合は、到着までブロックする。
実行例
val = uart1.read( 10 )ノート
- ブロックさせたくない場合は、あらかじめ
bytes_availableメソッドで読み込むことができるバイト数を確認できる。
- データを送信する。
- 送信したバイト数を返す。
実行例
uart1.write("Output string\r\n")機種依存
- 利用する低レイヤーライブラリやハードウェアFIFOなどにより、全データの送信完了を待たずに戻る場合がある。
- 送信バッファがあり、全データがバッファへ格納できる場合は、ブロックしないだろう。
- 文字列を一行読み込む。内部的にはリードバッファ内の "\n" までのバイト列を返す。
- 1行のデータが到着していない場合は、到着までブロックする。
実行例
val = uart1.gets()ノート
- ブロックさせたくない場合は、あらかじめ
can_read_lineメソッドで行読み込みが可能かを確認できる。 - 最大文字長はリードバッファのサイズに左右され、改行文字が入らないデータでバッファフルになった場合、gets で読み込むことはできないだろう。
- 1行送信し、引数 string が改行で終わっていない場合は改行コードを送信する。
- 改行コードは、デフォルトでは LF のみ。
実行例
uart1.puts("Output string")- リードバッファに到着している読み込み可能バイト数を返す。
実行例
len = uart1.bytes_available()- 送信バッファに溜まっており、実際に出力されていないデータのバイト数を返す。
実行例
bytes = uart1.bytes_to_write()ノート
- バッファの無いデバイスの場合は、この関数は常に0を返す。
- 1行のデータを読み込むことができる場合は、true を返す。
実行例
flag = uart1.can_read_line()- 送信バッファに溜まったデータの送信完了までブロックする。
実行例
uart1.flush()- 受信バッファをクリアする。
実行例
uart1.clear_rx_buffer()- 送信バッファをクリアする。
実行例
uart1.clear_tx_buffer()- break 信号を送信する。
- time はオプションで、秒で指定する。
実行例
uart1.send_break( 0.1 )機種依存
- ハードウェアによっては、timeは一律(e.g. 12bit)で、変更できない。