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