UART

uart.start(tx, rx, baud)

UARTによる非同期通信を開始します。

TX, RXに利用するIOの数字と、通信速度ボーレートを指定して開始します。

  • tx: obnizデバイスからの送信に利用するIO数値
  • rx: obnizデバイスへへの受信に利用するIO数値
  • baud: 通信速度 (e.g., 9600, 115200).

占有と保持

Luaから開始されたUARTはLua用に確保されobniz.jsなど外部からの利用は不可となります。
また、開始されたUARTはデバイスが再起動するまで終了することはできません。
そのため起動中にLuaから再度uart.start()を呼ぶ場合には設定が反映されないかエラーとなる可能性があります。
txなどの設定変更をしたい場合には再起動が必要です。
もし設定変更する必要がない場合には例えuart.start()が失敗したとしてもuartは有効な状態なので、uart.send()などuart関連関数を使用することができます。

uart.send(string)

開始したuartにデータを送信します。

送信が完了するまでは関数を抜けません。

uart.recv()

受信したデータはバッファに蓄積されますuart.recv()を呼ぶことで蓄積されたデータを受け取ることができます。

Example

以下の例はオフライン中のものも含め、オンラインになった段階でuartで受信したデータを随時クラウドへ送信する例となります。


os.log(" - Lua Start");
io.retain(1, true);
io.retain(2, true);
uart.start(1, 2, 115200); -- tx:io1 rx:io2 baud:115200
uart.send("Hello World");

function on_online_loop()

  local ret = uart.recv();
  --  local ret = uart.recv(1); // limit receive buffer. max to 1 byte
  if #ret > 0 then
    -- EchoBack and send to cloud
    uart.send(ret);
    cloud.pluginSend(ret);
  end
end